Ce document contient des questions fréquentes sur le kernel Android, également appelé kernel GKI (Generic Kernel Image). Si vous ne connaissez pas la terminologie du kernel GKI et GKI, consultez la présentation du kernel.
Les listes de symboles de l'interface de module de kernel (KMI) peuvent-elles être modifiées dans un kernel stable ?
Les modifications qui n'affectent pas le KMI existant peuvent être ajoutées aux noyaux qui sont figé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 un KMI figé. Avant le gel du KMI, ces structures peuvent être modifiées.
Puis-je modifier le noyau tant que je ne casse pas la compatibilité binaire ou source ?
Les modifications qui n'affectent pas le KMI peuvent être apportées comme décrit dans la section Correctifs spécifiques à Android.
Comment GKI gère-t-il la configuration du kernel ?
Pour en savoir plus sur la configuration du kernel, consultez la section Modifications apportées à gki_defconfig.
Comment gérer les corrections de bugs en amont pour les écrasements de modules GKI existants ?
Si vous créez un module de fournisseur basé sur un pilote dans le kernel commun Android (ACK), c'est à vous de vous assurer que les corrections de bugs en amont et ACK sont propagées vers votre module. En règle générale, il est préférable d'utiliser le noyau 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 ?
Des tests Vendor Test Suite (VTS) vérifient qu'un build GKI certifié est installé et permettent également 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 de fragment de configuration du projet pour les compilations d'appareils ?
De nombreux appareils conformes à la GKI utilisent un fragment de configuration pour décrire les options de configuration requises, en plus de gki_defconfig
, pour compiler les modules du fournisseur.
Cuttlefish et DB845c font partie du code de base ACK.
Il n'existe aucun moyen 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 un moyen de contourner le fait que modprobe considère - et _ comme équivalents ?
La page de manuel modprobe contient la description suivante : "modprobe
ajoute ou supprime intelligemment un module du kernel Linux. Notez que pour plus de commodité, il n'y a aucune différence entre _ et - dans les noms de module (une conversion automatique du trait de soulignement est effectuée)." L'équipe GKI respecte la convention standard en amont. Les outils des fournisseurs ou les conventions d'attribution de noms des modules doivent donc en tenir compte.
Comment activer debugfs pour un usage interne ?
Pour en savoir plus sur l'activation de debugfs, consultez la section Fonctionnalités de débogage intrusives en aval.
Comment résoudre les ABI incohérentes entre le noyau GKI et une configuration de module spécifique activée ?
Les ABI non concordantes entre le noyau GKI et la configuration du module représentent une dépendance de configuration de module implicite, où l'activation d'un module entraîne la création d'une configuration binaire dans l'image du noyau obtenue. Contactez l'équipe du kernel 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 le outil de suivi des problèmes et importez une modification dans la liste des symboles.