Generisches Kernel-Image-Projekt (GKI)

Auf dieser Seite wird das GKI-Projekt (Generic Kernel Image) beschrieben und wie es die Stabilität und Sicherheit von Android verbessert.

Verlauf

Jedes Android-Gerät benötigt einen Produktionskernel. Vor GKI waren Kernel benutzerdefiniert und basierten auf dem Android Common Kernel (ACK). Gerätespezifische Änderungen wurden von SoC-Anbietern (System on Chip) und OEMs vorgenommen.

Diese Anpassung kann dazu führen, dass bis zu 50% des Kernelcodes nicht aus dem Stammbaum stammen, sondern aus Upstream-Linux-Kerneln oder ACKs. Daher führte die benutzerdefinierte Natur der Kernel vor GKI zu einer erheblichen Kernelfragmentierung.

Kosten der Fragmentierung

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

Sicherheitsupdates sind zeitaufwendig

Die im Android Security Bulletin (ASB) genannten Sicherheits-Patches müssen in jeden der Gerätekerne zurückportiert werden. Aufgrund der Kernelfragmentierung ist es jedoch extrem teuer, Sicherheitskorrekturen auf Android-Geräte im Einsatz zu übertragen.

Schwierige Zusammenführung von Updates mit langfristiger Unterstützung

Die Long-Term Supported (LTS)-Releases enthalten Sicherheits- und andere kritische Fehlerkorrekturen. Es hat sich erwiesen, dass es am effektivsten ist, Sicherheitsfixes mit LTS-Releases bereitzustellen. Bei Pixel-Geräten wurde festgestellt, dass 90% der im ASB gemeldeten Kernel-Sicherheitsprobleme bereits für Geräte behoben wurden, die immer auf dem neuesten Stand sind.

Aufgrund der vielen benutzerdefinierten Änderungen an den Gerätekernen ist es jedoch schwierig, die LTS-Fehlerkorrekturen einfach in die Gerätekerne einzubinden.

Aktualisierungen der Android-Plattformversion verhindern

Aufgrund der Fragmentierung ist es schwierig, neuen Android-Funktionen, die Kerneländerungen erfordern, Geräte im Einsatz hinzuzufügen. Der Android-Framework-Code musste die verschiedenen Kernelvarianten berücksichtigen und konnte nicht darauf vertrauen, dass neue Android-Funktionen im Kernel implementiert wurden. Das hat die Innovation verlangsamt und zu einer größeren Codegröße und Komplexität geführt.

Es ist schwierig, Kerneländerungen an Upstream-Linux zurückzugeben.

Die fragmentierte Art und Weise, wie Patches in die Produktionskerne gezogen wurden, führte zu einer Verzögerung von bis zu 18 Monaten zwischen dem Zeitpunkt, an dem eine LTS-Version upstream verfügbar war, und dem Zeitpunkt, an dem sie auf einem Gerät installiert wurde. Diese lange Verzögerung zwischen der Upstream-Kernel-Veröffentlichung und den Produkten erschwert es der Android-Community, die erforderlichen Funktionen und Treiber in die Upstream-Kernel einzubringen. Als ein Nutzer Verbesserungsvorschläge einreichte, hatte sich die Codebasis geändert, was es schwierig machte, die Relevanz des Patches zu zeigen.

Fragmentierung beheben: Allgemeines Kernel-Image

Das Generic Kernel Image (GKI)-Projekt behebt die Kernelfragmentierung, indem der Kernkernel vereinheitlicht und die SoC- und Board-Unterstützung aus dem Kernkernel in ladbare Anbietermodule verschoben wird. GKI bietet außerdem eine stabile Kernelmodulschnittstelle (KMI) für Anbietermodule, sodass Module und Kernel unabhängig voneinander aktualisiert werden können. Zu den Merkmalen des GKI-Kernels gehören:

  • Der GKI-Kernel wird aus den ACK-Quellen erstellt.
  • Der GKI-Kernel besteht aus einem einzelnen Kernel-Binärcode und zugehörigen ladbaren Modulen pro Architektur und LTS-Release.
  • Der GKI-Kernel wird mit allen Android-Plattform-Releases getestet, die für das zugehörige ACK unterstützt werden. Während der Lebensdauer einer GKI-Kernelversion werden keine Funktionen eingestellt.
  • Der GKI-Kernel stellt Treibern innerhalb eines bestimmten LTS eine stabile KMI bereit.
  • Der GKI-Kernel enthält keinen SoC- oder Board-spezifischen Code.

Ein Bild der GKI-Architektur finden Sie in der Kernelübersicht.

Allgemeines Bild

Ab Android 12 müssen Geräte, die mit der Kernelversion 5.10 oder höher ausgeliefert werden, den GKI-Kernel enthalten. Release-Builds des generischen Kernel-Images (GKI) werden regelmäßig aktualisiert und mit LTS- und kritischen Fehlerkorrekturen versehen. Da die Binärstabilität für das KMI beibehalten wird, können Sie diese Boot-Images installieren, ohne Änderungen an den Anbieter-Images vorzunehmen. Das GKI-Projekt hat folgende Ziele:

  • Es dürfen keine erheblichen Leistungs- oder Leistungsrückgänge auftreten, wenn der Produktkernel durch den GKI-Kernel ersetzt wird.
  • Partnern die Bereitstellung von Kernel-Sicherheits- und Fehlerkorrekturen ohne Einbindung des Anbieters ermöglichen.
  • Kosten für die Aktualisierung der Hauptkernelversion für Geräte senken
  • Behalten Sie pro Architektur ein einzelnes GKI-Kernel-Binary bei, indem Sie Kernelversionen mit einem klaren Upgradeprozess aktualisieren.