Generisches Kernel-Image-Projekt (GKI)

Ein Produkt-Kernel, auch als Geräte-Kernel oder OEM-Kernel bezeichnet, ist der den Sie auf Ihrem Gerät versenden. Vor GKI war der Produktkernel aus einer Reihe von Upstream-Kernel-Änderungen abgeleitet. Abbildung 1 zeigt, wie der Kernel Hinzufügungen ergeben einen Produkt-Kernel (OEM/Geräte-Kernel):

Konstruktion des Produktkernels vor GKI

Abbildung 1: Konstruktion des Produktkernels vor GKI

  1. Der Kernel Linux Long Term Supported (LTS) von Kernel.org wurde geändert. mit Android-spezifischen Patches, die zu einem Android Common Kernel (ACK) führen.
  2. Das ACK wurde von Anbietern geändert, die ihr System-on-a-Chip-Modell unterstützen (SoC) Die Anbieter können auch Leistungs- oder Leistungsoptimierungen hinzufügen. Die Der resultierende Kernel wird als Anbieter-Kernel bezeichnet.
  3. Schließlich wurde der Kernel des Anbieters von den OEMs mit zusätzlichen Gerätetreibern und Anpassungen, die sie für notwendig halten. Der resultierende Kernel wird als Produkt-Kernel bezeichnet.

All diese Änderungen können dazu führen, Kernel-Code, der Out-of-Tree-Code ist und nicht von vorgelagerten Linux-Kerneln oder ACKs stammt. Vor GKI hatte fast jedes Gerät einen benutzerdefinierten Kernel, Fragmentierung.

Kosten der Fragmentierung

Die Fragmentierung von Kerneln hat mehrere negative Auswirkungen auf die Android-Community.

Sicherheitsupdates sind arbeitsintensiv

Sicherheits-Patches, die in den Sicherheitsbulletin für Android (ASB) muss in jeden Geräte-Kernel zurückportiert werden. Aufgrund des Kernels Fragmentierung sind, ist es zu teuer, Sicherheitsupdates Android-Geräte im Einsatz

Langfristig unterstützte Updates lassen sich nur schwer zusammenführen

Die LTS-Releases enthalten Sicherheitsupdates und andere kritische Fehlerkorrekturen. Es hat sich bewährt, in Sachen Langzeitsupport auf dem Laufenden zu bleiben. und die effektivste Methode zur Bereitstellung von Sicherheitsupdates. Auf Pixel-Geräten war es festgestellt, dass bei 90% der im ASB gemeldeten Kernel-Sicherheitsprobleme auf dem neuesten Stand sind.

Angesichts all der benutzerdefinierten Änderungen in den Geräte-Kerneln ist es schwierig, die LTS-Fehlerbehebungen in Geräte-Kernels zu integrieren.

Release-Upgrades der Android-Plattform sperren

Fragmentierung erschwert neue Android-Funktionen, die einen Kernel erfordern auf den Geräten vor Ort vorgenommene Änderungen. Android Framework-Code muss davon ausgehen dass bis zu fünf Kernel-Versionen unterstützt werden und dass keine Kernel-Änderungen wurden für die neue Plattformversion (Android 10 unterstützt die Kernel 3.18, 4.4, 4.9, 4.14 und 4.19, die in einigen Fällen werden seit Android 8 im Jahr 2017 um neue Funktionen erweitert.

Es ist schwierig, Kernel-Änderungen an Upstream-Linux-Änderungen zurückzusenden

Mit all den Änderungen am Kernel werden auf den meisten Flagship-Geräten mit einer Kernel-Version, die bereits mindestens 18 Monate alt ist. Beispiel: Der Parameter Der Kernel 4.14 wurde von kernel.org im November 2017 und die die ersten Android-Smartphones mit 4.14-Kernels wurden im Frühjahr 2019 ausgeliefert.

Diese lange Verzögerung zwischen dem Upstream-Kernel-Release und den Produkten erschwert damit die Android-Community die erforderlichen Funktionen und Fahrer in die vorgelagerten Systeme einspeisen kann. Kernel.

Fragmentierung beheben: generisches Kernel-Image

Das Projekt Generic Kernel Image (GKI) behebt die Kernel-Fragmentierung durch Vereinheitlichung des Kern-Kernels und Verschieben der SoC- und Board-Unterstützung aus dem Kern-Kernel zu ladende Anbietermodule. GKI bietet auch ein stabiles Kernelmodul, Schnittstelle (KMI) für Anbietermodule, sodass Module und Kernel aktualisiert werden können unabhängig voneinander unterscheiden. Einige Merkmale des GKI-Kernels:

  • Der GKI-Kernel wird aus den ACK-Quellen erstellt.
  • Der GKI-Kernel besteht aus einem Einzelkern-Binärprogramm und zugehörigen ladbaren Modulen. pro Architektur, pro Langzeitsupport-Release (derzeit nur Verzweigung 64 für android11-5.4) und android12-5.4).
  • Der GKI-Kernel wird mit allen Android-Plattform-Releases getestet, unterstützt für den verknüpftes ACK. Über die gesamte Lebensdauer einer GKI werden keine Funktionen verworfen. Kernel-Version.
  • Der GKI-Kernel stellt Treibern innerhalb eines bestimmten LTS eine stabile KMI zur Verfügung.
  • Der GKI-Kernel enthält keinen SoC- oder boardspezifischen Code.

Ein Bild der GKI-Architektur finden Sie in der Kernel-Übersicht

GKI ist eine komplexe Änderung, die in mehreren Phasen eingeführt wurde. die Kernel v5.4 im Plattformrelease von Android 11.

Es gibt zwei GKI-Phasen:

  • GKI 1.0 wurde in Android 11 für Geräte mit 5.4 Kernel. GKI 1.0 gilt für alle Geräte mit 5.4-Kerneln, auch für solche, mit Android 12 oder Android 13.
  • GKI 2.0 wurde mit Android 12 für Geräte mit 5.10-Kernel und ist der neue Standard für alle Geräte, die mit 5.10 oder spätere Kernel an.

GKI 1.0

In GKI 1.0 müssen Geräte, die mit Kernel-Version 5.4 gestartet werden, die GKI-Tests bestehen. (Android 11 und höher). GKI 1.0-Ziele umfassen Folgendes:

  • Regressionen in der Vendor Test Suite (VTS) vermeiden oder Kompatibilitätstest-Suite (Compatibility Test Suite, CTS) wenn der Produktkernel durch den GKI-Kernel ersetzt wird.
  • Reduzieren Sie den Partneraufwand für die Aktualisierung des Kernels mit AOSP. gängige Kernel.
  • Zentrale Android-Änderungen in Kernel für Geräte mit Upgrade und Einführung aufnehmen mit neuen Android-Releases.
  • Den Android-Userspace nicht zerstören.
  • Trennen Sie hardwarespezifische Komponenten vom Kernkernel als ladbare Module.

Die Dokumentation zu GKI 1.0 finden Sie in der Abschnitt zu GKI 1.0.

GKI 2.0

In GKI 2.0 müssen Geräte, die mit Kernel-Version 5.10 oder höher auf den Markt gebracht werden, mit GKI-Kernel (beginnend mit Android 12) Signierter Bootmodus Bilder sind verfügbar und werden regelmäßig mit Langzeitsupport und kritischen Fehlerkorrekturen aktualisiert. Da die binäre Stabilität für die KMI aufrechterhalten wird, können Sie diese Bootvorgänge ohne Änderungen an Anbieter-Images vorzunehmen. GKI 2.0-Ziele umfassen Folgendes: Folgendes:

  • Führen Sie beim Ersetzen keine signifikanten Leistungs- oder Leistungsregressionen ein. mit dem GKI-Kernel verknüpft.
  • Partnern die Bereitstellung von Kernel-Sicherheitsupdates und Fehlerkorrekturen ohne Anbieter ermöglichen und Beteiligung.
  • Die Kosten für das Aktualisieren der Kernel-Hauptversion für Geräte reduzieren (z. B. von Version 5.10 auf den LTS-Kernel 2021 aktualisiert.
  • Durch Aktualisieren des Kernels ein einziges GKI-Kernel-Binärprogramm pro Architektur verwalten mit einem klaren Upgradeprozess.

GKI 2.0 steht für den aktuellen Status von Android-Kerneln. Kernel Dokumentation außerhalb des GKI 1.0 und Vorherige Kernel (< = 4,19) Unterabschnitte spiegeln die GKI 2.0-Architektur wider.