Dieses Dokument enthält häufig gestellte Fragen zum Android-Kernel, der auch als GKI-Kernel (Generic Kernel Image) bezeichnet wird. Wenn Sie mit der GKI- und GKI-Kernel-Terminologie nicht vertraut sind, lesen Sie die Kernel-Übersicht.
Können KMI-Symbollisten (Kernel Module Interface) in einem stabilen Kernel geändert werden?
Änderungen, die sich nicht auf die vorhandene KMI auswirken, können Kerneln hinzugefügt werden, die eingefroren sind. Zu diesen Änderungen gehören neue exportierte Funktionen und Symbollisteneinträge. Weitere Informationen finden Sie unter Symbollisten verwalten.
Kann ich Strukturen ändern, die von Anbietermodulen in einem stabilen Kernel verwendet werden?
Strukturen, die Teil einer KMI-Schnittstelle sind, können in Kerneln mit einer eingefrorenen KMI nicht geändert werden. Vor dem KMI-Freeze können diese Strukturen geändert werden.
Kann ich den Kernel ändern, solange die Binär- oder Quellkompatibilität nicht beeinträchtigt wird?
Änderungen, die sich nicht auf die KMI auswirken, können wie unter Android-spezifische Patches beschrieben vorgenommen werden.
Wie geht GKI mit der Kernelkonfiguration um?
Informationen zur Kernelkonfiguration finden Sie unter Änderungen an gki_defconfig.
Wie gehe ich mit Upstream-Fehlerkorrekturen für Überschreibungen vorhandener GKI-Module um?
Wenn Sie ein Anbietermodul auf Grundlage eines Treibers im Android Common Kernel (ACK) erstellen, müssen Sie dafür sorgen, dass Fehlerkorrekturen aus dem Upstream- und ACK-Verzeichnis an Ihr Modul weitergegeben werden. Im Allgemeinen ist es in Ihrem Interesse, den GKI-Kernel und die GKI-Module unverändert zu verwenden, damit diese Updates von Google einheitlich bereitgestellt werden.
Gibt es GKI-spezifische Tests?
Es gibt VTS-Tests (Vendor Test Suite), mit denen überprüft wird, ob ein zertifizierter GKI-Build installiert ist, und mit denen GKI-Anforderungen pro Release erzwungen werden. Es gibt beispielsweise Android 12-VTS-Tests für den Boot-Header v3 und zum Überprüfen der erforderlichen Partitionen auf einem Gerät mit einem 5.10-Kernel.
Wie erstelle ich die Projekt-defconfig-Fragmentdatei für Gerätebuilds?
Viele GKI-kompatible Geräte verwenden ein Konfigurationsfragment, um die Konfigurationsoptionen zu beschreiben, die zusätzlich zu gki_defconfig
zum Erstellen der Anbietermodule erforderlich sind.
Beispiele für die ACK-Codebasis sind Cuttlefish und DB845c.
Es gibt keine Möglichkeit, eine gewisse manuelle Prüfung der Konfigurationsoptionen zur Optimierung des Fragments zu vermeiden, aber scripts/diffconfig
aus den Kernel-Quellen ist nützlich, um die Ergebnisse von gki_defconfig
und gki_defconfig+device.fragment
zu vergleichen.
Gibt es eine Behelfslösung, damit modprobe - und _ als äquivalent behandelt?
Die Manpage für modprobe enthält folgende Beschreibung: „modprobe
fügt dem Linux-Kernel intelligent ein Modul hinzu oder entfernt es. Hinweis: Aus Gründen der Übersichtlichkeit gibt es keinen Unterschied zwischen _ und - in Modulnamen (automatische Unterstrichumwandlung).“ Das GKI-Team hält sich an die standardmäßige Upstream-Konvention. Daher müssen Anbietertools oder Modulbenennungskonventionen diese Einhaltung berücksichtigen.
Wie aktiviere ich debugfs für die interne Verwendung?
Weitere Informationen zum Aktivieren von „debugfs“ finden Sie unter Aufdringliche Downstream-Fehlerbehebungsfunktionen.
Wie kann ich nicht übereinstimmende ABIs zwischen dem GKI-Kernel mit einer bestimmten Modulkonfiguration beheben?
Nicht übereinstimmende ABIs zwischen dem GKI-Kernel und der Modulkonfiguration stellen eine implizite Modulkonfigurationsabhängigkeit dar, bei der durch das Aktivieren eines Moduls eine Binärkonfiguration in das resultierende Kernel-Image eingefügt wird. Wenden Sie sich an das Android-Kernel-Team (kernel-team@android.com), um eine Lösung zu finden. Nachdem die Liste der Symbole festgelegt wurde, erstellen Sie einen Fehler im Issue Tracker und laden Sie eine Änderung in die Symbolliste hoch.
Ich habe GKI 1.0-kompatible Geräte im Einsatz, auf denen der 5.4-Kernel läuft, der mit Android 11 und 12 eingeführt wurde. Welche Kernel-Upgrade-Optionen sind verfügbar und wie kann ich diese Geräte beim Upgrade auf Android 12 und 13 testen?
In der Kompatibilitätsmatrix finden Sie eine Liste der unterstützten Kernel-Versionen für Start- und Upgradeversionen. Hier sind zwei Upgrade-Beispiele:
Beispiel 1:Ein Nutzer mit einem Gerät, das mit Android 11 und dem android11-5.4
-Kernel (GKI 1.0) ausgeliefert wird, kann beim Upgrade auf Android 12 eine der folgenden Optionen auswählen:
Führen Sie ein Upgrade auf den
android12-5.10
GKI 2.0-Kernel durch (dringend empfohlen).Behalten Sie den
android11-5.4
-Kernel bei.Führen Sie ein Upgrade auf den
android12-5.4
-Kernel aus.
Beispiel 2:Ein Nutzer mit einem Gerät, das mit Android 12 und entweder dem android12-5.4
- oder dem android12-5.10
-Kernel ausgeliefert wird, kann beim Upgrade auf Android 13 eine der folgenden Optionen auswählen:
Führen Sie ein Upgrade auf den GKI 2.0-Kernel
android13-5.10
oderandroid13-5.15
durch (wird dringend empfohlen).Lassen Sie den
android12-5.4
GKI v1.0-Kernel.Lassen Sie den
android12-5.10
-Kernel GKI 2.0 unverändert.
Für Treble-Compliance-Tests empfehlen wir Folgendes:
Ersetzen Sie den Partnerkernel durch den zertifizierten GKI 1.0-Kernel (
android11-5.4
oderandroid12-5.4
).Je nach Auswahl wird der zertifizierte GKI 2.0-Kernel (
android12-5.10
,android13-5.10
oderandroid13-5.15
) geliefert.
Sie können GKI 2.0-Builds aus den Release-Builds des generischen Kernel-Images (Generic Kernel Image, GKI) herunterladen.