In dieser Anleitung wird Schritt für Schritt erklärt, wie Sie einen benutzerdefinierten Pixel-Kernel für die Entwicklung herunterladen, kompilieren und flashen. Dank GKI ist es jetzt möglich, den Kernel unabhängig vom Android-Plattform-Build zu aktualisieren. Diese Schritte gelten nur für Pixel 6 und neuere Modelle. Das liegt daran, dass Pixel 5 und ältere Geräte eine Aktualisierung der Kernelmodule in der Partition vendor
erfordern, die vom Build der Android-Plattform für diese Geräte abhängt. Die Tabelle der von GKI unterstützten Pixel-Kernel-Zweige enthält den Manifestzweig des Kernel-Repositorys für jedes von GKI unterstützte Pixel-Gerät. Weitere Informationen zu Pixel 5 und älteren Kernel-Manifest-Zweigen finden Sie im Abschnitt Legacy-Pixel-Kernel.
Von GKI unterstützte Pixel-Kernel-Zweige
Gerät | Binärpfad im AOSP-Baum | Repository-Zweige | GKI-Kernel |
---|---|---|---|
Google Pixel 8a (Akita) | device/google/akita-kernel | android-gs-akita-5.15-android14-qpr3 | android14–5.15 |
Pixel 8 (Shiba) Pixel 8 Pro (Husky) |
Gerät/google/shusky-kernel | android-gs-shusky-5.15-android14-qpr3 | android14–5.15 |
Google Pixel Fold (Felix) | Gerät/google/felix-kernel | android-gs-felix-5.10-android14-qpr3 | android13–5.10 |
Google Pixel Tablet (tangorpro) | Gerät/google/tangorpro-kernel | android-gs-tangorpro-5.10-android14-qpr3 | android13–5.10 |
Google Pixel 7a (Lynx) | device/google/lynx-kernel | android-gs-lynx-5.10-android14-qpr3 | android13–5.10 |
Pixel 7 (Panther) Pixel 7 Pro (Gepard) |
device/google/pantah-kernel | android-gs-pantah-5.10-android14-qpr3 | android13–5.10 |
Pixel 6a (bluejay) | device/google/bluejay-kernel | android-gs-bluejay-5.10-android14-qpr3 | android13–5.10 |
Pixel 6 (Oriole) Pixel 6 Pro (Rabe) |
Gerät/google/raviole-kernel | android-gs-raviole-5.10-android14-qpr3 | android13–5.10 |
Zusätzlich zu den werkseitig unterstützten Kerneln werden die Pixel 6- und 6 Pro-Geräte nur für GKI-Entwicklungszwecke in den Common Kernel-Zweigen von Android unterstützt, die in der Tabelle Unterstützte Pixel 6/6 Pro Android-Plattform und Kernel-Kombinationen enthalten sind. Aufgrund von Anbieter-UAPI-Unterschieden zwischen den HALs der Android-Plattform und den Pixel-Kernel-Treibern sind in der Tabelle die unterstützten Build-Kombinationen aufgeführt.
Unterstützte Kombinationen aus Android-Plattform und -Kernel auf Pixel 6/6 Pro
Pixel-Kernel-Manifest-Zweig | GKI-Zweig | Android-Plattform-Build | aosp-main -Support? |
---|---|---|---|
gs-android-gs-raviole-mainline | android-mainline (Version 6.8) | AP1A.240505.004 (11583682) | Ja |
android14-gs-pixel-6.1 | android14-6.1 | AP1A.240505.004 (11583682) | Ja |
gs-android13-gs-raviole-5.15 | android13–5.15 | TQ1A.230205.002 (9471150) | Nein |
Pixel-Gerät vorbereiten
Im folgenden Flussdiagramm wird die Aktualisierung des Kernels auf Pixel 6 und höher beschrieben:
Gerät über flash.android.com flashen
- Rufen Sie flash.android.com auf.
- Wählen Sie den Android-Build anhand der unterstützten Android-Plattform- und Kernel-Kombinationen aus.
- Wählen Sie die folgenden Optionen aus:
- Gerätedaten löschen
- Flash für alle Partitionen erzwingen
- Bestätigung deaktivieren
- Klicken Sie auf die Schaltfläche Install build (Build installieren), um das Gerät zu flashen.
Kernel herunterladen und kompilieren
Kernel-Repository synchronisieren
Führen Sie die folgenden Befehle aus, um den Kernel-Quellcode herunterzuladen. Weitere Informationen finden Sie in der Tabelle Unterstützte Android-Plattform- und Kernel-Kombinationen für Pixel 6/6 Pro für Pixel KERNEL_MANIFEST_BRANCH.
repo init -u https://android.googlesource.com/kernel/manifest -b KERNEL_MANIFEST_BRANCH
repo sync -c --no-tags
Anbieter-RAMdisk aktualisieren
Aktualisieren Sie die Datei vendor_ramdisk-DEVICE.img
im Kernel-Repository, damit sie mit dem Android-Plattform-Build übereinstimmt, der auf dem Gerät geflasht ist. Dafür gibt es mehrere Möglichkeiten.
Option 1: Extrahieren Sie das Ramdisk-Image des Anbieters aus dem Pixel-Factory Image.
Laden Sie das unterstützte Factory Image für Ihr Gerät unter https://developers.google.com/android/images herunter.
Extrahieren Sie
vendor_boot.img
:- In den folgenden Befehlen wird Pixel 6 Pro AP1A.240505.004 als Beispiel verwendet. Ersetzen Sie den Namen der ZIP-Datei durch den Dateinamen des Factory-Images, das Sie heruntergeladen haben.
unzip raven-ap1a.240505.004-factory-9d783215.zip
cd raven-ap1a.240505.004
unzip image-raven-ap1a.240505.004.zip vendor_boot.img
Entpacken Sie das
vendor_boot.img
, um die Anbieter-Ramdisk abzurufen.KERNEL_REPO_ROOT/tools/mkbootimg/unpack_bootimg.py --boot_img vendor_boot.img \ --out vendor_boot_out
Kopieren Sie die extrahierte Datei
vendor-ramdisk-by-name/ramdisk_
in das Pixel-Kernel-Repository.Gerät DEVICE_RAMDISK_PATH Pixel 6 (Oriole)
Pixel 6 Pro (Rabe)vorkonfigurierte/boot-artifacts/ramdisks/vendor_ramdisk-oriole.img Pixel 6a (bluejay) private/devices/google/bluejay/vendor_ramdisk-bluejay.img cp vendor_boot_out/vendor-ramdisk-by-name/ramdisk_ \ KERNEL_REPO_ROOT/DEVICE_RAMDISK_PATH
Option 2: vendor_ramdisk
aus einem lokal erstellten Android-Plattform-Repository kopieren
Gerät | DEVICE_RAMDISK_PATH |
---|---|
Pixel 6 (Oriole) Pixel 6 Pro (Rabe) |
vorkonfigurierte/boot-artifacts/ramdisks/vendor_ramdisk-oriole.img |
Pixel 6a (bluejay) | private/devices/google/bluejay/vendor_ramdisk-bluejay.img |
cp ANDROID_ROOT/out/target/product/DEVICE/vendor_ramdisk-debug.img \
KERNEL_REPO_ROOT/DEVICE_RAMDISK_PATH/vendor_ramdisk-DEVICE.img
Kompilieren Sie den Kernel (Kleaf)
In Android 13 wurde das Skript build.sh
durch ein neues Kernel-Build-System namens Kleaf ersetzt. Bei Geräten mit android13-5.15
und höher sollte der Kernel mit Kleaf erstellt werden.
Führen Sie für Pixel 6 und 6 Pro mit android14
und höher den Build-Befehl von Kleaf aus:
tools/bazel run --config=fast --config=stamp //private/google-modules/soc/gs:slider_dist
Führen Sie für Pixel 6 und 6 Pro mit android13-5.15
-Kerneln den Kleaf-Build-Befehl aus:
tools/bazel run --lto=thin //gs/google-modules/soc-modules:slider_dist
Führen Sie für alle anderen Pixel-Kernel das Skript build_DEVICE.sh
aus, das sich unter KERNEL_REPO_ROOT befindet. Wenn Sie beispielsweise den Kernel für Pixel 6 im Zweig android-gs-raviole-5.10-android14
erstellen möchten, führen Sie folgenden Befehl aus:
build_slider.sh
Standardmäßig verwenden die build_DEVICE.sh
-Skripts den vordefinierten GKI-Kernel, um den Build-Prozess zu beschleunigen. Wenn Sie den Kernkernel ändern möchten, legen Sie die Umgebungsvariable BUILD_AOSP_KERNEL=1
fest, um den Kernel stattdessen aus den lokalen Quellen zu erstellen.
Weitere Informationen zum Kernel-Build-System und zum Anpassen des Builds finden Sie unter Kleaf – Building Android Kernels with Base.
Kernel-Images blinken
Hinweis: Wenn Sie die Überprüfung nicht deaktiviert haben, müssen Sie dies tun, bevor Sie den benutzerdefinierten Kernel flashen. Dazu verwenden Sie folgenden Befehl:fastboot oem disable-verification
WARNUNG: Wenn Sie einen benutzerdefinierten Kernel auf einen Plattform-Build flashen, müssen Sie möglicherweise die Daten auf Ihrem Gerät löschen, falls mit dem neuen Kernel ein SPL-Downgrade (Security Patch Level) verknüpft ist. Dabei werden alle deine persönlichen Daten gelöscht. Sichern Sie unbedingt Ihre Daten, bevor Sie sie löschen.fastboot -w
Führen Sie zum Flashen der Kernel-Images den Befehl fastboot flash
für jede Kernel-Partition aus, die auf Ihrem Gerät aufgeführt ist. Bei dynamischen Partitionen müssen Sie vor dem Flashen im fastbootd
-Modus neu starten.
Gerät | Kernelpartitionen |
---|---|
Pixel 6
(oriol) Pixel 6 Pro (Rabe) Pixel 6a (Bluejay) |
boot dtbo vendor_boot vendor_dlkm (dynamische Partition) |
Pixel 8 (Shiba) Pixel 8 Pro (Husky) Pixel Fold (felix) Pixel Tablet (tangorpro) Pixel 7a (lynx) Pixel 7 (Panther) Pixel 7 Pro (Gepard) |
boot dtbo vendor_kernel_boot vendor_dlkm(dynamische Partition) system_dlkm (dynamische Partition) |
Hier sind die blinkenden Befehle für Pixel 6 unter android-mainline
:
fastboot flash boot out/slider/dist/boot.img
fastboot flash dtbo out/slider/dist/dtbo.img
fastboot flash vendor_boot out/slider/dist/vendor_boot.img
fastboot reboot fastboot
fastboot flash vendor_dlkm out/slider/dist/vendor_dlkm.img
Die Kernel-Images finden Sie unter DIST_DIR.
Kernel-Branch | DIST_DIR |
---|---|
Version 5.10 | out/mixed/dist |
v5.15 und höher | out/DEVICE/dist |
Hinweis:Wenn Sie einen seriellen Dongle haben und serielle Logs aktivieren möchten, lautet der Befehl:Beispielbefehl zum Herstellen einer Verbindung vom Host aus:fastboot oem uart enable
fastboot oem uart config 3000000
screen -fn /dev/ttyUSB* 3000000
Factory Images wiederherstellen
Mit flash.android.com können Sie Ihr Gerät auf die werkseitigen Images zurücksetzen.
Alte Pixel-Kernel
Die Legacy-Pixel-Kernel-Branche enthält die Kernel-Repository-Zweige für Pixel 5 und ältere Geräte. Dies sind nicht von GKI unterstützte Geräte.
Legacy-Pixel-Kernel-Zweige
Gerät | Binärpfad im AOSP-Baum | Repository-Zweige |
---|---|---|
Pixel 5a (Barbet) Pixel 4a (5G) (Bramble) Pixel 5 (redfin) |
Gerät/google/redbull-kernel | android-msm-redbull-4.19-android14-qpr3 |
Pixel 4a (Sunfish) | Gerät/google/sunfish-kernel | android-msm-sunfish-4.14-android13-qpr3 |
Pixel 4 (Flame) Pixel 4 XL (Koralle) |
device/google/coral-kernel | android-msm-coral-4.14-android13 |
Pixel 3a (Sargo) Pixel 3a XL (bonito) |
device/google/bonito-kernel | android-msm-bonito-4.9-android12L |
Pixel 3 (blueline) Pixel 3 XL (Kreuzschraffur) |
device/google/crosshatch-kernel | android-msm-crosshatch-4.9-android12 |
Pixel 2 (Wandauge) Pixel 2 XL (Taimen) |
Gerät/google/wahoo-kernel | android-msm-wahoo-4.4-android10-qpr3 |
Pixel (Sailfish) Pixel XL (Marlin) |
Gerät/google/marlin-kernel | android-msm-marlin-3.18-pie-qpr2 |