Le noyau Android est basé sur un noyau Linux en amont pris en charge à long terme (LTS) . Chez Google, les noyaux LTS sont combinés avec des correctifs spécifiques à Android pour former ce que l'on appelle les noyaux communs Android (ACK) .
Les nouveaux ACK (versions 5.4 et supérieures) sont également connus sous le nom de noyaux GKI car ils prennent en charge la séparation du code du noyau générique générique et des modules GKI spécifiques au matériel. Le noyau GKI interagit avec des modules de fournisseur spécifiques au matériel contenant un système sur 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 du module du noyau (KMI) composée 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 noyau GKI et du module fournisseur :
Glossaire du noyau
Cette section contient les termes utilisés dans la documentation du noyau.
Types de noyau
- Noyau commun Android (ACK)
- Un noyau en aval d'un noyau LTS et qui inclut des correctifs intéressant la communauté Android qui n'ont pas été fusionnés dans les noyaux Linux principaux ou à long terme pris en charge (LTS). Les nouveaux ACK (versions 5.4 et supérieures) sont également connus sous le nom de noyaux GKI car ils prennent en charge la séparation du code du noyau générique indépendant du matériel et des modules GKI indépendants du matériel.
- Noyau Android Open Source Project (AOSP)
- Voir Noyau commun Android.
- Noyau de fonctionnalité
- Un noyau pour lequel les fonctionnalités de la version de la plate-forme sont garanties d'être implémentées. 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 similaire à un appareil lancé avec 4.19 sur R et mis à niveau vers S).
- noyau de base générique
- La partie du noyau GKI qui est commune à tous les appareils.
- Noyau d'image de noyau générique (GKI)
- Tout noyau ACK plus récent (5.4 et supérieur) (actuellement aarch64 uniquement). Ce noyau comporte deux parties : le noyau GKI principal avec un code commun à tous les appareils et des modules GKI développés par Google qui peuvent être chargés dynamiquement sur les appareils, le cas échéant.
- Noyau d'interface de module de noyau (KMI)
- Voir noyau GKI .
- Lancer le noyau
- Un noyau valide pour lancer un appareil pour une version de plate-forme Android donnée. Par exemple, dans Android 12, les noyaux de lancement valides étaient 4.19, 5.4 et 5.10.
- Noyau pris en charge à long terme (LTS)
- Un noyau Linux pris en charge pendant 2 à 6 ans. Les noyaux LTS sont publiés une fois par an et constituent la base de chacun des ACK de Google.
Types de succursales
- Branche du noyau ACK KMI
- La branche pour laquelle les noyaux GKI sont construits. Par exemple, android12-5.10 et android13-5.15.
- Android-mainline
- La principale branche de développement 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.
- Ligne principale de Linux
- La 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 livré sous forme binaire (
boot.img
) et flashé sur l'appareil. Cette image est certifiée dans le sens où 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)
- Un module qui peut être chargé dynamiquement lors du démarrage de l'appareil en fonction des besoins de l'appareil. Les modules GKI et fournisseur sont les deux types de DLKM. Les DLKM sont publiés sous forme
.ko
et peuvent être des pilotes ou peuvent fournir d'autres fonctionnalités du noyau. - Projet GKI
- Un projet Google traitant de la fragmentation du noyau en séparant la fonctionnalité du noyau commun du SoC spécifique au fournisseur et la prise en charge de la carte dans des modules chargeables.
- Image de noyau générique (GKI)
- Une image de démarrage certifiée par Google qui contient un noyau GKI construit à partir d'une arborescence source ACK et peut être flashée sur la partition de démarrage d'un appareil Android.
- KMI
- Une interface entre le noyau GKI et les modules du fournisseur permettant aux modules du fournisseur d'être mis à jour indépendamment du noyau GKI. Cette interface se compose de fonctions de noyau et de données globales qui ont été identifiées comme des dépendances fournisseur/OEM à l'aide de listes de symboles par partenaire.
- Modules GKI
- Modules de noyau créés par Google pouvant être chargés dynamiquement sur les appareils, le cas échéant. Ces modules sont construits en tant qu'artefacts du noyau GKI et sont livrés avec GKI en tant
system_dlkm_staging_archive.tar.gz
. Les modules GKI sont signés par Google à l'aide de la paire de clés de temps de construction du noyau et ne sont compatibles qu'avec le noyau GKI avec lequel ils sont construits. - Module vendeur
- Un module spécifique au matériel développé par un partenaire et qui contient un SoC et des fonctionnalités spécifiques à l'appareil. Un module fournisseur est un type de module de noyau chargeable dynamiquement.
Et après?
- Si vous débutez dans le développement du noyau Android, vous voudrez peut-être commencer par lire ce qui suit :
- Noyaux stables à long terme - Informations générales sur les noyaux LTS en amont qui alimentent les ACK.
- Android Common Kernels - Informations générales sur les ACK.
- Si vous débutez dans le développement du noyau GKI, commencez par lire Développement GKI .
- Si vous utilisez une version de noyau 4.19 ou antérieure et que vous recherchez de la documentation connexe, reportez-vous à la section Présentation des noyaux précédents (<=4.19) .