Diese Anleitung enthält Schritt-für-Schritt-Anleitungen zum Herunterladen, Kompilieren und Flashen eines benutzerdefinierten Pixel-Kernels für die Entwicklung. Dank GKI ist es nun möglich, den Kernel unabhängig vom Build der Android-Plattform zu aktualisieren. Diese Schritte gelten nur für Pixel 6 und neuere Geräte. Dies liegt daran, dass Pixel 5 und frühere Geräte eine Aktualisierung der Kernelmodule auf der vendor
erfordern, was 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 Kernel-Repository-Manifestzweig für jedes von GKI unterstützte Pixel-Gerät. Informationen zu den Kernel-Manifestzweigen von Pixel 5 und früheren Versionen finden Sie im Abschnitt „Legacy-Pixel-Kernel“ .
GKI unterstützte Pixel-Kernelzweige
Gerät | Binärpfad im AOSP-Baum | Repository-Zweige | GKI-Kernel |
---|---|---|---|
Pixel 8 (Shiba) Pixel 8 Pro (heiser) | device/google/shusky-kernel | android-gs-shusky-5.15-android14-d1 | android14-5.15 |
Pixel Fold (Felix) | device/google/felix-kernel | android-gs-felix-5.10-android14 | android13-5.10 |
Pixel-Tablet (Tangorpro) | device/google/tangorpro-kernel | android-gs-tangorpro-5.10-android14 | android13-5.10 |
Pixel 7a (Luchs) | device/google/lynx-kernel | android-gs-lynx-5.10-android14 | android13-5.10 |
Pixel 7 (Panther) Pixel 7 Pro (Gepard) | device/google/pantah-kernel | android-gs-pantah-5.10-android14 | android13-5.10 |
Pixel 6a (Bluejay) | device/google/bluejay-kernel | android-gs-bluejay-5.10-android14 | android13-5.10 |
Pixel 6 (Pirol) Pixel 6 Pro (Rabe) | device/google/raviole-kernel | android-gs-raviole-5.10-android14 | android13-5.10 |
Zusätzlich zu den werkseitig unterstützten Kerneln werden die Pixel 6- und 6 Pro-Geräte für GKI-Entwicklungszwecke nur auf den Android Common-Kernelzweigen unterstützt, die in der Tabelle „Unterstützte Android-Plattform und Kernel-Kombinationen für Pixel 6/6 Pro“ enthalten sind. Aufgrund der Hersteller-UAPI-Unterschiede zwischen den HALs der Android-Plattform und den Pixel-Kernel-Treibern enthält die Tabelle die unterstützten Build-Kombinationen.
Unterstützte Pixel 6/6 Pro Android-Plattform- und Kernel-Kombinationen
Pixel-Kernel-Manifestzweig | GKI-Zweigstelle | Android-Plattform-Build | aosp-main Unterstützung? |
---|---|---|---|
gs-android-gs-raviole-mainline | android-mainline ( v6.7-Tag ) | UP1A.231005.007.A1 (10762838) | Ja |
android14-gs-pixel-6.1 | android14-6.1 | UP1A.231005.007.A1 (10762838) | Ja |
gs-android13-gs-raviole-5.15 | android13-5.15 | TQ1A.230205.002 (9471150) | NEIN |
Bereiten Sie Ihr Pixel-Gerät vor
Das folgende Flussdiagramm beschreibt den Prozess zum Aktualisieren des Kernels auf Pixel 6 und neueren Geräten:
Flashen Sie das Gerät mit flash.android.com
- Navigieren Sie zu flash.android.com
- Wählen Sie den Android-Build basierend auf den unterstützten Android-Plattform- und Kernel-Kombinationen aus.
- Wählen Sie die folgenden Optionen:
- Wischgerät
- Flash aller Partitionen erzwingen
- Deaktivieren Sie die Überprüfung
- Klicken Sie auf die Schaltfläche „Build installieren“ , um das Gerät zu flashen.
Laden Sie den Kernel herunter und kompilieren Sie ihn
Synchronisieren Sie das Kernel-Repository
Führen Sie die folgenden Befehle aus, um den Kernel-Quellcode herunterzuladen. Informationen zum Pixel KERNEL_MANIFEST_BRANCH finden Sie in der Tabelle „Unterstützte Pixel 6/6 Pro Android-Plattform und Kernel-Kombinationen“ .
repo init -u https://android.googlesource.com/kernel/manifest -b KERNEL_MANIFEST_BRANCH
repo sync -c --no-tags
Aktualisieren Sie die Ramdisk des Anbieters
Aktualisieren Sie die Datei vendor_ramdisk- DEVICE .img
im Kernel-Repository, damit sie mit dem Build der Android-Plattform übereinstimmt, der auf dem Gerät geflasht ist. Es gibt einige Optionen, denen Sie folgen können.
Option 1) Extrahieren Sie das Ramdisk-Image des Herstellers aus dem Pixel-Factory-Image .
Laden Sie das unterstützte Factory-Image für Ihr Gerät von https://developers.google.com/android/images herunter.
Extrahieren Sie die
vendor_boot.img
:- Die folgenden Befehle verwenden das Pixel 6 Pro UP1A.231005.007.a1 als Beispiel. Ersetzen Sie den Namen der ZIP-Datei durch den Dateinamen des heruntergeladenen Factory-Images.
unzip raven-up1a.231005.007.a1-factory-5d927f3e.zip
cd raven-up1a.231005.007.a1
unzip image-raven-up1a.231005.007.a1.zip vendor_boot.img
Entpacken Sie die
vendor_boot.img
, um die Vendor-Ramdisk zu erhalten.KERNEL_REPO_ROOT/tools/mkbootimg/unpack_bootimg.py --boot_img vendor_boot.img \ --out vendor_boot_out
Kopieren Sie die extrahierte
ramdisk_
Datei in das Pixel-Kernel-Repository.Gerät DEVICE_RAMDISK_PATH Pixel 6 (Pirol)
Pixel 6 Pro (Rabe)prebuilts/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) Kopieren Sie die vendor_ramdisk
aus einem lokal erstellten Android-Plattform-Repository.
Gerät | DEVICE_RAMDISK_PATH |
---|---|
Pixel 6 (Pirol) Pixel 6 Pro (Rabe) | prebuilts/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. Für Geräte 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 neueren Kerneln den Kleaf-Build-Befehl 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 im KERNEL_REPO_ROOT befindet. Um beispielsweise den Kernel für Pixel 6 im Zweig android-gs-raviole-5.10-android14
zu erstellen, würden Sie den folgenden Befehl ausführen:
build_slider.sh
Standardmäßig verwenden die build_ DEVICE .sh
-Skripte den vorgefertigten GKI-Kernel, um den Build-Prozess zu beschleunigen. Wenn Sie den Kernel ändern möchten, legen Sie die Umgebungsvariable BUILD_AOSP_KERNEL=1
fest, um den Kernel stattdessen aus den lokalen Quellen zu erstellen.
Weitere Einzelheiten zum Kernel-Build-System und zur Anpassung des Builds finden Sie in der Kleaf-Dokumentation .
Flashen Sie die Kernel-Images
Hinweis: Wenn Sie die Überprüfung nicht deaktiviert haben, müssen Sie dies tun, bevor Sie den benutzerdefinierten Kernel flashen. Hier ist der Befehl dazu:fastboot oem disable-verification
WARNUNG: Wenn Sie einen benutzerdefinierten Kernel auf einem Plattform-Build flashen, müssen Sie möglicherweise Ihr Gerät löschen, wenn mit dem neuen Kernel ein Downgrade der Sicherheitspatchstufe (SPL) verbunden ist. Durch diesen Vorgang werden alle Ihre personenbezogenen Daten gelöscht. Stellen Sie sicher, dass Sie Ihre Daten vor dem Löschen sichern.fastboot -w
Um die Kernel-Images zu flashen, führen Sie den Befehl fastboot flash
für jede für Ihr Gerät aufgeführte Kernel-Partition aus. Bei dynamischen Partitionen müssen Sie vor dem Flashen einen Neustart im fastbootd
-Modus durchführen.
Gerät | Kernel-Partitionen |
---|---|
Pixel 6 (Pirol) Pixel 6 Pro (Rabe) Pixel 6a (Bluejay) | Stiefel dtbo hersteller_boot Vendor_dlkm (dynamische Partition) |
Pixel 8 (Shiba) Pixel 8 Pro (heiser) Pixel Fold (Felix) Pixel-Tablet (Tangorpro) Pixel 7a (Luchs) Pixel 7 (Panther) Pixel 7 Pro (Gepard) | Stiefel dtbo Vendor_kernel_boot Vendor_dlkm (dynamische Partition) system_dlkm (dynamische Partition) |
Hier sind die Blinkbefehle für Pixel 6 auf 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-Zweig | DIST_DIR |
---|---|
v5.10 | out/mixed/dist |
v5.15 und höher | out/ DEVICE /dist |
Hinweis: Wenn Sie einen seriellen Dongle haben und serielle Protokolle aktivieren möchten, lautet der Befehl:Beispielbefehl für die Verbindung vom Host:fastboot oem uart enable
fastboot oem uart config 3000000
screen -fn /dev/ttyUSB* 3000000
Stellen Sie die Werksbilder wieder her
Um die Werkseinstellungen Ihres Geräts wiederherzustellen, können Sie flash.android.com verwenden.
Legacy-Pixel-Kernel
Als Referenz bietet die Legacy-Pixel-Kernel-Zweigtabelle die Kernel-Repository-Zweige für Pixel 5 und frühere Geräte. Dies sind nicht von GKI unterstützte Geräte.
Legacy-Pixel-Kernelzweige
Gerät | Binärpfad im AOSP-Baum | Repository-Zweige |
---|---|---|
Pixel 5a (Barbet) Pixel 4a (5G) (Brombeer) Pixel 5 (Redfin) | device/google/redbull-kernel | android-msm-redbull-4.19-android14 |
Pixel 4a (Sonnenfisch) | device/google/sunfish-kernel | android-msm-sunfish-4.14-android13-qpr3 |
Pixel 4 (Flamme) 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 (Zander) Pixel 2 XL (Taimen) | device/google/wahoo-kernel | android-msm-wahoo-4.4-android10-qpr3 |
Pixel (Segelfisch) Pixel XL (Marlin) | device/google/marlin-kernel | android-msm-marlin-3.18-pie-qpr2 |