Panduan ini memberikan petunjuk langkah demi langkah tentang cara mendownload, mengompilasi, dan
mem-flash kernel Pixel kustom untuk pengembangan. Berkat GKI, kini Anda dapat
mengupdate kernel secara terpisah dari build platform Android. Langkah-langkah ini
hanya berlaku untuk perangkat Pixel 6 dan yang lebih baru. Hal ini karena Pixel 5 dan
perangkat sebelumnya memerlukan update modul kernel di partisi vendor
,
yang bergantung pada build platform Android untuk perangkat tersebut. Tabel cabang kernel Pixel
yang didukung GKI menyertakan
cabang manifes repositori kernel untuk setiap perangkat Pixel yang didukung GKI. Lihat
bagian Kernel Pixel Lama untuk cabang manifes kernel Pixel 5 dan
sebelumnya.
Cabang kernel Pixel yang didukung GKI
Perangkat | Jalur biner dalam hierarki AOSP | Cabang repositori | Kernel GKI |
---|---|---|---|
Pixel 9 Pro Fold (comet) | device/google/comet-kernels/6.1 | android-gs-comet-6.1-android15-qpr1 | android15-6.1 |
Pixel 9 (tokay) Pixel 9 Pro (caiman) Pixel 9 Pro XL (komodo) |
device/google/caimito-kernels/6.1 | android-gs-caimito-6.1-android15-qpr1 | android15-6.1 |
Pixel 8a (akita) | device/google/akita-kernels/5.15 | android-gs-akita-5.15-android15-qpr1 | android15-5.15 |
Pixel 8 (shiba) 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 |
Pixel 7a (lynx) | device/google/lynx-kernels/5.10 | android-gs-lynx-5.10-android15-qpr1 | android15-5.10 |
Pixel 7 (panther) Pixel 7 Pro (cheetah) |
device/google/pantah-kernels/5.10 | android-gs-pantah-5.10-android15-qpr1 | android15-5.10 |
Pixel 6a (bluejay) | device/google/bluejay-kernels/5.10 | android-gs-bluejay-5.10-android15-qpr1 | android15-5.10 |
Pixel 6 (oriole) Pixel 6 Pro (raven) |
device/google/raviole-kernels/5.10 | android-gs-raviole-5.10-android15-qpr1 | android15-5.10 |
Selain kernel yang didukung pabrik, perangkat Pixel 6 dan 6 Pro hanya didukung untuk tujuan pengembangan GKI di cabang kernel Android Common yang disertakan dalam tabel Kombinasi Platform Android dan Kernel Pixel 6/6 Pro yang Didukung. 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 untuk mengupdate kernel di perangkat Pixel 6 dan yang lebih baru:
Mem-flash perangkat menggunakan flash.android.com
- Buka flash.android.com
- Pilih build Android berdasarkan kombinasi Platform Android dan Kernel yang didukung.
- Pilih opsi berikut:
- Hapus Total Perangkat
- Mem-flash Semua Partisi secara Paksa
- Menonaktifkan Verifikasi
- Tekan tombol Instal build untuk melakukan flash perangkat.
Mendownload dan mengompilasi kernel
Menyinkronkan repositori kernel
Jalankan perintah berikut untuk mendownload kode sumber kernel. Lihat tabel Kombinasi Platform Android dan Kernel Pixel 6/6 Pro yang Didukung untuk Pixel KERNEL_MANIFEST_BRANCH.
repo init -u https://android.googlesource.com/kernel/manifest -b KERNEL_MANIFEST_BRANCH
repo sync -c --no-tags
Memperbarui ramdisk vendor
Perbarui file vendor_ramdisk-DEVICE.img
di
repositori kernel agar cocok dengan build platform Android yang di-flash di
perangkat. Ada beberapa opsi yang dapat Anda ikuti.
Opsi 1) Ekstrak image ramdisk vendor dari setelan pabrik Pixel.
Download setelan pabrik yang didukung untuk perangkat Anda dari https://developers.google.com/android/images.
Ekstrak
vendor_boot.img
:- Perintah berikut menggunakan Pixel 6 Pro AP1A.240505.004 sebagai contoh. Ganti nama file zip dengan nama file image factory yang Anda download.
unzip raven-ap1a.240505.004-factory-9d783215.zip
cd raven-ap1a.240505.004
unzip image-raven-ap1a.240505.004.zip vendor_boot.img
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
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 di-build 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
yang disebut Kleaf. Untuk perangkat yang menggunakan android13-5.15
dan yang lebih baru, kernel
harus di-build menggunakan Kleaf.
Untuk Pixel 6 dan 6 Pro dengan kernel android14
dan yang lebih baru, jalankan perintah build
Kleaf:
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 perintah build
Kleaf:
tools/bazel run --lto=thin //gs/google-modules/soc-modules:slider_dist
Untuk semua kernel Pixel lainnya, jalankan skrip build_DEVICE.sh
yang ditemukan di KERNEL_REPO_ROOT
. Pada umumnya, DEVICE
harus berupa nama kode yang
cocok dengan nama kode yang digunakan di kolom Binary path in AOSP tree pada
tabel GKI supported Pixel kernel branches. Ini
dapat berupa nama kode satu perangkat, seperti "akita" (Pixel 8a), atau nama kode
yang mewakili sekelompok perangkat terkait yang menggunakan kernel yang sama, seperti
"caimito" yang berarti Pixel 9 (tokay), Pixel 9 Pro (caiman), dan Pixel 9 Pro XL
(komodo). Untuk rilis android14
dan yang lebih lama, gunakan build_slider.sh
untuk Pixel
6 dan Pixel 6 Pro, serta build_cloudripper.sh
untuk Pixel 7 dan Pixel 7 Pro.
Misalnya, untuk mem-build kernel untuk Pixel 6 di cabang
android-gs-raviole-5.10-android14
, Anda akan menjalankan perintah:
build_slider.sh
Secara default, skrip build_DEVICE.sh
menggunakan
kernel GKI bawaan untuk mempercepat proses build. Jika Anda ingin mengubah
kernel inti, tetapkan variabel lingkungan BUILD_AOSP_KERNEL=1
untuk mem-build
kernel dari sumber lokal.
Untuk mengetahui detail selengkapnya tentang sistem build kernel dan cara menyesuaikan build, lihat Kleaf - Building Android Kernels with Bazel.
Mem-flash image kernel
Catatan: Jika belum menonaktifkan verifikasi, Anda harus melakukannya sebelum mem-flash kernel kustom. Berikut adalah perintah untuk melakukannya:fastboot oem disable-verification
PERINGATAN: Jika Anda mem-flash kernel kustom di atas build platform, Anda mungkin perlu menghapus total perangkat jika ada downgrade tingkat patch keamanan (SPL) yang terkait dengan kernel baru. Proses ini akan menghapus semua data pribadi Anda. Pastikan Anda mencadangkan data sebelum menghapus total.fastboot -w
Untuk mem-flash image kernel, jalankan perintah fastboot flash
untuk setiap partisi kernel
yang tercantum untuk perangkat Anda. Untuk partisi dinamis, Anda harus memulai ulang
ke mode fastbootd
sebelum melakukan flashing.
Perangkat | Partisi Kernel |
---|---|
Pixel 6
(oriole) Pixel 6 Pro (raven) Pixel 6a (bluejay) |
boot 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 (cheetah) |
boot dtbo vendor_kernel_boot vendor_dlkm (partisi dinamis) system_dlkm (partisi dinamis) |
Berikut adalah perintah flashing 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 serial, perintahnya adalah:Contoh perintah untuk terhubung dari host: fastboot oem uart enable
fastboot oem uart config 3000000
screen -fn /dev/ttyUSB* 3000000
Memulihkan image pabrik
Untuk memulihkan perangkat kembali ke setelan pabrik, Anda dapat menggunakan flash.android.com.
Kernel Pixel lama
Sebagai referensi, tabel cabang kernel Pixel lama menyediakan cabang repositori kernel untuk perangkat Pixel 5 dan yang lebih lama. Perangkat ini tidak didukung GKI.
Cabang kernel Pixel lama
Perangkat | Jalur biner dalam hierarki AOSP | Cabang repositori |
---|---|---|
Pixel 5a (barbet) Pixel 4a (5G) (bramble) Pixel 5 (redfin) |
device/google/redbull-kernel | android-msm-redbull-4.19-android14-qpr3 |
Pixel 4a (sunfish) | device/google/sunfish-kernel | android-msm-sunfish-4.14-android13-qpr3 |
Pixel 4 (flame) Pixel 4 XL (coral) |
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 (garis biru) Pixel 3 XL (garis silang) |
device/google/crosshatch-kernel | android-msm-crosshatch-4.9-android12 |
Pixel 2 (walleye) Pixel 2 XL (taimen) |
device/google/wahoo-kernel | android-msm-wahoo-4.4-android10-qpr3 |
Pixel (sailfish) Pixel XL (marlin) |
device/google/marlin-kernel | android-msm-marlin-3.18-pie-qpr2 |