Lors de la conférence Linux Plumbers 2019, Google a présenté des développements concernant l'intégration dans le noyau principal de Linux des modifications développées dans pour la plateforme Android. L'objectif final est de permettre l'utilisation d'un noyau commun dans Android, au lieu de préparer des constructions spécifiques pour chaque appareil basé sur la branche spécifique à Android. . Cet objectif a déjà été partiellement atteint, et lors de la conférence, un smartphone Android Xiaomi Poco F1 avec un firmware basé sur le noyau Linux standard non modifié a été démontré.
Une fois le projet prêt, il sera proposé aux fournisseurs de fournir un noyau de base basé sur le noyau principal de Linux. Les composants pour le support matériel ne seront fournis par les fournisseurs que sous forme de modules de noyau supplémentaires, sans appliquer des patches au noyau. Les modules devront obligatoirement garantir la compatibilité avec le noyau principal au niveau de l'espace de noms des symboles du noyau. Toutes les modifications touchant au noyau principal seront promues dans upstream. Pour maintenir la compatibilité avec les modules propriétaires dans le cadre des branches LTS, il est proposé de maintenir stable l'API et l'ABI du noyau, ce qui permettra de conserver la compatibilité des modules avec les mises à jour pour chaque branche de noyau commune.

En un an, des fonctionnalités telles que le sous-système PSI (Pressure Stall Information) pour analyser les informations sur le temps d'attente concernant diverses ressources (CPU, mémoire, entrée/sortie), le système de fichiers pseudo-BinderFS pour le mécanisme de communication inter-processus Binder et le planificateur de tâches économe en énergie EAS (Energy Aware Scheduling) ont été transférées du noyau Android au noyau principal de Linux. À l'avenir, il est prévu de transférer Android d'un planificateur spécifique SchedTune vers un nouveau sous-système UtilClamp développé par ARM, basé sur cgroups2 et les mécanismes du noyau.

Rappelons que le noyau pour la plateforme Android a jusqu'à présent traversé plusieurs étapes de préparation :
- À partir des noyaux LTS principaux (3.18, 4.4, 4.9 et 4.14), une branche « Android Common Kernel » a été créée, dans laquelle des patches spécifiques à Android ont été transférés (auparavant, la taille des modifications atteignait plusieurs millions de lignes, mais ces dernières années, les changements ont été réduits à quelques milliers de lignes de code).
- Sur la base du « Android Common Kernel », des fabricants de puces comme Qualcomm ont développé le « SoC Kernel », intégrant des ajouts pour le support matériel.
- Sur la base de « SoC Kernel », les fabricants d'appareils créaient des « Device Kernel », incluant des modifications liées au support de matériel supplémentaire, d'écrans, de caméras, de systèmes audio, etc.

Essentiellement, un noyau propre était créé pour chaque appareil, qui ne pouvait pas être utilisé sur d'autres dispositifs. Ce schéma complique considérablement la diffusion des mises à jour corrigeant les vulnérabilités et le passage à de nouvelles versions du noyau. Par exemple, le tout nouveau smartphone Pixel 4, sorti en octobre, est fourni avec le noyau Linux 4.14, publié il y a deux ans. En partie, Google a tenté de simplifier la maintenance en promouvant le système , permettant aux fabricants de créer des composants universels pour le support matériel, sans être liés à des versions spécifiques d'Android et aux distributions du noyau Linux. Treble permet d'utiliser comme base les mises à jour déjà prêtes de Google, en intégrant des composants spécifiques à chaque appareil.

Source : opennet.ru
