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 noyau (KMI) peuvent-elles être modifiées dans un noyau 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 à votre module. En règle générale, il est préférable d'utiliser le kernel 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 en aval intrusives.
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 résultante. 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.
J'ai des appareils conformes à la version 1.0 de GKI sur le terrain qui exécutent le kernel 5.4 lancé avec Android 11 et 12. Quelles options de mise à niveau du kernel sont disponibles et comment puis-je tester ces appareils lors de la mise à niveau vers Android 12 et 13 ?
Consultez la matrice de compatibilité pour obtenir la liste des versions de kernel compatibles pour les versions de lancement et de mise à niveau. Voici deux exemples de mise à niveau:
Exemple 1:Un utilisateur disposant d'un appareil qui démarre avec Android 11 avec le kernel android11-5.4
(GKI 1.0) peut choisir l'une des options suivantes lors de la mise à niveau vers Android 12:
Passez à la version 2.0 du kernel GKI
android12-5.10
(recommandé).Conservez le kernel
android11-5.4
.Passez au noyau
android12-5.4
.
Exemple 2:Un utilisateur disposant d'un appareil qui démarre avec Android 12 avec le noyau android12-5.4
ou android12-5.10
peut choisir l'une des options suivantes lors de la mise à niveau vers Android 13:
Passez au noyau GKI 2.0
android13-5.10
ouandroid13-5.15
(recommandé).Conservez le noyau
android12-5.4
GKI 1.0.Conservez le noyau
android12-5.10
GKI 2.0.
Plus précisément, pour les tests de conformité Treble, nous vous recommandons de procéder comme suit:
Remplacez le kernel du partenaire par le kernel GKI 1.0 certifié (
android11-5.4
ouandroid12-5.4
).Fournissez le kernel GKI 2.0 certifié (
android12-5.10
,android13-5.10
ouandroid13-5.15
) en fonction de votre sélection.
Vous pouvez télécharger les builds GKI 2.0 à partir des builds de version de l'image de kernel générique (GKI).