Pixel-Kernel erstellen

Dieser Leitfaden enthält eine detaillierte Anleitung zum Herunterladen, Zusammenstellen einen benutzerdefinierten Pixel-Kernel für die Entwicklung flashen. Dank GKI ist es jetzt möglich, Aktualisieren Sie den Kernel unabhängig vom Android-Plattform-Build. Diese Schritte sind gilt nur für Pixel 6 und neuere Modelle. Das liegt daran, dass Pixel 5 und Bei früheren Geräten müssen die Kernelmodule der Partition vendor aktualisiert werden. Dies ist abhängig vom Android-Plattform-Build für diese Geräte. Das GKI Die Tabelle mit den unterstützten Pixel-Kernel-Zweigen enthält die Manifest-Branch des Kernel-Repositorys für jedes von GKI unterstützte Pixel-Gerät. Weitere Informationen finden Sie unter im Abschnitt Ältere Pixel-Kernels für Pixel 5 und früheren Kernel-Manifest-Zweigen.

Von GKI unterstützte Pixel-Kernel-Zweige
Gerät Binärpfad im AOSP-Baum Repository-Zweige GKI-Kernel
Google Pixel 9 Pro Fold (comet) device/google/comet-kernel android-gs-comet-6.1-android14-qpr3-d1 android14–6.1

Pixel 9 (Tokay)
Pixel 9 Pro (Kaiman)
Pixel 9 Pro XL (Komodo) | device/google/caimito-kernel | android-gs-caimito-6.1-android14-qpr3-d1 | android14–6.1 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) | device/google/shusky-kernel | android-gs-shusky-5.15-android14-qpr3 | android14–5.15 Google Pixel Fold (Felix) | device/google/felix-kernel | android-gs-felix-5.10-android14-qpr3 | android13–5.10 Pixel Tablet (tangorpro) | device/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) | device/google/raviole-kernel | android-gs-raviole-5.10-android14-qpr3 | android13–5.10

Zusätzlich zu den werkseitig unterstützten Kerneln sind die Pixel 6- und 6 Pro-Geräte Wird nur für GKI-Entwicklungszwecke im Android Common-Kernel unterstützt in der unterstützten Android-Plattform für Pixel 6/6 Pro und im Kernel enthalten Tabelle „Kombinationen“. Aufgrund von Unterschieden bei der UAPI des Anbieters zwischen den HALs der Android-Plattform und den Pixel-Kernel-Treibern enthält, enthält die Tabelle den unterstützten Build-Kombinationen.

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 der Vorgang zum Aktualisieren des Kernels auf Pixel beschrieben. Geräte mit Version 6 und höher:

**Abbildung 1.** Flussdiagramm für Kernel-Aktualisierung

Gerät über flash.android.com flashen

  1. Rufen Sie flash.android.com auf.
  2. Android-Build basierend auf der unterstützten Android-Plattform und Kernel auswählen Kombinationen.
  3. Wählen Sie die folgenden Optionen aus: <ph type="x-smartling-placeholder">
      </ph>
    • Gerätedaten löschen
    • Flash für alle Partitionen erzwingen
    • Bestätigung deaktivieren
  4. Klicken Sie auf Install build (Build installieren), um das Gerät zu flashen.

**Abbildung 2.** Beispiel für Flash Station

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 Unterstützte Android-Plattform und Kernel auf Pixel 6/6 Pro Tabelle mit Kombinationen 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 entsprechend dem Android-Plattform-Build, der auf der . Dafür gibt es mehrere Möglichkeiten.

Option 1: Extrahieren Sie das Ramdisk-Image des Anbieters aus dem Pixel-Factory Image.
  1. Laden Sie das unterstützte Factory Image für Ihr Gerät herunter: https://developers.google.com/android/images auf.

  2. Extrahieren Sie vendor_boot.img:

    • Mit den folgenden Befehlen wird das Pixel 6 Pro verwendet AP1A.240505.004. Ersetzen Sie die ZIP-Datei-Name durch den Dateinamen des heruntergeladenen Factory-Images.
      unzip raven-ap1a.240505.004-factory-9d783215.zip
    
      cd raven-ap1a.240505.004
    
      unzip image-raven-ap1a.240505.004.zip vendor_boot.img
    
  3. 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
    
  4. 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 ersetzt mit dem Namen Kleaf. Bei Geräten mit android13-5.15 und höher: sollte mit Kleaf erstellt werden.

Führen Sie für Pixel 6 und 6 Pro mit android14 und neueren Kerneln den Kleaf-Build aus. Befehl:

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 aus. Befehl:

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. Für um den Kernel für Pixel 6 auf dem Zweig android-gs-raviole-5.10-android14, würden Sie folgenden Befehl ausführen:

build_slider.sh

Standardmäßig verwenden die build_DEVICE.sh-Skripts die Methode GKI-Kernel zur Beschleunigung des Build-Prozesses. Wenn Sie den Parameter Core-Kernels aktivieren möchten, und legen Sie dann die Umgebungsvariable BUILD_AOSP_KERNEL=1 fest, den Kernel aus den lokalen Quellen.

Weitere Informationen zum Kernel-Build-System und zur Anpassung des Builds Weitere Informationen finden Sie unter Kleaf – Building Android Kernels with Base.

Kernel-Images blinken

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder"></ph> Hinweis:Wenn Sie die Bestätigung nicht deaktiviert haben, müssen Sie das jetzt nachholen. bevor der benutzerdefinierte Kernel geflasht wird. Dazu verwenden Sie folgenden Befehl:
fastboot oem disable-verification
<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder"></ph> WARNUNG: Wenn Sie einen benutzerdefinierten Kernel auf Plattform-Build ist, müssen Sie möglicherweise die Daten auf Ihrem Gerät löschen, Patch-Level-Downgrade (SPL) für den neuen Kernel. Dabei werden alle deine persönlichen Daten gelöscht. Daten sichern bevor die Daten gelöscht werden.
fastboot -w

Führen Sie zum Flashen der Kernel-Images den Befehl fastboot flash für jeden Kernel aus Partition für Ihr Gerät aufgeführt. Bei dynamischen Partitionen müssen Sie einen Neustart durchführen vor dem Blinken in den fastbootd-Modus.

Gerät Kernelpartitionen
Google Pixel 6 (oriole)
Pixel 6 Pro (Rabe)
Pixel 6a (Blauhäher)
boot
dtbo
vendor_boot
vendor_dlkm (dynamische Partition)
Pixel 8 (Shiba)
Pixel 8 Pro (Husky)
Pixel Fold (Felix)
Pixel Tablets (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
<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder"></ph> Hinweis:Wenn Sie einen seriellen Dongle haben und serielle Dongle aktivieren möchten, loggen, lautet der Befehl:
fastboot oem uart enable
fastboot oem uart config 3000000
Beispielbefehl zum Herstellen einer Verbindung vom Host aus:
screen -fn /dev/ttyUSB* 3000000
.

Factory Images wiederherstellen

Wenn Sie Ihr Gerät auf die werkseitigen Images zurücksetzen möchten, verwenden Sie flash.android.com auf.

Alte Pixel-Kernel

Zur Erinnerung: Die Legacy-Pixel-Kernel-Zweige Die Tabelle 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