Noyaux courants AOSP (également appelés noyaux Android courants ou ACK) sont en aval les noyaux kernel.org et inclure des correctifs ; présentant un intérêt pour la communauté Android, mais qui n'ont pas été fusionnées avec l'application mainline ou noyaux LTS (Long Term Support) compatibles. Ces correctifs peuvent inclure:
- Rétroportages et sélections de fonctionnalités en amont nécessaires pour Android fonctionnalités
- Fonctionnalités prêtes pour les appareils Android, mais encore en développement en amont
- Fonctionnalités fournisseurs/OEM utiles pour les autres partenaires de l'écosystème
android-mainline
est la branche de développement principale pour les fonctionnalités Android. Linux
la ligne principale est fusionnée dans android-mainline
chaque fois que Linus Torvalds publie une
ou la version candidate. Avant 2019, les noyaux courants d'Android étaient
créé en clonant le noyau LTS récemment déclaré et en ajoutant le
Correctifs spécifiques à Android Ce processus a été modifié en 2019 pour décomposer la nouvelle application Android
noyau commun de android-mainline
. Ce nouveau modèle évite d'avoir à gérer
de transfert des ports et de test des correctifs Android en obtenant le même résultat
progressivement. android-mainline
fait l'objet de tests continus importants, ce qui
garantit un noyau de haute qualité
dès qu’il est publié.
Lorsqu'un nouveau LTS est déclaré en amont, le noyau commun correspondant est ramifié
de android-mainline
. Cela permet aux partenaires de commencer un projet avant le
déclaration de la version LTS, en fusionnant à partir de android-mainline
. Après le
nouvelle branche de noyau commune est créée, les partenaires peuvent facilement modifier la fusion
source vers la nouvelle branche.
Les autres branches courantes du noyau reçoivent régulièrement des fusions à partir de leurs
Noyau LTS.
Ces fusions sont normalement effectuées immédiatement après la publication de la version LTS. Pour
exemple, lorsque Linux 6.1.75 a été publié, il a été fusionné avec la version 6.1 commune
noyau (android14-6.1
). Les partenaires sont vivement encouragés à
mettre à jour leurs noyaux pour rester à jour avec les corrections de bugs LTS et spécifiques à Android.
Branche du noyau ACK KMI
Les noyaux GKI ont une interface de module kernel stable. Le KMI est unique
identifiés par la version du noyau et la version de la plate-forme Android, de sorte que
les branches sont nommées
ANDROID_RELEASE
à KERNEL_VERSION
Par exemple, le 6.1 GKI
Le noyau pour Android 14 s'appelle android14-6.1
. Pour
Android 15 (expérimental AOSP), le noyau GKI android15-6.6
était
présenté.
Fonctionnalités et lancements de noyaux
Avant Android 15 (expérimental AOSP), l'un des trois noyaux les plus récents
pourrait être utilisée pour
le lancement de l'appareil. En commençant par
Android 15 (expérimental AOSP), les deux versions de noyau les plus récentes
pour le lancement des appareils. Les noyaux de lancement de
Android 15 (version expérimentale AOSP) est android15-6.6
et android14-6.1
.
Comme les mises à niveau du noyau ne sont pas requises lors de la mise à jour de la plate-forme,
les noyaux qui ne disposent pas des dernières
fonctionnalités d'une version de plate-forme peuvent
encore être utilisé pour
lancer des appareils. Par conséquent, les noyaux
conçus pour
Android 14, comme android14-6.1
, peut être utilisé sur
même après la mise à niveau de la version de la plate-forme vers
Android 15 (version expérimentale AOSP)
Version de la plate-forme Android | Lancer les noyaux | Noyaux de fonctionnalités |
---|---|---|
Android 15 (version expérimentale AOSP) (2024) |
android15-6.6
android14-6.1
|
android15-6.6
|
Android 14 (2023) |
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.101
|
android14-6.1
android14-5.15
|
Android 13 (2022) |
android13-5.15
android13-5.10
android12-5.101
android12-5.41
android11-5.41
|
android13-5.15
android13-5.10
|
Android 12 (2021) |
android12-5.10
android12-5.4
android11-5.41
android-4.19-stable
|
android12-5.10
android12-5.4
|
Android 11 (2020) |
android11-5.4
android-4.19-stable
|
android11-5.4
android-4.19-stable
|
1 Des restrictions supplémentaires peuvent s'appliquer si le fournisseur de services de facturation associé a pour la version de la plate-forme. En termes plus généraux, Numéro de version d'Android du noyau doit être supérieur ou égal au version FCM cible. Voir Objet d'interface fournisseur : mise en correspondance des branches du noyau pour en savoir plus. |
Hiérarchie de noyau commune
Branche d'android-mainline
Le niveau supérieur de la hiérarchie de noyau commune est illustré dans la figure 1.
Figure 1 : Créer des noyaux courants à partir du noyau android-mainline
Notez qu'un nouveau noyau commun Android android14-6.1
a été ramifié depuis
android-mainline
en 2022. En 2023, lorsque la prochaine version LTS a été déclarée,
android15-6.6
a été ramifié depuis android-mainline
.
Comme le montre la figure 1, chaque version de noyau peut servir de base à deux noyaux GKI.
Par exemple, les deux noyaux v5.15 sont android13-5.15
et android14-5.15
.
qui sont tous deux des noyaux de fonctionnalités
pour leurs versions de plateforme respectives. Ce
c'était aussi le cas pour 5.10 ; android12-5.10
a été créé en même temps que le LTS
Déclarée et android13-5.10
a fait l'objet d'une ramification à partir de android12-5.10
au niveau du noyau
fonctionnalité complète au printemps 2021 pour permettre le développement de fonctionnalités pour
Android 13. À partir d'Android
15 (version expérimentale AOSP) (2024), il n'existe
un nouveau noyau GKI par version de noyau (il n'y a pas de noyau android15-6.1
).
Confirmer le cycle de vie des branches KMI
Le cycle de vie d'une branche ACK KMI est illustré ci-dessous dans la figure 2.
Figure 2. 6.6 Confirmer le cycle de vie des branches KMI
Pour clarifier le processus de développement et le cycle de vie des branches, la figure 2 se concentre sur le ACK KMI branches pour 6.6.
Chaque branche ACK KMI passe par trois phases, indiquées dans la figure 2 par des couleurs différentes dans chaque branche. Comme indiqué, la version LTS est régulièrement fusionnée, de la phase.
Phase de développement
Une fois créée, une branche ACK KMI entre dans la phase de développement (identifiée comme suit :
dev de la figure 2), et est ouvert aux contributions de fonctionnalités pour la prochaine version
de la plate-forme. Dans la figure 2, android15-6.6
a été créé alors que la version 6.6 était
déclaré comme nouveau noyau LTS en amont.
Phase de stabilisation
Lorsque la branche ACK KMI est déclarée comme terminée, elle entre dans le phase de stabilisation (indiquée en tant que stable dans la figure 2). les fonctionnalités et les corrections de bugs sont toujours acceptées, mais le suivi KMI est activé pour détecter toute modification qui affectent l'interface. Dans cette phase, les modifications destructives KMI sont acceptées et la définition du KMI est mise à jour à un rythme prédéfini (normalement, semaines). Consultez le Présentation de GKI pour sur la surveillance des KMI.
KMI phase figée
Avant le transfert d'une nouvelle version de plate-forme vers AOSP, la branche ACK KMI est gelée et reste figée pendant toute la durée de vie de la branche. Cela signifie qu'aucune Les modifications destructives KMI sont acceptées, sauf si un problème de sécurité grave est identifié. qui ne peut être atténué sans affecter le KMI stable. Pour éviter le KMI certains correctifs fusionnés à partir de LTS peuvent être modifiés ou supprimés si le correctif n'est pas nécessaire pour les appareils Android.
Lorsqu'une branche ACK KMI est bloquée, les corrections de bugs et les fonctionnalités partenaires peuvent être acceptées tant que le noyau commun KMI existant n’est pas cassé. Le KMI peut être étendu avec de nouveaux symboles exportés, à condition que les interfaces comprenant le KMI actuel ne sont pas affectées. Lorsque de nouvelles interfaces sont ajoutées au KMI, elles deviennent stables et ne peuvent pas être interrompues par des modifications futures.
Par exemple, une modification qui ajoute un champ à une structure utilisée par une interface KMI. le noyau commun n’est pas autorisé, car cela modifie la définition de l’interface:
struct foo {
int original_field1;
int original_field2;
int new_field; // Not allowed
};
int do_foo(struct foo &myarg)
{
do_stuff(myarg);
}
EXPORT_SYMBOL_GPL(do_foo);
Cependant, l'ajout d'une nouvelle fonction suffit:
struct foo2 {
struct foo orig_foo;
int new_field;
};
int do_foo2(struct foo2 &myarg)
{
do_stuff2(myarg);
}
EXPORT_SYMBOL_GPL(do_foo2);
Pendant la durée de vie du noyau GKI, la rétrocompatibilité avec l'espace utilisateur est
maintenus pour que le noyau puisse être utilisé en toute sécurité pour la plate-forme Android
version avec laquelle l'appareil
a été lancé. Tests continus avec les versions précédentes
assure le maintien de la compatibilité. Ainsi, sur la figure 2, la propriété android15-6.6
Le noyau peut être utilisé pour les appareils Android 15 (expérimental AOSP) et versions ultérieures.
appareils. Comme la version de la plate-forme Android est
également compatible avec les versions précédentes, le noyau android14-6.1
peut être utilisé
pour les appareils Android 15 (AOSP expérimentale) en vue d'un lancement ou d'une mise à niveau.
Numéro de génération de KMI
En cas de fusion LTS pendant la phase de stabilisation, de problème de sécurité ou
un autre événement après celui-ci qui nécessite l'acceptation
d'un correctif modifiant le KMI, le
Le numéro de génération KMI enregistré dans build.config.common
est incrémenté. La
la génération actuelle des KMI peut être trouvée à l'aide de la commande uname
:
$ uname -r
6.6.30-android15-6-g86d10b30f51f
Le numéro qui suit le lancement de la plate-forme correspond à la génération du KMI (6
dans ce cas).
Si la génération de KMI change, le noyau n'est pas compatible avec les modules du fournisseur conformes à la génération précédente de KMI. Les modules doivent donc être recompilés et mis à jour de manière synchrone avec le noyau. Une fois le KMI bloqué, la génération de KMI change devraient être très rares.
Compatibilité entre les noyaux
Les exigences de compatibilité entre les noyaux d'une même famille LTS sont changent au début des nouveaux noyaux GKI.
Noyaux GKI
Les noyaux GKI maintiennent la rétrocompatibilité avec toutes les plates-formes Android.
versions qui prenaient en charge
la version du noyau. De plus, la plate-forme Android
sont rétrocompatibles avec les noyaux GKI des versions précédentes. Donc
vous pouvez utiliser en toute sécurité
le noyau android14-6.1
développé pour
Android 14 (2023) sur les appareils exécutant
Android 15 (version expérimentale AOSP) (2024). La compatibilité est vérifiée via
des tests VTS et CTS continus des
noyaux GKI avec toutes les versions prises en charge.
Le KMI est stable, ce qui permet de mettre à jour le noyau sans nécessiter de recompilation. des modules du noyau dans l'image du fournisseur.
La compatibilité KMI n’est pas maintenue entre les différents noyaux GKI. Donc,
Par exemple, un noyau android14-6.1
ne peut pas être remplacé par un noyau android15-6.6
.
sans recompiler tous les modules.
Les noyaux GKI ne sont compatibles qu'avec leur version initiale et les versions suivantes.
Elles ne sont pas compatibles avec les versions plus anciennes. Ainsi, une
Le noyau android15-6.6
n'est pas compatible avec les appareils en cours d'exécution.
Android 14 (2023)
Matrice de compatibilité
Ce tableau présente les versions de noyau prises en charge et testées avec chaque de la plate-forme.
Version de la plate-forme Android | Noyaux compatibles pour la mise à niveau | Noyaux compatibles pour le lancement |
---|---|---|
Android 15 (version expérimentale AOSP) (2024) |
android15-6.6
|
android15-6.6
|
Android 14 (2023) |
android14-6.1
|
android14-6.1
|
Android 13 (2022) |
android13-5.15
|
android13-5.15
|
Android 12 (2021) |
android12-5.10
|
android-4.19-stable
|
Android 11 (2020) |
android11-5.4
|
android11-5.4
|
Prise en charge des durées de vie et des correctifs de sécurité
Les ACK reçoivent des fusions LTS en amont et des corrections de bugs pour le code spécifique à Android. Ces correctifs incluent tous les correctifs de sécurité du noyau cités dans le document Android Bulletins de sécurité pertinents pour ACK.
Les ACK peuvent être pris en charge plus longtemps que le noyau stable en amont correspondant sur kernel.org. Dans ce cas, Google offre une prise en charge étendue jusqu'à la date de fin de vie indiquée dans ce . Lorsque les noyaux sont en fin de vie, ils ne sont plus pris en charge par Google et les appareils qui les utilisent sont considérés comme vulnérables.
À partir du noyau 6.6, la durée de vie de la prise en charge des noyaux stables est 4 ans.
Ce tableau présente la durée de vie des ACK pris en charge:
Branche ACK | Date de lancement |
Durée de vie de l'assistance (années) |
fin de vie |
---|---|---|---|
android-4.19-stable | 2018-10-22 | 6 | 2025-01-01 |
Android 11-5.4 | 2019-11-24 | 6 | 2026-01-01 |
Android 12-5.4 | 2019-11-24 | 6 | 2026-01-01 |
Android 12-5.10 | 2020-12-13 | 6 | 2027-07-01 |
Android 13-5.10 | 2020-12-13 | 6 | 2027-07-01 |
Android 13-5.15 | 2021-10-31 | 6 | 2028-07-01 |
Android14-5.15 | 2021-10-31 | 6 | 2028-07-01 |
Android 14-6.1 | 2022-12-11 | 6 | 2029-07-01 |
Android 15-6.6 | 2023-10-29 | 4 | 2028-07-01 |
Tests de noyau courants
Les noyaux courants sont testés avec plusieurs systèmes CI, en plus des les tests par les fournisseurs.
Test fonctionnel du noyau Linux
Linux Kernel Functional Test (LKFT) lancent différentes suites de tests, y compris kselftest, LTP, VTS et CTS sur une d'appareils physiques arm32 et arm64. Les résultats des tests récents sont disponibles cliquez ici.
Tests KernelCI
Les tests de compilation et de démarrage KernelCI sont chaque fois qu'un nouveau correctif est validé sur une branche commune du noyau. Plusieurs 100 configurations de compilation sont testées et démarrées sur différentes cartes. Récents pour les noyaux Android se trouve cliquez ici.
Tests avant et après envoi Android
Les tests avant envoi permettent d'éviter l'introduction d'échecs dans les Noyaux Android courants Le résumé des résultats du test est disponible dans "Vérifications". du changement de code dans Gerrit du noyau Android.
Le test post-envoi Android est effectué
sur les nouvelles versions publiées dans les branches du noyau courantes d'Android lorsque de nouveaux correctifs sont appliqués sur une branche de noyau commune Android dans ci.android.com ; En saisissant
aosp_kernel
en tant que nom de branche partiel dans ci.android.com, vous voyez une liste des branches du noyau avec
disponibles. Par exemple, il est possible de trouver les résultats pour android-mainline
cliquez ici. Lorsque vous cliquez sur un build particulier, l'état du test s'affiche dans l'onglet Test Results
.
Les tests définis par test-mapping avec le groupe de test kernel-presubmit
dans l'arborescence source de la plate-forme Android seront exécutés en tant que préenvoi pour les branches du noyau Android. Par exemple, la configuration suivante dans test/vts/tests/kernel_proc_file_api_test/TEST_MAPPING activera vts_kernel_proc_file_api_test en tant que test presbumit lors de l'enregistrement commun du code du noyau Android.
{
"kernel-presubmit": [
{
"name": "vts_kernel_proc_file_api_test"
}
]
}
Tests 0 jour
Le test 0-day effectue des tests patch par correctif. sur toutes les branches courantes du noyau Android lorsque de nouveaux correctifs sont publiés. Divers de démarrage, de fonctionnement et de performance. Rejoindre le groupe public cros-kernel-buildreports
Matrice de test
Noyau commun Android | Versions de la plate-forme Android | Suites de tests | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Main | 15 | 14 | 13 | 12 | 11 | 10 | LKFT | KernelCI | Pré-envoi | Publier l'envoi | 0 jour | |
android-mainline
|
✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
android15-6.6
|
✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
android14-6.1
|
✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
android13-5.15
|
✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
android12-5.10
|
✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
android11-5.4
|
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
android-4.19-stable
|
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Contribuer aux noyaux Android courants
En règle générale, le développement de fonctionnalités doit être effectué sur Linux principal Noyaux Android courants Le développement en amont est vivement conseillé, est accepté, il peut être facilement rétroporté sur l'ACK spécifique. ou une autre branche selon les besoins. L'équipe du noyau Android est de soutenir les efforts d'amélioration de la diffusion au profit de l'écosystème Android.
Envoyer des correctifs à Gerrit et conforme à ces consignes relatives aux contributions.