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](https://source.android.com/static/docs/core/architecture/images/generic-kernel-image-architecture.png?authuser=6&hl=de)
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?
- Wenn Sie neu in der Android-Kernel-Entwicklung sind, sollten Sie zunächst Folgendes lesen:
- Langfristig stabile Kernel – Hintergrundinformationen zu Upstream-LTS-Kerneln, die in ACKs einspeisen.
- Gemeinsame Android-Kernel – Hintergrundinformationen zu ACKs.
- Wenn Sie neu in der GKI-Kernel-Entwicklung sind, lesen Sie zunächst GKI-Entwicklung .
- Wenn Sie eine Kernel-Version von 4.19 oder älter verwenden und nach zugehöriger Dokumentation suchen, lesen Sie den Abschnitt „Übersicht über frühere Kernel (<=4.19)“ .