Dieser Leitfaden enthält eine detaillierte Anleitung zum Herunterladen, Kompilieren und Flashen eines benutzerdefinierten Pixel-Kernels für die Entwicklung. Dank GKI ist es jetzt möglich, den Kernel unabhängig vom Android-Plattform-Build zu aktualisieren. Diese Schritte gelten nur für Google Pixel 6 und höher. Das liegt daran, dass auf Google Pixel 5 und älteren Geräten die Kernelmodule in der vendor
-Partition aktualisiert werden müssen. Das hängt vom Android-Plattform-Build für diese Geräte ab. Die Tabelle Von GKI unterstützte Pixel-Kernelzweige enthält den Manifest-Zweig des Kernel-Repositorys für jedes von GKI unterstützte Pixel-Gerät. Informationen zu den Kernel-Manifest-Branches für Pixel 5 und ältere Modelle finden Sie im Abschnitt Alte Pixel-Kernel.
Von GKI unterstützte Pixel-Kernel-Branches
Gerät | Binärpfad im AOSP-Baum | Repository-Zweig | GKI-Kernel |
---|---|---|---|
Google Pixel 9 Pro Fold (Comet) | device/google/comet-kernels/6.1 | android-gs-comet-6.1-android15-qpr1 | android15-6.1 |
Google Pixel 9 (Tokay) Google Pixel 9 Pro (Caiman) Google Pixel 9 Pro XL (Komodo) |
device/google/caimito-kernels/6.1 | android-gs-caimito-6.1-android15-qpr1 | android15-6.1 |
Google Pixel 8a (Akita) | device/google/akita-kernels/5.15 | android-gs-akita-5.15-android15-qpr1 | android15-5.15 |
Google Pixel 8 (Shiba) Google Pixel 8 Pro (Husky) |
device/google/shusky-kernels/5.15 | android-gs-shusky-5.15-android15-qpr1 | android15-5.15 |
Pixel Fold (felix) | device/google/felix-kernels/5.10 | android-gs-felix-5.10-android15-qpr1 | android15-5.10 |
Pixel Tablet (tangorpro) | device/google/tangorpro-kernels/5.10 | android-gs-tangorpro-5.10-android15-qpr1 | android15-5.10 |
Google Pixel 7a (Lynx) | device/google/lynx-kernels/5.10 | android-gs-lynx-5.10-android15-qpr1 | android15-5.10 |
Google Pixel 7 (Panther) Google Pixel 7 Pro (Cheetah) |
device/google/pantah-kernels/5.10 | android-gs-pantah-5.10-android15-qpr1 | android15-5.10 |
Google Pixel 6a (Bluejay) | device/google/bluejay-kernels/5.10 | android-gs-bluejay-5.10-android15-qpr1 | android15-5.10 |
Google Pixel 6 (Oriole) Google Pixel 6 Pro (Raven) |
device/google/raviole-kernels/5.10 | android-gs-raviole-5.10-android15-qpr1 | android15-5.10 |
Zusätzlich zu den von der Fertigung unterstützten Kerneln werden Google Pixel 6 und Google Pixel 6 Pro für die GKI-Entwicklung nur auf den Android Common-Kernel-Ästen unterstützt, die in der Tabelle Unterstützte Android-Plattform- und Kernelkombinationen für Google Pixel 6/6 Pro aufgeführt sind. Aufgrund von UAPI-Unterschieden zwischen den HALs der Android-Plattform und den Pixel-Kerneltreibern enthält die Tabelle die unterstützten Build-Kombinationen.
Unterstützte Android-Plattform- und Kernelkombinationen für Google Pixel 6/6 Pro
Pixel Kernel Manifest Branch | 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
Das folgende Flussdiagramm beschreibt den Ablauf zum Aktualisieren des Kernels auf Google Pixel 6 und höher:
Gerät über flash.android.com flashen
- Rufen Sie flash.android.com auf.
- Wählen Sie den Android-Build basierend auf den unterstützten Kombinationen von Android-Plattform und Kernel aus.
- Wählen Sie die folgenden Optionen aus:
- Gerätedaten löschen
- Alle Partitionen erzwingen
- Überprüfung deaktivieren
- Drücken Sie die Schaltfläche 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 zu Pixel KERNEL_MANIFEST_BRANCH finden Sie in der Tabelle Unterstützte Android-Plattform- und Kernelkombinationen für Google Pixel 6/6 Pro.
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 das Gerät geflasht wird. Es gibt mehrere Möglichkeiten.
Option 1: Extrahieren Sie das RAM-Disk-Image des Anbieters aus dem Pixel-Werksimage.
Laden Sie das unterstützte Werksimage für Ihr Gerät unter https://developers.google.com/android/images herunter.
Extrahieren Sie die
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 heruntergeladenen Original-Images.
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 die
vendor_boot.img
, um das RAM-Disk des Anbieters zu erhalten.KERNEL_REPO_ROOT/tools/mkbootimg/unpack_bootimg.py --boot_img vendor_boot.img \ --out vendor_boot_out
Kopieren Sie die extrahierte
vendor-ramdisk-by-name/ramdisk_
-Datei in das Pixel-Kernel-Repository.Gerät DEVICE_RAMDISK_PATH Google Pixel 6 (Oriole)
Google Pixel 6 Pro (Raven)prebuilts/boot-artifacts/ramdisks/vendor_ramdisk-oriole.img Google 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 |
---|---|
Google Pixel 6 (Oriole) Google Pixel 6 Pro (Raven) |
prebuilts/boot-artifacts/ramdisks/vendor_ramdisk-oriole.img |
Google 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
Kernel kompilieren (Kleaf)
In Android 13 wurde das build.sh
-Script durch ein neues Kernel-Buildsystem namens Kleaf ersetzt. Bei Geräten mit android13-5.15
und höher sollte der Kernel mit Kleaf erstellt werden.
Für Google Pixel 6 und Google Pixel 6 Pro mit Kerneln ab android14
führen Sie den Kleaf-Buildbefehl aus:
tools/bazel run --config=fast --config=stamp //private/google-modules/soc/gs:slider_dist
Führen Sie für Google Pixel 6 und Google Pixel 6 Pro mit android13-5.15
-Kerneln den Kleaf-Buildbefehl aus:
tools/bazel run --lto=thin //gs/google-modules/soc-modules:slider_dist
Für alle anderen Pixel-Kernel führen Sie das build_DEVICE.sh
-Script aus, das Sie unter KERNEL_REPO_ROOT
finden. In den meisten Fällen muss DEVICE
der Codename sein, der mit dem Codenamen in der Spalte Binary path in AOSP tree (Binärpfad im AOSP-Baum) der Tabelle GKI-unterstützte Pixel-Kernelzweige übereinstimmt. Das kann der Codename eines Geräts sein, z. B. „akita“ (Google Pixel 8a), oder der Codename einer Gruppe ähnlicher Geräte, die denselben Kernel verwenden, z. B. „caimito“, was für Google Pixel 9 (tokay), Google Pixel 9 Pro (caiman) und Google Pixel 9 Pro XL (komodo) steht. Verwenden Sie für android14
und ältere Versionen build_slider.sh
für Google Pixel 6 und Google Pixel 6 Pro und build_cloudripper.sh
für Google Pixel 7 und Google Pixel 7 Pro.
Wenn Sie beispielsweise den Kernel für Google Pixel 6 im Branch android-gs-raviole-5.10-android14
erstellen möchten, führen Sie den Befehl aus:
build_slider.sh
Standardmäßig verwenden die build_DEVICE.sh
-Scripts den vorkompilierten GKI-Kernel, um den Build-Prozess zu beschleunigen. Wenn Sie den Kern-Kernel ä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-Buildsystem und zum Anpassen des Builds finden Sie unter Kleaf – Android-Kernel mit Bazel erstellen.
Kernel-Images flashen
Hinweis:Wenn Sie die Überprüfung nicht deaktiviert haben, müssen Sie dies tun, bevor Sie den benutzerdefinierten Kernel flashen. Dazu verwenden Sie diesen Befehl:fastboot oem disable-verification
WARNUNG:Wenn Sie einen benutzerdefinierten Kernel auf einen Plattform-Build flashen, müssen Sie Ihr Gerät möglicherweise löschen, wenn mit dem neuen Kernel ein Downgrade der Sicherheitspatch-Ebene (Security Patch Level, SPL) verbunden ist. Dabei werden alle Ihre personenbezogenen Daten gelöscht. Sichern Sie Ihre Daten vor dem Löschen.fastboot -w
Führen Sie zum Flashen der Kernel-Images den Befehl fastboot flash
für jede Kernelpartition aus, die für Ihr Gerät aufgeführt ist. Bei dynamischen Partitionen müssen Sie vor dem Flashen neu im fastbootd
-Modus starten.
Gerät | Kernelpartitionen |
---|---|
Google Pixel 6 (Oriole) Google Pixel 6 Pro (Raven) Google Pixel 6a (Bluejay) |
boot dtbo vendor_boot vendor_dlkm (dynamische Partition) |
Google Pixel 8 (shiba) Google Pixel 8 Pro (husky) Google Pixel Fold (felix) Google Pixel Tablet (tangorpro) Google Pixel 7a (lynx) Google Pixel 7 (panther) Google Pixel 7 Pro (cheetah) |
boot dtbo vendor_kernel_boot vendor_dlkm (dynamic partition) system_dlkm (dynamic partition) |
Hier sind die Befehle zum Flashen von Pixel 6 mit 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 im DIST_DIR.
Kernel-Branch | DIST_DIR |
---|---|
v5.10 | out/mixed/dist |
Version 5.15 und höher | out/DEVICE/dist |
Hinweis:Wenn Sie einen seriellen Dongle haben und serielle Protokolle aktivieren möchten, verwenden Sie den Befehl:Beispielbefehl für die Verbindung vom Host aus: fastboot oem uart enable
fastboot oem uart config 3000000
screen -fn /dev/ttyUSB* 3000000
Wiederherstellen der Werksbilder
Wenn Sie Ihr Gerät auf die Factory Images zurücksetzen möchten, können Sie flash.android.com verwenden.
Alte Pixel-Kernel
In der Tabelle Alte Kernel-Branches für Google Pixel finden Sie die Kernel-Repository-Branches für Google Pixel 5 und ältere Geräte. Diese Geräte werden nicht von GKI unterstützt.
Alte Pixel-Kernelzweige
Gerät | Binärpfad im AOSP-Baum | Repository-Branches |
---|---|---|
Google Pixel 5a (Barbet) Google Pixel 4a (5G) (Bramble) Google Pixel 5 (Redfin) |
device/google/redbull-kernel | android-msm-redbull-4.19-android14-qpr3 |
Google Pixel 4a (Sunfish) | device/google/sunfish-kernel | android-msm-sunfish-4.14-android13-qpr3 |
Google Pixel 4 (Feuerrot) Google Pixel 4 XL (Koralle) |
device/google/coral-kernel | android-msm-coral-4.14-android13 |
Google Pixel 3a (Sargo) Google Pixel 3a XL (Bonito) |
device/google/bonito-kernel | android-msm-bonito-4.9-android12L |
Google Pixel 3 (blaue Linie) Google Pixel 3 XL (Kreuzschraffur) |
device/google/crosshatch-kernel | android-msm-crosshatch-4.9-android12 |
Google Pixel 2 (Walleye) Google Pixel 2 XL (Taimen) |
device/google/wahoo-kernel | android-msm-wahoo-4.4-android10-qpr3 |
Google Pixel (Sailfish) Google Pixel XL (Marlin) |
device/google/marlin-kernel | android-msm-marlin-3.18-pie-qpr2 |