Auf der vergangenen Konferenz Linux Plumbers 2021 berichtete Google ĂŒber die Fortschritte der Initiative zur Migration der Android-Plattform auf den Einsatz des regulĂ€ren Linux-Kernels anstelle der Verwendung einer eigenen Kernel-Variante, die plattformspezifische Ănderungen enthĂ€lt.
Die wichtigste VerĂ€nderung in der Entwicklung ist die Entscheidung, nach 2023 auf das Modell "Upstream First" umzusteigen, das vorsieht, dass alle neuen Kernfunktionen, die fĂŒr die Android-Plattform erforderlich sind, direkt im Haupt-Linux-Kernel und nicht in separaten Zweigen entwickelt werden (Funktionen werden zunĂ€chst in den Hauptkernel eingefĂŒhrt und dann in Android verwendet, und nicht umgekehrt). FĂŒr 2023 und 2024 ist auĂerdem geplant, alle zusĂ€tzlichen Patches, die im Android Common Kernel verbleiben, in den Hauptkernel zu ĂŒberfĂŒhren.
Im nahen Zukunft werden fĂŒr die erwartete Android 12 Plattform Anfang Oktober Kern-Builds des âGeneric Kernel Imageâ (GKI) angeboten, die so nah wie möglich am Standardkern 5.10 orientiert sind. FĂŒr diese Builds wird es regelmĂ€Ăige Updates geben, die im Repository ci.android.com bereitgestellt werden. In den GKI-Kernen sind plattformspezifische ErgĂ€nzungen und die von OEM-Herstellern unterstĂŒtzten Treiber in separate Kernmodule ausgelagert. Diese Module sind nicht an die Version des Hauptkerns gebunden und können unabhĂ€ngig entwickelt werden, was die Wartung und die Migration von GerĂ€ten auf neue Kernel-Versionen erheblich vereinfacht.

Die erforderlichen Schnittstellen fĂŒr GerĂ€tehersteller sind in Form von Hooks implementiert, die es ermöglichen, das Verhalten des Kernels zu Ă€ndern, ohne CodeĂ€nderungen vorzunehmen. Insgesamt bietet der Kernel android12-5.10 194 Standard-Hooks, die den Tracepoints Ă€hnlich sind, sowie 107 spezialisierte Hooks, die die AusfĂŒhrung von Handlers im nicht-atomaren Kontext ermöglichen. Im GKI-Kernel ist es Hardware-Herstellern untersagt, spezifische Patches auf den Hauptkernel anzuwenden, und die Komponenten zur UnterstĂŒtzung der Hardware mĂŒssen von den Anbietern ausschlieĂlich in Form zusĂ€tzlicher Kernelmodule bereitgestellt werden, die unbedingt mit dem Hauptkernel kompatibel sein mĂŒssen.
Wir erinnern daran, dass in der Android-Plattform ein eigener Bereich des Kernels entwickelt wird â der Android Common Kernel, auf dessen Grundlage fĂŒr jedes GerĂ€t spezifische Builds erstellt werden. In jedem Zweig von Android erhalten die Hersteller verschiedene Optionen fĂŒr die Kernel-Konfiguration ihrer GerĂ€te. In Android 11 standen beispielsweise drei Basiskernel zur Auswahl â 4.14, 4.19 und 5.4, wĂ€hrend in Android 12 die Basiskernel 4.19, 5.4 und 5.10 angeboten werden. Die Option 5.10 ist als Generic Kernel Image gestaltet, in dem die fĂŒr OEM-Hersteller erforderlichen Funktionen in den Upstream ĂŒbertragen, in Module ausgelagert oder in den Android Common Kernel integriert werden.
Vor der EinfĂŒhrung des GKI durchlief der Kernel fĂŒr Android mehrere Vorbereitungsphasen:
- Auf Basis der grundlegenden LTS-Kernel (3.18, 4.4, 4.9, 4.14, 4.19, 5.4) wurde ein Zweig namens âAndroid Common Kernelâ erstellt, in den Android-spezifische Patches ĂŒbernommen wurden (frĂŒher betrug das Ănderungsvolumen mehrere Millionen Zeilen).
- Auf Basis des âAndroid Common Kernelâ bildeten Chip-Hersteller wie Qualcomm, Samsung und MediaTek die âSoC Kernelâ, die Erweiterungen zur UnterstĂŒtzung der Hardware enthielten.
- Basierend auf dem âSoC-Kernelâ entwickelten GerĂ€tehersteller den âDevice-Kernelâ, der Anpassungen zur UnterstĂŒtzung zusĂ€tzlicher Hardware, Bildschirme, Kameras, Audiosysteme usw. umfasst.
Dieser Ansatz hat die Bereitstellung von Updates zur Behebung von SicherheitsanfĂ€lligkeiten und die Umstellung auf neue Kernversionen erheblich erschwert. Obwohl Google regelmĂ€Ăig Updates fĂŒr seine Android-Kerne (Android Common Kernel) herausgibt, zögern die Anbieter oft, diese Updates bereitzustellen, oder verwenden wĂ€hrend des gesamten Lebenszyklus des GerĂ€ts ein einziges Kernel.

Quelle: opennet.ru
