Tijdens de afgelopen Linux Plumbers 2019-conferentie heeft Google gesproken over de ontwikkeling van de overzetting van wijzigingen naar de hoofdversie van de Linux-kernel, ontwikkeld in voor het Android-platform. Het uiteindelijke doel is om in Android ƩƩn gemeenschappelijke kernel te gebruiken, in plaats van voor elk apparaat aparte builds op basis van de specifieke Android-tak voor te bereiden. . Dit doel is al gedeeltelijk bereikt, en tijdens de conferentie werd een Android-smartphone, de Xiaomi Poco F1, gedemonstreerd met firmware gebaseerd op een standaard ongewijzigde Linux-kernel.
Wanneer het project gereed is, zullen leveranciers worden gevraagd om een basis kernel op basis van de hoofdversie van Linux te leveren. Componenten voor hardwareondersteuning zullen door leveranciers alleen in de vorm van extra kernelmodules worden geleverd, zonder patches op de kernel. In de modules moet compatibiliteit met de hoofdversie van de kernel op het niveau van symbolengebieden worden gegarandeerd. Alle wijzigingen die de hoofdversie van de kernel aangaan, zullen upstream worden gepromoot. Om compatibiliteit met propriƫtaire modules in LTS-takken te behouden, wordt voorgesteld om de API en ABI van de kernel in stabiele vorm te handhaven, zodat de compatibiliteit van modules met updates voor elke gemeenschappelijke kernelversie behouden blijft.

In het afgelopen jaar zijn functies zoals de PSI-subsystemen (Pressure Stall Information) voor het analyseren van wachttijden voor verschillende middelen (CPU, geheugen, invoer/uitvoer) en het pseudo-bestandssysteem BinderFS voor de interprocesscommunicatie-mechanisme Binder, alsook de energiezuinige taakplanner EAS (Energy Aware Scheduling) naar de hoofdversie van de Linux-kernel overgebracht vanuit de kernelversie voor Android. In de toekomst is het de bedoeling om Android van de specifieke scheduler SchedTune over te zetten naar een nieuwe submodule UtilClamp, ontwikkeld door ARM en gebaseerd op cgroups2 en de native mechanismen van de kernel.

Ter herinnering, tot nu toe heeft de kernel voor het Android-platform verschillende fasen van voorbereiding doorgemaakt:
- Op basis van de belangrijkste LTS-kernels (3.18, 4.4, 4.9 en 4.14) werd een tak genaamd 'Android Common Kernel' gecreƫerd, waarin specifieke Android-patches werden overgebracht (vroeger bedroeg de omvang van de wijzigingen enkele miljoenen regels, maar de laatste tijd zijn de wijzigingen verminderd tot enkele duizenden regels code).
- Op basis van de "Android Common Kernel" hebben chipfabrikanten zoals Qualcomm de "SoC Kernel" ontwikkeld, die aanvullingen bevatten ter ondersteuning van hardware.
- Op basis van de "SoC Kernel" hebben fabrikanten van apparaten de "Device Kernel" gemaakt, die wijzigingen bevatten gerelateerd aan de ondersteuning van extra hardware, schermen, camera's, geluidsystemen, enzovoort.

In wezen werd voor elk apparaat een eigen kernel ontwikkeld die niet op andere apparaten kon worden gebruikt. Dit systeem maakt de update van kwetsbaarheden en de overstap naar nieuwe kernelversies aanzienlijk moeilijker. Bijvoorbeeld, de onlangs uitgebrachte smartphone Pixel 4 van oktober wordt geleverd met Linux-kernel 4.14, die twee jaar geleden is uitgebracht. Google heeft gedeeltelijk geprobeerd het onderhoud te vereenvoudigen door het systeem , dat fabrikanten in staat stelt om universele hardware-ondersteuningscomponenten te creƫren die niet gebonden zijn aan specifieke Android-versies en de gebruikte Linux-kernelreleases. Treble maakt het mogelijk om bestaande updates van Google als basis te gebruiken en deze te integreren met specifieke componenten voor elk apparaat.

Bron: opennet.ru
