Questions fréquentes sur le noyau Android

Ce document contient des questions fréquentes sur le noyau Android, également appelé kernel GKI (Generic Kernel Image). Si vous ne connaissez pas la terminologie du kernel GKI et du kernel GKI, consultez la présentation du kernel.

Les listes de symboles KMI (Kernel Module Interface) 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 les nouvelles fonctions exportées et les entrées de la 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 kernel 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 noyau ?

Pour en savoir plus sur la configuration du noyau, consultez les 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 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 à GKI ?

Des tests de la suite de test pour les fournisseurs (VTS) permettent de vérifier qu'un build GKI certifié est installé 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 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 sont des exemples de 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. Par conséquent, les outils des fournisseurs ou les conventions de dénomination des modules doivent tenir compte de cette adhésion.

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.

Je dispose d'appareils compatibles GKI 1.0 sur le terrain, exécutant le noyau 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 ?

Reportez-vous à la matrice de compatibilité pour obtenir la liste des versions de noyau compatibles avec 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 au noyau GKI 2.0 android12-5.10 (vivement recommandé).

  • Conservez le noyau 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:

  • Effectuez la mise à niveau vers le noyau GKI 2.0 android13-5.10 ou android13-5.15 (vivement recommandé).

  • Conservez le noyau android12-5.4 GKI 1.0.

  • Conservez le noyau android12-5.10 GKI 2.0.

Pour les tests de conformité avec Treble, nous vous recommandons d'effectuer l'une des opérations suivantes:

  • Remplacez le kernel du partenaire par le kernel GKI 1.0 certifié (android11-5.4 ou android12-5.4).

  • Expédiez le noyau certifié GKI 2.0 (android12-5.10, android13-5.10 ou android13-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).