Der Android-Kernel basiert auf einem Linux-Kernel mit Langzeitsupport (LTS). Bei Google werden LTS-Kernel mit Android-spezifischen Patches kombiniert, um Android Common Kernels (ACKs) zu erstellen.
ACKs werden aus dem Repository kernel/common erstellt. Dieses Repository ist eine Obermenge des Upstream-Linux-Kernels mit zusätzlichen Android-spezifischen Patches.
ACKs ab Version 5.10 werden auch als GKI-Kernels (Generic Kernel Images) bezeichnet. GKI-Kernel unterstützen die Trennung des hardwareunabhängigen generischen Core-Kernel-Codes und der GKI-Module von hardwarespezifischen Anbietermodulen.
Die Interaktion zwischen dem GKI-Kernel und den Anbietermodulen wird durch die Kernelmodulschnittstelle (KMI) ermöglicht, die aus Symbollisten besteht, in denen die von Anbietermodulen benötigten Funktionen und globalen Daten angegeben sind. Abbildung 1 zeigt die Architektur des GKI-Kernels und der Anbietermodule:
Abbildung 1: GKI-Kernel- und Anbietermodularchitektur.
Kernel-Glossar
Im Folgenden finden Sie Begriffe, die in der gesamten Kerndokumentation verwendet werden.
Kernel-Typen
- Android Common Kernel (ACK)
- Ein Kernel, der nach einem LTS-Kernel kommt und Patches enthält, die für die Android-Community wichtig sind. Diese Patches wurden nicht in den Linux-Mainline- oder Long Term GKI-Kernel übernommen.
Kernel mit Versionen ab 5.10 werden auch als Generic Kernel Image (GKI)-Kernel bezeichnet.
- AOSP-Kernel (Open-Source-Projekt für Android)
- Weitere Informationen finden Sie unter Android Common Kernel.
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 unter Android 11 eingeführt und auf Android 12 aktualisiert wurde.
- GKI-Kernel (Generic Kernel Image)
Beliebiger ACK-Kernel ab Version 5.10(nur aarch64). Der GKI-Kernel besteht aus diesen beiden Teilen:
Generischer Kernel: Der Teil des GKI-Kernels, der für alle Geräte gleich ist.
GKI-Module: Von Google erstellte Kernelmodule, die bei Bedarf dynamisch auf Geräten 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 ausgeliefert. GKI-Module werden von Google mit dem Schlüsselpaar für die Kernel-Build-Zeit signiert und sind nur mit dem GKI-Kernel kompatibel, mit dem sie erstellt wurden.
- Kernelmodulschnittstellen-Kernel (KMI)
- Kernel mit Langzeitsupport (LTS)
Ein Linux-Kernel, der 2 bis 6 Jahre lang unterstützt wird. LTS-Kernel werden einmal pro Jahr veröffentlicht und bilden die Grundlage für jeden der Android Common Kernels von Google.
Zweigtypen
- ACK KMI-Kernel-Branch
- Der Zweig, für den GKI-Kernel erstellt werden. Die Zweignamen entsprechen den Kernel-Versionen, z. B.
android15-6.6
. - Android-Mainline
- Der primäre Entwicklungszweig für Android-Funktionen. Wenn ein neuer LTS-Kernel upstream deklariert wird, wird der entsprechende neue GKI-Kernel vom Android-Mainline-Zweig abgeleitet.
Linux-Mainline: Der primäre Entwicklungszweig für die Upstream-Linux-Kernel, einschließlich LTS-Kernel.
Sonstige Begriffe
- Zertifiziertes Boot-Image
- Der Kernel wird in binärer Form (
boot.img
) bereitgestellt und auf das Gerät geflasht. Dieses Bild gilt als zertifiziert, da es eingebettete Zertifikate enthält, sodass Google überprüfen kann, ob das Gerät mit einem von Google zertifizierten Kernel ausgeliefert wird. - Dynamically Loadable Kernel Module (DLKM)
- Ein Modul, das je nach Bedarf des Geräts beim Start des Geräts dynamisch geladen werden kann. GKI und Herstellermodule sind beides Arten von DLKMs. DLKMs werden im
.ko
-Format veröffentlicht und können Treiber oder andere Kernelfunktionen enthalten. - GKI-Projekt
- Ein Google-Projekt, das die Kernel-Fragmentierung angeht, indem es allgemeine Core-Kernel-Funktionen von anbieterspezifischen SoC- und Board-Unterstützungen in ladbare Module trennt.
Generic Kernel Image (GKI): Ein von Google zertifiziertes Boot-Image, das einen GKI-Kernel enthält, der aus einem ACK-Quellbaum erstellt wurde und sich zum Flashen auf die Boot-Partition eines Android-Geräts eignet.
- Kernelmodulschnittstelle (Kernel Module Interface, KMI)
- Eine Schnittstelle zwischen dem GKI-Kernel und den Anbietermodulen, die es ermöglicht, Anbietermodule unabhängig vom GKI-Kernel zu aktualisieren. Diese Schnittstelle besteht aus Kernelfunktionen und globalen Daten, die mithilfe von partnerspezifischen Symbollisten als Anbieter-/OEM-Abhängigkeiten identifiziert wurden.
- Anbietermodul
- Ein hardwarespezifisches Modul, das von einem Partner entwickelt wurde und SoC- und gerätespezifische Funktionen enthält. Ein Anbietermodul ist eine Art von dynamisch ladbarem Kernelmodul.
Nächste Schritte
Wenn Sie noch nicht mit der Entwicklung von Android-Kerneln vertraut sind, lesen Sie zuerst die folgenden Artikel:
- Long Term Stable Kernels: Hintergrundinformationen zu Upstream-LTS-Kerneln, die in ACKs einfließen.
- Android Common Kernels: Hintergrundinformationen zu ACKs.
Wenn Sie neu in der GKI-Kernelentwicklung sind, lesen Sie zuerst GKI-Entwicklung.