Projet GKI (Generic Kernel Image)

Le noyau produit, également appelé noyau d'appareil ou noyau OEM, noyau que vous expédiez sur votre appareil. Avant GKI, le noyau du produit était à partir d'une série de modifications du noyau en amont. La figure 1 montre comment le noyau les ajouts génèrent un noyau produit (noyau OEM/d'appareil):

Construction du noyau du produit pré-GKI

Figure 1 : Construction du noyau du produit pré-GKI.

  1. Le noyau Linux Long Term supported (LTS) de kernel.org a été modifié. avec les correctifs spécifiques à Android, ce qui génère un Android Common Kernel (ACK).
  2. L’ACK a été modifié par des fournisseurs qui ont ajouté la prise en charge de leur système sur une puce (SoC). Les fournisseurs peuvent également optimiser les performances ou l'alimentation. La le noyau résultant est appelé noyau du fournisseur.
  3. Enfin, le noyau du fournisseur a été modifié par les OEM avec des les pilotes de périphériques et les personnalisations qu'ils jugent nécessaires. Le noyau résultant est appelé noyau du produit.

Toutes ces modifications peuvent générer jusqu'à 50 % le code du noyau étant hors de l’arborescence et non provenant de noyaux Linux ou d’accusés de réception en amont. Avant GKI, presque tous les appareils disposaient d'un noyau personnalisé qui provoquait le noyau fragmentation.

Coûts de la fragmentation

La fragmentation du noyau a plusieurs effets négatifs sur la communauté Android.

Les mises à jour de sécurité demandent beaucoup de travail

Correctifs de sécurité mentionnés dans le Bulletin de sécurité Android (ASB) doivent être rétroportés dans chacun des noyaux de l’appareil. Toutefois, en raison du noyau, fragmentation, la propagation des correctifs de sécurité à Appareils Android sur le terrain

Difficile de fusionner les mises à jour compatibles à long terme

Les versions LTS (Long-Term supported) incluent des correctifs de sécurité et d'autres corrections de bugs critiques. Se tenir informé des dernières versions LTS s'est avéré être la le moyen le plus efficace de fournir des correctifs de sécurité. Sur les appareils Pixel, a découvert que 90% des problèmes de sécurité du noyau signalés dans l’ASB avaient a déjà été corrigé pour les appareils qui restent à jour.

Cependant, avec toutes les modifications personnalisées dans les noyaux de l’appareil, difficile de fusionner simplement les correctifs LTS dans les noyaux de l’appareil.

Empêcher les mises à niveau de version de la plate-forme Android

La fragmentation rend difficile l'application des nouvelles fonctionnalités Android nécessitant un noyau les modifications à ajouter aux appareils sur le terrain. Le code du framework Android doit présumer que jusqu'à cinq versions de noyau sont prises en charge et qu'aucune modification ont été conçus pour la nouvelle version de la plate-forme (Android 10 prend en charge les noyaux 3.18, 4.4, 4.9, 4.14 et 4.19 qui, dans certains cas, n'ont pas ont été enrichies de nouvelles fonctionnalités depuis Android 8 en 2017).

Difficile de contribuer aux modifications du noyau vers Linux en amont

Avec toutes les modifications apportées au noyau, la plupart des appareils phares sont livrés avec une version de noyau qui a déjà au moins 18 mois. Par exemple, le noyau 4.14 a été publié par kernel.org en novembre 2017 et premiers téléphones Android dotés de noyaux 4.14 commercialisés au printemps 2019.

Ce long délai entre la publication en amont du noyau et les produits permettant à la communauté Android d'intégrer les fonctionnalités et les pilotes nécessaires dans le flux en amont noyaux.

Corriger la fragmentation: image générique du noyau

Le projet GKI (Generic Kernel Image) traite la fragmentation du noyau en unifier le noyau principal et retirer la prise en charge des SoC et des cartes de ce noyau dans des modules de fournisseurs chargeables. GKI présente également un module Kernel stable Interface (KMI) pour les modules du fournisseur, afin que les modules et le noyau puissent être mis à jour indépendamment les unes des autres. Voici quelques caractéristiques du noyau GKI:

  • Le noyau GKI est construit à partir des sources ACK.
  • Le noyau GKI est un binaire à noyau unique ainsi que des modules chargeables associés. par architecture, par version LTS (actuellement arm64 pour android11-5.4 et android12-5.4).
  • Le noyau GKI est testé avec toutes les versions de la plate-forme Android compatible avec le ACK associé. Aucune fonctionnalité n'est abandonnée pendant la durée de vie d'un GKI la version du noyau.
  • Le noyau GKI expose un KMI stable aux pilotes d'un LTS donné.
  • Le noyau GKI ne contient pas de code spécifique au SoC ou à la carte.

Pour obtenir une image de l'architecture GKI, reportez-vous Présentation du noyau

GKI est un changement complexe déployé en plusieurs étapes en commençant par les noyaux v5.4 dans la version de la plate-forme Android 11.

Il existe deux étapes GKI:

  • GKI 1.0 a été introduit dans Android 11 pour les appareils avec noyaux 5.4. GKI 1.0 s'applique à tous les appareils livrés avec des noyaux 5.4, même lancé avec Android 12 ou Android 13.
  • GKI 2.0 a été introduit dans Android 12 pour les appareils avec noyaux 5.10 et est la nouvelle norme pour tous les appareils équipés de 5.10 ou noyaux ultérieurs.

GKI 1.0

Dans GKI 1.0, les appareils lancés avec la version de noyau 5.4 doivent réussir les tests GKI. (Android 11 et versions ultérieures de la plate-forme). Les objectifs de GKI 1.0 sont les suivants:

  • Évitez les régressions dans la suite de test pour les fournisseurs (VTS) ou Suite de tests de compatibilité (CTS) lors du remplacement du noyau du produit par le noyau GKI.
  • Facilitez la mise à jour du noyau avec AOSP pour les partenaires. noyaux courants.
  • Inclure les principales modifications d'Android dans les noyaux pour la mise à niveau et le lancement des appareils avec les nouvelles versions d'Android.
  • N'affecte pas l'espace utilisateur Android.
  • Séparez les composants matériels du noyau principal en tant que modules chargeables.

Pour accéder à la documentation GKI 1.0, consultez le Section GKI 1.0

GKI 2.0

Dans GKI 2.0, les appareils lancés avec la version 5.10 ou ultérieure de noyau doivent être livrés avec le noyau GKI (à partir d'Android 12). Démarrage signé images sont disponibles et mises à jour régulièrement avec le LTS et les corrections de bugs critiques. Comme la stabilité binaire est maintenue pour le KMI, vous pouvez installer sans modifier celles des fournisseurs. Les objectifs de GKI 2.0 incluent les suivantes:

  • N'introduisez pas de régressions de performances ou de puissance significatives lorsque vous remplacez le noyau du produit avec le noyau GKI.
  • Permettre aux partenaires de fournir des correctifs de sécurité du noyau et des corrections de bugs sans fournisseur et leur implication.
  • Réduisez le coût de la mise à jour de la version majeure du noyau pour les appareils (par exemple, de la version 5.10 au noyau LTS 2021).
  • Maintenir un seul binaire de noyau GKI par architecture en mettant à jour le noyau avec un processus de mise à niveau clair.

GKI 2.0 représente l'état le plus récent des noyaux Android. Kernel en dehors de GKI 1.0 et Noyaux précédents (<= 4,19) sous-sections reflètent l'architecture GKI 2.0.