Présentation du noyau

Le noyau Android est basé sur un noyau Linux Long Term Supported (LTS) en amont. 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 ACK plus récents (versions 5.4 et supérieures) sont également appelés noyaux GKI . Les noyaux GKI prennent en charge la séparation du code du noyau générique indépendant du matériel et des modules GKI des modules du fournisseur spécifiques au matériel.

Le noyau GKI interagit avec des modules de fournisseurs 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 montre l'architecture du noyau GKI et du module fournisseur :

Architecture GKI
Figure 1. Architecture GKI

Glossaire du noyau

Cette section contient les termes utilisés dans toute la documentation du noyau.

Types de noyau

Noyau commun Android (ACK)
Un noyau qui se trouve en aval d'un noyau LTS et inclut des correctifs intéressant la communauté Android qui n'ont pas été fusionnés dans les noyaux principaux Linux ou LTS (Long Term Supported). Les ACK plus récents (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 du projet Android Open Source (AOSP)
Voir Noyau commun Android.
Noyau de fonctionnalités
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 des fonctionnalités serait similaire à un appareil lancé avec 4.19 sur R et mis à niveau vers S).
noyau générique
Partie du noyau GKI commune à tous les appareils.
Noyau GKI (Generic Kernel Image)
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 KMI (Kernel Module Interface)
Voir Noyau GKI .
Lancer le noyau
Un 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 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.
Ligne principale Android
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é de la ligne principale Android.
Ligne principale Linux
La principale branche de développement pour les noyaux Linux en amont, y compris les noyaux LTS.

Autres termes

Image de démarrage certifiée
Le noyau est 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 tous deux des types de DLKM. Les DLKM sont publiés sous forme .ko et peuvent être des pilotes ou fournir d'autres fonctionnalités du noyau.
Projet GKI
Un projet Google traitant de la fragmentation du noyau en séparant les fonctionnalités communes du noyau du SoC spécifique au fournisseur et de la prise en charge de la carte en modules chargeables.
Image générique du noyau (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 fournisseur permettant aux modules 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 dépendances fournisseur/OEM à l'aide de listes de symboles par partenaire.
Modules GKI
Modules de noyau construits par Google qui peuvent être chargés dynamiquement sur les appareils, le cas échéant. Ces modules sont construits en tant qu'artefacts du noyau 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 de construction du noyau et sont compatibles uniquement avec le noyau GKI avec lequel ils sont construits.
Module Fournisseur
Un module spécifique au matériel développé par un partenaire et qui contient des fonctionnalités spécifiques au SoC et à l'appareil. Un module fournisseur est un type de module de noyau chargeable dynamiquement.

Et après?