Häufig gestellte Fragen zum Android-Kernel

Dieses Dokument enthält häufig gestellte Fragen zum Android-Kernel, auch bekannt als Generic Kernel Image (GKI)-Kernel. Wenn Sie mit GKI und der GKI-Kernel-Terminologie nicht vertraut sind, lesen Sie die Kernel-Übersicht .

Können die Symbollisten der Kernel Module Interface (KMI) in einem stabilen Kernel geändert werden?

Änderungen, die sich nicht auf das vorhandene KMI auswirken, können eingefrorenen Kerneln hinzugefügt werden. Zu diesen Änderungen gehören neue exportierte Funktionen und Symbollisteneinträge. Einzelheiten finden Sie unter Symbollisten verwalten .

Kann ich Strukturen ändern, die von Herstellermodulen in einem stabilen Kernel verwendet werden?

Strukturen, die Teil einer KMI-Schnittstelle sind, können in Kerneln mit eingefrorenem KMI nicht geändert werden. Vor dem Einfrieren von KMI können diese Strukturen geändert werden.

Kann ich den Kernel ändern, solange die Binär-/Quellenkompatibilität dadurch nicht beeinträchtigt wird?

Änderungen, die sich nicht auf das KMI auswirken, können wie in den Android-spezifischen Patches beschrieben vorgenommen werden.

Wie geht GKI mit der Kernel-Konfiguration um?

Informationen zur Kernel-Konfiguration finden Sie in den Änderungen an gki_defconfig .

Wie gehe ich mit Upstream-Fehlerbehebungen für Überschreibungen vorhandener GKI-Module um?

Wenn Sie ein Anbietermodul basierend auf einem Treiber im Android Common Kernel (ACK) erstellen, liegt es an Ihnen, sicherzustellen, dass Fehlerkorrekturen von Upstream und ACK an Ihr Modul weitergegeben werden. Im Allgemeinen liegt es in Ihrem Interesse, den GKI-Kernel und die GKI-Module ohne Änderungen zu verwenden, damit diese Updates konsistent von Google bereitgestellt werden.

Gibt es GKI-spezifische Tests?

Es gibt Vendor Test Suite (VTS) -Tests, die überprüfen, ob ein zertifizierter GKI-Build installiert ist, und auch die GKI-Anforderungen pro Release durchsetzen. Beispielsweise gibt es Android 12 VTS-Tests für den Boot-Header v3 und um das Vorhandensein erforderlicher Partitionen in einem Gerät zu überprüfen, auf dem ein 5.10-Kernel ausgeführt wird.

Wie erstelle ich die Projekt-Defconfig-Fragmentdatei für Geräte-Builds?

Viele GKI-kompatible Geräte verwenden zusätzlich zu gki_defconfig ein Konfigurationsfragment, um die Konfigurationsoptionen zu beschreiben, die zum Erstellen der Anbietermodule erforderlich sind. Beispiele, die Teil der ACK-Codebasis sind, sind Cuttlefish und DB845c. Es führt kein Weg daran vorbei, die Konfigurationsoptionen manuell zu prüfen, um das Fragment zu optimieren, 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 Problemumgehung dafür, dass modprobe - und _ als gleichwertig behandelt?

Die Modprobe-Manpage enthält diese Beschreibung: „ modprobe fügt auf intelligente Weise ein Modul zum Linux-Kernel hinzu oder entfernt es. Beachten Sie, dass es der Einfachheit halber keinen Unterschied zwischen _ und - in Modulnamen gibt (es wird eine automatische Unterstrichkonvertierung durchgeführt).“ Das GKI-Team hält sich an die Standard-Upstream-Konvention, daher müssen Anbietertools oder Modulbenennungskonventionen diese Einhaltung berücksichtigen.

Wie aktiviere ich debugfs für den internen Gebrauch?

Einzelheiten zum Aktivieren von debugfs finden Sie unter aufdringliche Downstream-Debug-Funktionen .

Wie kann ich nicht übereinstimmende ABIs zwischen dem GKI-Kernel beheben, wenn eine bestimmte Modulkonfiguration aktiviert ist?

Nicht übereinstimmende ABIs zwischen dem GKI-Kernel und der Modulkonfiguration stellen eine implizite Modulkonfigurationsabhängigkeit dar, bei der die Aktivierung eines Moduls dazu führt, dass eine Binärkonfiguration in das resultierende Kernel-Image integriert wird. Wenden Sie sich an das Android-Kernel-Team ( kernel-team@android.com ), um einen weiteren Weg zu ermitteln. Nachdem die Liste der Symbole ermittelt wurde, erstellen Sie einen Fehler im Issue Tracker und laden Sie eine Änderung an der 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 gestartet wurde. Welche Kernel-Upgrade-Optionen sind verfügbar und wie kann ich diese Geräte beim Upgrade auf Android 12 und 13 testen?

Eine Liste der unterstützten Kernel-Versionen für Start- und Upgrade-Versionen finden Sie in der Kompatibilitätsmatrix . Hier sind zwei Upgrade-Beispiele.

Beispiel 1: Ein Benutzer mit einem Gerät, das mit Android 11 mit dem Kernel android11-5.4 ( GKI 1.0 ) startet, kann beim Upgrade auf Android 12 eine dieser Optionen wählen:

  • Upgrade auf den android12-5.10 GKI 2.0-Kernel (dringend empfohlen).

  • Behalten Sie den android11-5.4 Kernel.

  • Aktualisieren Sie auf den android12-5.4 -Kernel.

Beispiel 2: Ein Benutzer mit einem Gerät, das mit Android 12 mit dem Kernel android12-5.4 oder android12-5.10 startet, kann beim Upgrade auf Android 13 eine dieser Optionen wählen:

  • Upgrade auf den Kernel android13-5.10 oder android13-5.15 GKI 2.0 (dringend empfohlen).

  • Behalten Sie den Kernel android12-5.4 GKI 1.0 .

  • Behalten Sie den android12-5.10 GKI 2.0- Kernel.

Speziell für Treble-Konformitätstests empfehlen wir Ihnen, einen der folgenden Schritte durchzuführen:

  • Ersetzen Sie den Partnerkernel durch den zertifizierten GKI 1.0- Kernel ( android11-5.4 oder android12-5.4 ).

  • Lieferung mit dem zertifizierten GKI 2.0- Kernel ( android12-5.10 , android13-5.10 oder android13-5.15 ), abhängig von Ihrer Auswahl.

herunterladen

Sie können GKI 2.0-Builds von Generic Kernel Image (GKI)-Release-Builds herunterladen.