Membangun kernel Pixel

Panduan ini menyediakan petunjuk langkah demi langkah tentang cara mengunduh, mengompilasi, dan melakukan flash kernel Pixel kustom untuk pengembangan. Karena GKI, sekarang Anda dapat melakukan mengupdate kernel secara terpisah dari build platform Android. Langkah-langkah ini adalah hanya berlaku untuk perangkat Pixel 6 dan yang lebih baru. Hal ini dikarenakan Pixel 5 dan perangkat sebelumnya memerlukan update modul kernel pada partisi vendor, yang bergantung pada build platform Android untuk perangkat tersebut. GKI Tabel Cabang Pixel Kernel yang didukung mencakup cabang manifes repositori kernel untuk setiap perangkat Pixel yang didukung GKI. Rujuk ke bagian Kernel Pixel Lama untuk Pixel 5 dan cabang manifes {i>kernel<i} sebelumnya.

Cabang kernel Pixel yang didukung GKI
Perangkat Jalur biner dalam hierarki AOSP Cabang repositori Kernel GKI
Pixel 9 Pro Fold (komet) perangkat/google/comet-kernel android-gs-comet-6.1-android14-qpr3-d1 Android 14-6.1

Pixel 9 (tokay)
Pixel 9 Pro (caiman)
Pixel 9 Pro XL (komodo) | device/google/caimito-kernel | android-gs-caimito-6.1-android14-qpr3-d1 | Android 14-6.1 Pixel 8a (akita) | device/google/akita-kernel | android-gs-akita-5.15-android14-qpr3 | Android 14-5.15 Pixel 8 (shiba)
Pixel 8 Pro (husky) | perangkat/google/shusky-kernel | android-gs-shusky-5.15-android14-qpr3 | Android 14-5.15 Pixel Fold (felix) | device/google/felix-kernel | android-gs-felix-5.10-android14-qpr3 | Android 13-5.10 Pixel Tablet (tangorpro) | device/google/tangorpro-kernel | android-gs-tangorpro-5.10-android14-qpr3 | Android 13-5.10 Pixel 7a (lynx) | perangkat/google/lynx-kernel | android-gs-lynx-5.10-android14-qpr3 | Android 13-5.10 Pixel 7 (panther)
Pixel 7 Pro (cheetah) | perangkat/google/pantah-kernel | android-gs-pantah-5.10-android14-qpr3 | Android 13-5.10 Pixel 6a (bluejay) | perangkat/google/bluejay-kernel | android-gs-bluejay-5.10-android14-qpr3 | Android 13-5.10 Pixel 6 (oriole)
Pixel 6 Pro (raven) | device/google/raviole-kernel | android-gs-raviole-5.10-android14-qpr3 | Android 13-5.10

Selain kernel yang didukung pabrik, perangkat Pixel 6 dan 6 Pro didukung untuk tujuan pengembangan GKI hanya pada kernel Android Common cabang yang disertakan dalam Platform Android dan Kernel Pixel 6/6 Pro yang didukung Kombinasi. Karena perbedaan UAPI vendor antara HAL platform Android dan driver kernel Pixel, tabel ini menyediakan kombinasi build yang didukung.

Kombinasi kernel dan platform Android Pixel 6/6 Pro yang didukung
Cabang Manifes Kernel Pixel Cabang GKI Build Platform Android Dukungan aosp-main?
gs-android-gs-raviole-mainline android-mainline (v6.8) AP1A.240505.004 (11583682) Ya
android14-gs-pixel-6.1 android14-6.1 AP1A.240505.004 (11583682) Ya
gs-android13-gs-raviole-5.15 android13-5.15 TQ1A.230205.002 (9471150) Tidak

Siapkan perangkat Pixel Anda

Diagram alir berikut menjelaskan proses update kernel di Pixel Perangkat 6 dan yang lebih baru:

**Gambar 1.** Diagram Alir Pembaruan Kernel

Mem-flash perangkat menggunakan flash.android.com

  1. Buka flash.android.com
  2. Memilih build Android berdasarkan Platform Android dan Kernel yang didukung kombinasi.
  3. Pilih opsi berikut:
    • Hapus Total Perangkat
    • Paksa Flash semua Partisi
    • Nonaktifkan Verifikasi
  4. Tekan tombol Instal build untuk melakukan flash perangkat.

**Gambar 2.** Contoh Stasiun Flash

Mendownload dan mengompilasi kernel

Menyinkronkan repositori kernel

Jalankan perintah berikut untuk mendownload kode sumber kernel. Lihat Platform Android dan Kernel untuk Pixel 6/6 Pro yang Didukung Tabel kombinasi untuk Pixel KERNEL_MANIFEST_BRANCH.

repo init -u https://android.googlesource.com/kernel/manifest -b KERNEL_MANIFEST_BRANCH
repo sync -c --no-tags

Mengupdate ramdisk vendor

Update file vendor_ramdisk-DEVICE.img di repositori kernel agar sesuai dengan build platform Android yang di-flash pada perangkat seluler. Ada beberapa opsi yang dapat Anda ikuti.

Opsi 1) Ekstrak image ramdisk vendor dari setelan pabrik Pixel.
  1. Download setelan pabrik yang didukung untuk perangkat Anda dari https://developers.google.com/android/images.

  2. Ekstrak vendor_boot.img:

    • Perintah berikut menggunakan Pixel 6 Pro AP1A.240505.004 sebagai contoh. Ganti nama {i>zipfile<i} dengan nama file {i>factory image<i} yang Anda unduh.
      unzip raven-ap1a.240505.004-factory-9d783215.zip
    
      cd raven-ap1a.240505.004
    
      unzip image-raven-ap1a.240505.004.zip vendor_boot.img
    
  3. Ekstrak vendor_boot.img untuk mendapatkan ramdisk vendor.

      KERNEL_REPO_ROOT/tools/mkbootimg/unpack_bootimg.py --boot_img vendor_boot.img \
          --out vendor_boot_out
    
  4. Salin file vendor-ramdisk-by-name/ramdisk_ yang diekstrak ke repositori kernel Pixel.

    Perangkat DEVICE_RAMDISK_PATH
    Pixel 6 (oriole)
    Pixel 6 Pro (raven)
    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
    
Opsi 2) Salin vendor_ramdisk dari repositori platform Android yang dibuat secara lokal.
Perangkat DEVICE_RAMDISK_PATH
Pixel 6 (oriole)
Pixel 6 Pro (raven)
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

Mengompilasi kernel (Kleaf)

Di Android 13, skrip build.sh diganti dengan sistem build kernel baru disebut Kleaf. Untuk perangkat yang menggunakan android13-5.15 dan yang lebih baru, {i>kernel<i} harus dibangun menggunakan Kleaf.

Untuk Pixel 6 dan 6 Pro dengan kernel android14 dan yang lebih baru, jalankan build Kleaf berikut:

tools/bazel run --config=fast --config=stamp //private/google-modules/soc/gs:slider_dist

Untuk Pixel 6 dan 6 Pro dengan kernel android13-5.15, jalankan build Kleaf berikut:

tools/bazel run --lto=thin //gs/google-modules/soc-modules:slider_dist

Untuk semua kernel Pixel lainnya, jalankan skrip build_DEVICE.sh yang ada di KERNEL_REPO_ROOT. Sebagai misalnya, untuk membangun kernel Pixel 6 di cabang android-gs-raviole-5.10-android14, Anda akan menjalankan perintah:

build_slider.sh

Secara default, skrip build_DEVICE.sh menggunakan {i>kernel<i} GKI bawaan untuk mempercepat proses pembangunan. Jika Anda ingin memodifikasi kernel inti, lalu setel variabel lingkungan BUILD_AOSP_KERNEL=1 untuk membangun {i>kernel<i} dari sumber lokal.

Untuk detail selengkapnya tentang sistem build {i> kernel<i} dan cara menyesuaikan build, lihat Kleaf - Membuat Kernel Android dengan Bazel.

Melakukan flash image kernel

Catatan: Jika belum menonaktifkan verifikasi, Anda harus menonaktifkannya sebelum mem-flash {i>kernel<i} kustom. Berikut adalah perintah untuk melakukannya:
fastboot oem disable-verification
PERINGATAN: Jika Anda melakukan flash kernel kustom pada build platform, maka Anda mungkin perlu menghapus perangkat Anda jika ada keamanan {i>downgrade level <i}level{i> patch level<i} (SPL) yang terkait dengan {i>kernel<i} baru. Proses ini akan menghapus semua data pribadi Anda. Pastikan untuk mencadangkan data Anda sebelum dihapus total.
fastboot -w

Untuk melakukan flash image kernel, jalankan perintah fastboot flash untuk setiap kernel partisi yang terdaftar untuk perangkat Anda. Untuk partisi dinamis, Anda perlu memulai ulang ke mode fastbootd sebelum berkedip.

Perangkat Partisi {i>Kernel<i}
pixel 6 (oriole)
Pixel 6 Pro (gagak)
Pixel 6a (bluejay)
booting
dtbo
vendor_boot
vendor_dlkm (partisi dinamis)
Pixel 8 (shiba)
Pixel 8 Pro (husky)
Pixel Fold (felix)
Pixel Tablet (tangorpro)
Pixel 7a (lynx)
Pixel 7 (panther)
Pixel 7 Pro (citah)
booting
dtbo
vendor_kernel_boot
vendor_dlkm (partisi dinamis)
system_dlkm (partisi dinamis)

Berikut adalah perintah flash untuk Pixel 6 di 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

Image kernel dapat ditemukan di DIST_DIR.

Cabang kernel DIST_DIR
v5.10 out/mixed/dist
v5.15 dan yang lebih baru out/DEVICE/dist
Catatan: Jika Anda memiliki dongle serial dan ingin mengaktifkan log, perintahnya adalah:
fastboot oem uart enable
fastboot oem uart config 3000000
Contoh perintah untuk terhubung dari host:
screen -fn /dev/ttyUSB* 3000000

Pulihkan setelan pabrik

Untuk memulihkan perangkat ke setelan pabrik, Anda dapat menggunakan flash.android.com.

Kernel Pixel lama

Sebagai referensi, cabang kernel Pixel lama menyediakan cabang repositori kernel untuk perangkat Pixel 5 dan versi sebelumnya. Ini adalah perangkat yang didukung non-GKI.

Cabang kernel Pixel lama
Perangkat Jalur biner dalam hierarki AOSP Cabang repositori
Pixel 5a (barbet)
Pixel 4a (5G) (bramble)
Pixel 5 (redfin)
perangkat/google/redbull-kernel android-msm-redbull-4.19-android14-qpr3
Pixel 4a (ikan sunfish) perangkat/google/sunfish-kernel android-msm-sunfish-4.14-android13-qpr3
Pixel 4 (flame)
Pixel 4 XL (koral)
perangkat/google/coral-kernel android-msm-coral-4.14-android13
Pixel 3a (sargo)
Pixel 3a XL (bonito)
perangkat/google/bonito-kernel android-msm-bonito-4.9-android12L
Pixel 3 (blueline)
Pixel 3 XL (crosshatch)
perangkat/google/crosshatch-kernel android-msm-crosshatch-4.9-android12
Pixel 2 (walleye)
Pixel 2 XL (taimen)
perangkat/google/wahoo-kernel android-msm-wahoo-4.4-android10-qpr3
Pixel (ikan layar)
Pixel XL (marlin)
perangkat/google/marlin-kernel android-msm-marlin-3.18-pie-qpr2