Google wird weiterhin Innovationen für Android im Haupt-Linux-Kernel entwickeln

Auf der Linux Plumbers 2021-Konferenz sprach Google über den Erfolg seiner Initiative, die Android-Plattform auf die Verwendung eines regulären Linux-Kernels umzustellen, anstatt eine eigene Version des Kernels zu verwenden, die spezifische Änderungen für die Android-Plattform enthält.

Die wichtigste Änderung in der Entwicklung war die Entscheidung, nach 2023 auf das „Upstream First“-Modell umzusteigen, was die Entwicklung aller neuen Kernelfunktionen, die in der Android-Plattform benötigt werden, direkt im Haupt-Linux-Kernel und nicht in ihren eigenen separaten Zweigen impliziert ( Die Funktionalität wird zunächst auf den Hauptkernel hochgestuft und dann in Android verwendet und nicht umgekehrt. Es ist außerdem geplant, alle zusätzlichen Patches, die im Android Common Kernel-Zweig verbleiben, in den Jahren 2023 und 2024 auf den Hauptkernel zu übertragen.

In naher Zukunft werden für die Anfang Oktober erwartete Android 12-Plattform „Generic Kernel Image“ (GKI)-Kernel-Assemblys angeboten, die dem regulären 5.10-Kernel so nahe wie möglich kommen. Für diese Builds werden regelmäßig Updates bereitgestellt, die im ci.android.com-Repository veröffentlicht werden. Im GKI-Kernel werden plattformspezifische Android-Erweiterungen sowie Hardware-Support-bezogene Handler von OEMs in separaten Kernelmodulen platziert. Diese Module sind nicht an die Version des Hauptkernels gebunden und können separat entwickelt werden, was die Wartung und den Übergang von Geräten auf neue Kernelzweige erheblich vereinfacht.

Google wird weiterhin Innovationen für Android im Haupt-Linux-Kernel entwickeln

Die von Geräteherstellern benötigten Schnittstellen werden in Form von Hooks implementiert, die es ermöglichen, das Verhalten des Kernels zu ändern, ohne Änderungen am Code vorzunehmen. Insgesamt bietet der Android12-5.10-Kernel 194 reguläre Hooks, ähnlich wie Tracepoints, und 107 spezialisierte Hooks, mit denen Sie Handler in einem nicht-atomaren Kontext ausführen können. Im GKI-Kernel ist es Hardwareherstellern untersagt, bestimmte Patches auf den Hauptkernel anzuwenden, und Hardware-Unterstützungskomponenten dürfen von Anbietern nur in Form zusätzlicher Kernelmodule bereitgestellt werden, die die Kompatibilität mit dem Hauptkernel gewährleisten müssen.

Erinnern wir uns daran, dass die Android-Plattform einen eigenen Kernel-Zweig entwickelt – den Android Common Kernel, auf dessen Grundlage für jedes Gerät separate spezifische Assemblys gebildet werden. Jeder Android-Zweig bietet Herstellern mehrere Optionen für das Kernel-Layout ihrer Geräte. Android 11 bot beispielsweise die Wahl zwischen drei Basiskerneln – 4.14, 4.19 und 5.4, und Android 12 bietet die Basiskernel 4.19, 5.4 und 5.10. Option 5.10 ist als generisches Kernel-Image konzipiert, bei dem die für OEMs erforderlichen Fähigkeiten an Upstream übertragen, in Modulen platziert oder an den Android Common Kernel übertragen werden.

Vor der Einführung von GKI durchlief der Android-Kernel mehrere Vorbereitungsphasen:

  • Basierend auf den wichtigsten LTS-Kerneln (3.18, 4.4, 4.9, 4.14, 4.19, 5.4) wurde ein Zweig des „Android Common Kernel“ erstellt, in den Android-spezifische Patches übertragen wurden (zuvor erreichte der Umfang der Änderungen mehrere Millionen Zeilen). ).
  • Basierend auf dem „Android Common Kernel“ bildeten Chiphersteller wie Qualcomm, Samsung und MediaTek einen „SoC Kernel“, der Add-ons zur Unterstützung der Hardware enthielt.
  • Basierend auf dem SoC-Kernel haben Gerätehersteller den Gerätekernel erstellt, der Änderungen im Zusammenhang mit der Unterstützung zusätzlicher Geräte, Bildschirme, Kameras, Soundsysteme usw. enthielt.

Dieser Ansatz erschwerte die Implementierung von Updates zur Beseitigung von Schwachstellen und den Übergang zu neuen Kernel-Zweigen erheblich. Obwohl Google regelmäßig Updates für seine Android-Kernel (Android Common Kernel) veröffentlicht, liefern die Anbieter diese Updates oft nur langsam aus oder verwenden im Allgemeinen während des gesamten Lebenszyklus eines Geräts denselben Kernel.



Source: opennet.ru

Kommentar hinzufügen