Erstellen Sie Pixelkerne

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:

**Abbildung 1.** Kernel-Update-Flussdiagramm

Flashen Sie das Gerät mit flash.android.com

  1. Navigieren Sie zu flash.android.com
  2. Wählen Sie den Android-Build basierend auf den unterstützten Android-Plattform- und Kernel-Kombinationen aus.
  3. Wählen Sie die folgenden Optionen:
    • Wischgerät
    • Flash aller Partitionen erzwingen
    • Deaktivieren Sie die Überprüfung
  4. Klicken Sie auf die Schaltfläche „Build installieren“ , um das Gerät zu flashen.

**Abbildung 2.** Beispiel einer Flash-Station

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 .
  1. Laden Sie das unterstützte Factory-Image für Ihr Gerät von https://developers.google.com/android/images herunter.

  2. 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
    
  3. 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
    
  4. 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:
fastboot oem uart enable
fastboot oem uart config 3000000
Beispielbefehl für die Verbindung vom Host:
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