Kernel-Übersicht

Der Android-Kernel basiert auf einem vorgelagerten Linux Long Term Supported (LTS)-Kernel . Bei Google werden LTS-Kernel mit Android-spezifischen Patches zu sogenannten Android Common Kernels (ACKs) kombiniert.

Neuere ACKs (ab Version 5.4) werden auch als GKI-Kernel bezeichnet. GKI-Kernel unterstützen die Trennung des hardwareunabhängigen generischen Kernkerncodes und der GKI-Module von den hardwarespezifischen Herstellermodulen .

Der GKI-Kernel interagiert mit hardwarespezifischen Herstellermodulen, die System-on-a-Chip (SoC) und platinenspezifischen Code enthalten. Die Interaktion zwischen dem GKI-Kernel und Anbietermodulen wird durch das Kernel Module Interface (KMI) ermöglicht, das aus Symbollisten besteht, die die Funktionen und globalen Daten identifizieren, die von Anbietermodulen benötigt werden. Abbildung 1 zeigt die Architektur des GKI-Kernels und des Anbietermoduls:

GKI-Architektur
Abbildung 1. GKI-Architektur

Kernel-Glossar

Dieser Abschnitt enthält Begriffe, die in der gesamten Kernel-Dokumentation verwendet werden.

Kernel-Typen

Gemeinsamer Android-Kernel (ACK)
Ein Kernel, der einem LTS-Kernel nachgelagert ist und für die Android-Community interessante Patches enthält, die nicht in Linux-Mainline- oder LTS-Kernel (Long Term Supported) integriert wurden. Neuere ACKs (Version 5.4 und höher) werden auch als GKI-Kernel bezeichnet, da sie die Trennung von hardwareunabhängigem generischem Kernel-Code und hardwareunabhängigen GKI-Modulen unterstützen.
Kernel des Android Open Source Project (AOSP).
Siehe Gemeinsamer Android-Kernel.
Feature-Kernel
Ein Kernel, für den die Plattform-Release-Features garantiert implementiert werden. Beispielsweise waren in Android 12 die beiden Feature-Kernel android12-5.4 und android12-5.10. Android 12-Funktionen können nicht auf 4.19-Kernel zurückportiert werden; Der Funktionsumfang wäre ähnlich wie bei einem Gerät, das mit 4.19 auf R gestartet und auf S aktualisiert wurde).
generischer Kernel
Der Teil des GKI-Kernels , der allen Geräten gemeinsam ist.
Generic Kernel Image (GKI)-Kernel
Jeder neuere (5.4 und höher) ACK-Kernel (derzeit nur aarch64). Dieser Kernel besteht aus zwei Teilen: Dem zentralen GKI-Kernel mit Code, der allen Geräten gemeinsam ist, und GKI-Modulen, die von Google entwickelt wurden und ggf. dynamisch auf Geräte geladen werden können.
Kernel Module Interface (KMI)-Kernel
Siehe GKI-Kernel .
Kernel starten
Ein Kernel, der zum Starten eines Geräts für eine bestimmte Version der Android-Plattform gültig ist. Beispielsweise waren in Android 12 die gültigen Startkernel 4.19, 5.4 und 5.10.
LTS-Kernel (Long Term Supported).
Ein Linux-Kernel, der für 2 bis 6 Jahre unterstützt wird. LTS-Kernel werden einmal im Jahr veröffentlicht und bilden die Grundlage für alle ACKs von Google .

Filialtypen

ACK KMI-Kernel-Zweig
Der Zweig, für den GKI-Kernel erstellt werden. Zum Beispiel android12-5.10 und android13-5.15.
Android-Mainline
Der primäre Entwicklungszweig für Android-Funktionen. Wenn ein neuer LTS-Kernel als Upstream deklariert wird, wird der entsprechende neue GKI-Kernel von Android-Mainline verzweigt.
Linux-Hauptlinie
Der primäre Entwicklungszweig für die Upstream-Linux-Kernel, einschließlich LTS-Kernels.

Andere Begriffe

Zertifiziertes Boot-Image
Der Kernel wird in Binärform ( boot.img ) geliefert und auf das Gerät geflasht. Dieses Image ist in dem Sinne zertifiziert, dass es eingebettete Zertifikate enthält, damit Google überprüfen kann, ob das Gerät mit einem von Google zertifizierten Kernel geliefert wird.
Dynamisch ladbares Kernelmodul (DLKM)
Ein Modul, das je nach den Anforderungen des Geräts während des Gerätestarts dynamisch geladen werden kann. GKI- und Herstellermodule sind beide Arten von DLKMs. DLKMs werden im .ko Format veröffentlicht und können Treiber sein oder andere Kernel-Funktionalität bereitstellen.
GKI-Projekt
Ein Google-Projekt, das sich mit der Kernel-Fragmentierung befasst, indem die allgemeine Kernel-Funktionalität von der herstellerspezifischen SoC- und Board-Unterstützung in ladbare Module getrennt wird.
Generisches Kernel-Image (GKI)
Ein von Google zertifiziertes Boot-Image, das einen aus einem ACK- Quellbaum erstellten GKI-Kernel enthält und geeignet ist, auf die Boot-Partition eines Android-Geräts geflasht zu werden.
KMI
Eine Schnittstelle zwischen dem GKI-Kernel und Anbietermodulen, die es ermöglicht, Anbietermodule unabhängig vom GKI-Kernel zu aktualisieren. Diese Schnittstelle besteht aus Kernel-Funktionen und globalen Daten, die als Lieferanten-/OEM-Abhängigkeiten unter Verwendung von Symbollisten pro Partner identifiziert wurden.
GKI-Module
Von Google erstellte Kernel-Module, die ggf. dynamisch auf Geräte geladen werden können. Diese Module werden als Artefakte des GKI-Kernels erstellt und zusammen mit GKI als das Archiv system_dlkm_staging_archive.tar.gz geliefert. GKI-Module werden von Google mit dem Kernel-Build-Time-Schlüsselpaar signiert und sind nur mit dem GKI-Kernel kompatibel, mit dem sie erstellt wurden.
Anbietermodul
Ein hardwarespezifisches Modul, das von einem Partner entwickelt wurde und SoC- und gerätespezifische Funktionen enthält. Ein Anbietermodul ist eine Art dynamisch ladbares Kernelmodul.

Was kommt als nächstes?