Ce document contient des questions fréquentes sur le noyau Android, également appelé noyau Generic Kernel Image (GKI). Si vous ne connaissez pas les termes GKI et noyau GKI, consultez la présentation du noyau.
Les listes de symboles de l'interface du module de noyau (KMI) peuvent-elles être modifiées dans un noyau stable ?
Les modifications qui n'affectent pas la KMI existante peuvent être ajoutées aux noyaux qui sont gelés. Ces modifications incluent de nouvelles fonctions exportées et des entrées de liste de 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 une KMI gelée. Avant le gel de la KMI, ces structures peuvent être modifiées.
Puis-je modifier le noyau tant que je ne romps pas la compatibilité binaire ou source ?
Les modifications qui n'affectent pas la KMI peuvent être apportées comme décrit dans les correctifs spécifiques à Android.
Comment GKI gère-t-il la configuration du noyau ?
Pour en savoir plus sur la configuration du noyau, consultez la section 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 Android Common Kernel (ACK), il vous appartient de vous assurer que les corrections de bugs en amont et ACK sont propagées à votre module. En règle générale, il est préférable 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 à GKI ?
Il existe des tests Vendor Test Suite (VTS) qui vérifient qu'une version GKI certifiée est installée et qui appliquent 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 de fragment defconfig du projet pour les builds d'appareils ?
De nombreux appareils compatibles avec 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 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 - et _ comme des équivalents ?
La
page de manuel modprobe
contient la description suivante : "modprobe intelligently adds
or removes a module from the Linux kernel: note that for convenience, there is
no difference between _ and - in module names (automatic underscore conversion
is performed)." L'équipe GKI respecte la convention standard en amont. Les outils du fournisseur ou les conventions d'attribution de noms de modules doivent donc en tenir compte.
Comment activer debugfs pour une utilisation interne ?
Pour en savoir plus sur l'activation de debugfs, consultez la section Fonctionnalités de débogage en aval intrusives features.
Comment résoudre les 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 la création 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 dans la liste des symboles.