Kernel-Übersicht

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

Neuere ACKs (Version 5.4 und höher) werden auch als GKI-Kernel bezeichnet. GKI-Kernel unterstützen die Trennung des hardwareunabhängigen generischen Kernelcodes und der GKI-Module von den hardwarespezifischen Anbietermodulen .

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

GKI-Architektur
Abbildung 1. GKI-Architektur

Kernel-Glossar

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

Kerneltypen

Android Common Kernel (ACK)
Ein Kernel, der einem LTS-Kernel nachgeschaltet ist und Patches enthält, die für die Android-Community von Interesse sind und nicht in die Linux-Hauptlinie oder Long Term Supported (LTS)-Kernel 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 Android Common Kernel.
Feature-Kernel
Ein Kernel, für den die Plattform-Release-Funktionen garantiert implementiert werden. In Android 12 waren die beiden Feature-Kernel beispielsweise android12-5.4 und android12-5.10. Android 12-Funktionen können nicht auf 4.19-Kernel zurückportiert werden; Der Funktionsumfang würde einem Gerät ähneln, 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 Kern-GKI-Kernel mit Code, der allen Geräten gemeinsam ist, und von Google entwickelten GKI-Modulen, die gegebenenfalls 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 Android-Plattformversion gültig ist. In Android 12 waren die gültigen Startkernel beispielsweise 4.19, 5.4 und 5.10.
Langfristig unterstützter (LTS) Kernel
Ein Linux-Kernel, der 2 bis 6 Jahre lang unterstützt wird. LTS-Kernel werden einmal im Jahr veröffentlicht und bilden die Grundlage für jedes ACKs von Google.

Zweigarten

ACK KMI-Kernelzweig
Der Zweig, für den GKI-Kernel erstellt werden. Zum Beispiel Android12-5.10 und Android13-5.15.
Android-Hauptlinie
Der primäre Entwicklungszweig für Android-Funktionen. Wenn ein neuer LTS-Kernel im Upstream deklariert wird, wird der entsprechende neue GKI-Kernel von android-mainline abgezweigt.
Linux-Hauptlinie
Der primäre Entwicklungszweig für die Upstream-Linux-Kernel, einschließlich LTS-Kernel.

Andere Begriffe

Zertifiziertes Boot-Image
Der Kernel wurde in binärer Form ( boot.img ) geliefert und auf das Gerät geflasht. Dieses Image ist in dem Sinne zertifiziert, dass es eingebettete Zertifikate enthält, sodass 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 Anbietermodule sind beide Arten von DLKMs. DLKMs werden im .ko Format veröffentlicht und können Treiber sein oder andere Kernel-Funktionen bereitstellen.
GKI-Projekt
Ein Google-Projekt, das sich mit der Kernel-Fragmentierung befasst, indem es allgemeine Kernel-Funktionalität von herstellerspezifischem SoC und Board-Support in ladbare Module trennt.
Generisches Kernel-Image (GKI)
Ein von Google zertifiziertes Boot-Image, das einen GKI-Kernel enthält, der aus einem ACK- Quellbaum erstellt wurde und zum Flashen auf die Boot-Partition eines Android-Geräts geeignet ist.
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 Kernelfunktionen und globalen Daten, die mithilfe von Symbollisten pro Partner als Hersteller-/OEM-Abhängigkeiten identifiziert wurden.
GKI-Module
Von Google erstellte Kernelmodule, die gegebenenfalls dynamisch auf Geräte geladen werden können. Diese Module werden als Artefakte des GKI-Kernels erstellt und zusammen mit GKI als system_dlkm_staging_archive.tar.gz Archiv bereitgestellt. 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 von einem Partner entwickeltes hardwarespezifisches Modul, das SoC- und gerätespezifische Funktionen enthält. Ein Herstellermodul ist eine Art dynamisch ladbares Kernelmodul.

Was kommt als nächstes?