Questions fréquemment posées sur le noyau Android

Ce document contient des questions fréquemment posées sur le noyau Android, également connu sous le nom de noyau Generic Kernel Image (GKI). Si vous n'êtes pas familier avec la terminologie de GKI et du noyau GKI, reportez-vous à la présentation du noyau .

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 gelés. Ces modifications incluent de nouvelles fonctions exportées et des entrées de liste de symboles. Pour plus de détails, voir Gestion des 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 KMI, ces structures peuvent être modifiées.

Puis-je changer de noyau tant que je ne romps pas la compatibilité binaire/source ?

Les modifications qui n'affectent pas le 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 plus d'informations sur la configuration du noyau, reportez-vous aux modifications apportées à gki_defconfig .

Comment gérer les corrections de bogues en amont pour les écrasements des modules GKI existants ?

Si vous créez un module fournisseur basé sur un pilote dans Android Common Kernel (ACK) , c'est à vous de vous assurer que les corrections de bogues 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 ?

Il existe des tests Vendor Test Suite (VTS) qui vérifient qu'une version certifiée de GKI est installée et également pour appliquer les exigences GKI par version. Par exemple, il existe des tests Android 12 VTS pour l'en-tête de démarrage v3 et pour vérifier l'existence des partitions requises dans un appareil exécutant un noyau 5.10.

Comment créer le fichier fragment defconfig du projet pour les builds de périphériques ?

De nombreux appareils compatibles 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. Les exemples qui font partie de la base de code ACK incluent Cuttlefish et DB845c. Il n'y a aucun moyen d'éviter un examen manuel des options de configuration pour optimiser le fragment, mais scripts/diffconfig des sources du noyau sont utiles 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 équivalent ?

La page de manuel de modprobe contient cette description : " modprobe ajoute ou supprime intelligemment un module du noyau Linux : notez que pour plus de commodité, il n'y a pas de différence entre _ et - dans les noms de module (une conversion automatique du trait de soulignement est effectuée)." L'équipe GKI adhère à la convention standard en amont, de sorte que les outils des fournisseurs ou les conventions de dénomination des modules doivent prendre en compte cette adhésion.

Comment activer les debugfs pour un usage interne ?

Pour plus de détails sur l'activation des debugfs, consultez fonctionnalités de débogage intrusives en aval .

Comment puis-je résoudre les ABI incompatibles entre le noyau GKI avec 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 configuration de 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 voie à suivre. Une fois la liste des symboles déterminée, créez un bogue dans Issue Tracker et téléchargez une modification dans la liste des symboles.

J'ai des 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 noyau 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 prises en charge pour les versions de lancement et de mise à niveau. Voici deux exemples de mise à niveau.

Exemple 1 : un utilisateur disposant d'un appareil lancé avec Android 11 avec le noyau android11-5.4 ( GKI 1.0 ) peut choisir l'une de ces options lors de la mise à niveau vers Android 12 :

  • Mise à niveau vers le noyau android12-5.10 GKI 2.0 (fortement recommandé).

  • Conservez le noyau android11-5.4 .

  • Mettez à niveau vers le noyau android12-5.4 .

Exemple 2 : un utilisateur disposant d'un appareil lancé avec Android 12 avec le noyau android12-5.4 ou android12-5.10 peut choisir l'une de ces options lors de la mise à niveau vers Android 13 :

  • Mise à niveau vers le noyau android13-5.10 ou android13-5.15 GKI 2.0 (fortement recommandé).

  • Conservez le noyau android12-5.4 GKI 1.0 .

  • Conservez le noyau android12-5.10 GKI 2.0 .

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

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

  • Expédié avec le noyau GKI 2.0 certifié ( android12-5.10 , android13-5.10 ou android13-5.15 ) selon votre sélection.

Vous pouvez télécharger les versions GKI 2.0 à partir des versions GKI (Generic Kernel Image) .