Le noyau Android est basé sur un noyau Linux LTS (Long Term Support) en amont. Chez Google, les noyaux LTS sont combinés à des correctifs spécifiques à Android pour former ce que l'on appelle les noyaux communs Android (ACK).
Les ACK plus récents (version 5.4 et ultérieures) sont également appelés noyaux GKI. Les noyaux GKI permettent de séparer le code du kernel de noyau générique indépendant du matériel et les modules GKI des modules du fournisseur spécifiques au matériel.
Le noyau GKI interagit avec des modules fournisseur spécifiques au matériel contenant un système sur une puce (SoC) et un code spécifique à la carte. L'interaction entre le noyau GKI et les modules du fournisseur est activée par l'interface de module de noyau (KMI, Kernel Module Interface), qui se compose de listes de symboles identifiant les fonctions et les données globales requises par les modules du fournisseur. La figure 1 illustre l'architecture du kernel et du module du fournisseur GKI:
![Architecture GKI](https://source.android.com/static/docs/core/architecture/images/generic-kernel-image-architecture.png?authuser=002&hl=fr)
Glossaire du kernel
Cette section contient les termes utilisés dans la documentation du kernel.
Types de noyaux
- Noyau commun Android (ACK)
- Noyau situé en aval d'un noyau LTS et incluant des correctifs intéressants pour la communauté Android qui n'ont pas été fusionnés dans le noyau principal de Linux ou les noyaux LTS (avec support à long terme). Les ACK plus récents (version 5.4 et ultérieures) sont également appelés noyaux GKI, car ils permettent de séparer le code de kernel générique indépendant du matériel et les modules GKI indépendants du matériel.
- Kernel du projet Android Open Source (AOSP)
- Consultez Kernel commun Android.
- Kernel de fonctionnalité
- Noyau pour lequel les fonctionnalités de la version de la plate-forme sont garanties. Par exemple, dans Android 12, les deux noyaux de fonctionnalités étaient android12-5.4 et android12-5.10. Les fonctionnalités d'Android 12 ne peuvent pas être rétroportées vers les noyaux 4.19. L'ensemble de fonctionnalités serait semblable à celui d'un appareil lancé avec la version 4.19 sur Android 11 et mis à niveau vers Android 12.
- kernel de noyau générique
- Partie du kernel GKI commune à tous les appareils.
- Noyau de l'image de kernel générique (GKI)
- Tout kernel ACK (5.4 et versions ultérieures) plus récent (actuellement aarch64 uniquement). Ce noyau se compose de deux parties: le noyau GKI principal avec un code commun à tous les appareils et les modules GKI développés par Google, qui peuvent être chargés dynamiquement sur les appareils le cas échéant.
- Kernel KMI (Kernel Module Interface)
- Voir le noyau GKI.
- Kernel de lancement
- Noyau valide pour lancer un appareil pour une version donnée de la plate-forme Android. Par exemple, dans Android 12, les noyaux de lancement valides étaient 4.19, 5.4 et 5.10.
- Noyau LTS (Long Term Support)
- Un kernel Linux compatible pendant deux à six ans Les noyaux LTS sont publiés une fois par an et constituent la base de chacun des ACK de Google.
Types de branches
- Branche du kernel KMI ACK
- Branche pour laquelle les noyaux GKI sont compilés. Par exemple, android12-5.10 et android13-5.15.
- Android-mainline
- Branche de développement principale pour les fonctionnalités Android. Lorsqu'un nouveau noyau LTS est déclaré en amont, le nouveau noyau GKI correspondant est dérivé d'android-mainline.
- Linux mainline
- Branche de développement principale pour les noyaux Linux en amont, y compris les noyaux LTS.
Autres termes
- Image de démarrage certifiée
- Le noyau est fourni au format binaire (
boot.img
) et flashé sur l'appareil. Cette image est certifiée dans le sens qu'elle contient des certificats intégrés afin que Google puisse vérifier que l'appareil est livré avec un noyau certifié par Google. - Module de noyau chargeable dynamiquement (DLKM)
- Module pouvant être chargé dynamiquement au démarrage de l'appareil en fonction de ses besoins. Les modules GKI et les modules du fournisseur sont tous deux des types de DLKM. Les DLKM sont publiés au format
.ko
et peuvent être des pilotes ou fournir d'autres fonctionnalités du kernel. - Projet GKI
- Projet Google qui résout la fragmentation du noyau en séparant la fonctionnalité de noyau de base commune de la prise en charge du SoC et de la carte spécifique au fournisseur en modules pouvant être chargés.
- Image de noyau générique (GKI)
- Image de démarrage certifiée par Google qui contient un kernel GKI créé à partir d'un arbre de sources ACK et pouvant être flashée sur la partition de démarrage d'un appareil Android.
- KMI
- Interface entre le kernel GKI et les modules du fournisseur permettant de mettre à jour les modules du fournisseur indépendamment du kernel GKI. Cette interface se compose de fonctions de noyau et de données globales identifiées comme des dépendances de fournisseurs/OEM à l'aide de listes de symboles par partenaire.
- Modules GKI
- Modules de kernel créés par Google et pouvant être chargés dynamiquement sur les appareils, le cas échéant.
Ces modules sont créés en tant qu'artefacts du kernel GKI et sont fournis avec GKI en tant qu'archive
system_dlkm_staging_archive.tar.gz
. Les modules GKI sont signés par Google à l'aide de la paire de clés au moment de la compilation du kernel et ne sont compatibles qu'avec le kernel GKI avec lequel ils sont compilés. - Module du fournisseur
- Module spécifique au matériel développé par un partenaire et contenant des fonctionnalités spécifiques au SoC et à l'appareil. Un module fournisseur est un type de module de noyau pouvant être chargé dynamiquement.
Et maintenant ?
- Si vous débutez dans le développement du kernel Android, nous vous recommandons de commencer par lire les documents suivants:
- Noyaux stables à long terme : informations sur les noyaux LTS en amont qui alimentent les ACK.
- Kernels communs Android : informations générales sur les ACK.
- Si vous débutez dans le développement du kernel GKI, commencez par lire Développement GKI.