Ce document contient des questions fréquentes sur le noyau Android, également appelé noyau GKI (Generic Kernel Image). Si vous ne connaissez pas la terminologie du noyau GKI, consultez la présentation du noyau.
Les listes de symboles de l'interface du module du noyau (KMI) peuvent-elles être modifiées dans un noyau stable ?
Les modifications qui n'affectent pas l'IKM existante peuvent être ajoutées aux noyaux figés. Ces modifications incluent de nouvelles fonctions exportées et de nouvelles entrées dans la liste des symboles. Pour en savoir plus, consultez Gérer les listes de symboles.
Puis-je modifier les structures utilisées par les modules du fournisseur dans un noyau stable ?
Les structures qui font partie d'une interface KMI ne peuvent pas être modifiées dans les noyaux avec un KMI figé. Avant le gel des KMI, ces structures peuvent être modifiées.
Puis-je modifier le noyau tant que je ne compromets pas la compatibilité binaire ou source ?
Les modifications qui n'affectent pas l'IKM peuvent être apportées comme décrit dans Correctifs spécifiques à Android.
Comment GKI gère-t-il la configuration du noyau ?
Pour en savoir plus sur la configuration du noyau, consultez Modifications apportées à gki_defconfig.
Comment gérer les corrections de bugs en amont pour les remplacements de modules GKI existants ?
Si vous créez un module fournisseur basé sur un pilote dans le noyau commun Android (ACK), il vous incombe de veiller à ce que les corrections de bugs en amont et de l'ACK soient propagées à votre module. En général, il est dans votre intérêt d'utiliser le noyau GKI et les modules GKI sans modification afin que ces mises à jour soient fournies de manière cohérente par Google.
Existe-t-il des tests spécifiques au GKI ?
Des tests Vendor Test Suite (VTS) permettent de vérifier qu'une version GKI certifiée est installée et d'appliquer les exigences GKI par version. Par exemple, il existe des tests VTS Android 12 pour l'en-tête de démarrage v3 et pour vérifier l'existence des partitions requises sur un appareil exécutant un noyau 5.10.
Comment créer le fichier fragment de defconfig du projet pour les compilations d'appareils ?
De nombreux appareils conformes à GKI utilisent un fragment de configuration pour décrire les options de configuration nécessaires, en plus de gki_defconfig
, pour créer les modules du fournisseur.
Cuttlefish et DB845c sont des exemples qui font partie de la base de code ACK.
Il est impossible d'éviter un examen manuel des options de configuration pour optimiser le fragment, mais scripts/diffconfig
à partir des sources du noyau est utile pour comparer les résultats de gki_defconfig
et gki_defconfig+device.fragment
.
Existe-t-il une solution de contournement pour que modprobe traite les tirets et les underscores comme des caractères différents ?
La page de manuel modprobe contient la description suivante : "modprobe
ajoute ou supprime intelligemment un module du noyau Linux. Notez que, pour plus de commodité, il n'y a aucune différence entre _ et - dans les noms de modules (une conversion automatique des traits de soulignement est effectuée)." L'équipe GKI respecte la convention standard en amont. Les outils ou conventions de nommage des modules des fournisseurs doivent donc en tenir compte.
Comment activer debugfs pour un usage interne ?
Pour savoir comment activer debugfs, consultez Fonctionnalités de débogage en aval intrusives.
Comment résoudre les problèmes d'ABI incompatibles entre le noyau GKI et une configuration de module spécifique activée ?
Les ABI incompatibles entre le noyau GKI et la configuration du module représentent une dépendance implicite de la configuration du module, où l'activation d'un module entraîne l'intégration d'une configuration binaire dans l'image du noyau résultante. Contactez l'équipe du noyau Android (kernel-team@android.com) pour déterminer la marche à suivre. Une fois la liste des symboles déterminée, créez un bug dans l'outil de suivi des problèmes et importez une modification de la liste des symboles.