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 perangkat Pixel 5 dan yang lebih lama mengharuskan Anda mengupdate modul kernel di partisi vendor, yang bergantung pada build platform Android untuk perangkat tersebut. Tabel cabang kernel Pixel yang didukung
GKI
mencakup cabang manifes repositori kernel untuk setiap perangkat Pixel yang didukung GKI. Lihat
Kernel Pixel Lama untuk cabang manifes kernel Pixel 5 dan yang lebih lama.
Pixel 6 dan Pixel 6 Pro juga didukung di kernel Linux upstream dan dapat melakukan booting ke perintah shell perangkat hanya dengan driver upstream. Lihat Mem-build dan mem-flash kernel Pixel upstream untuk mengetahui detail selengkapnya.
Mem-build dan mem-flash kernel Pixel GKI
Bagian ini memberikan langkah-langkah untuk menyinkronkan, mem-build, dan mem-flash cabang kernel yang didukung GKI. Tabel berikut memberikan pemetaan perangkat Pixel yang didukung dan cabang repositori kernel produksi masing-masing.
Cabang kernel Pixel yang didukung GKI
| Perangkat | Cabang repositori | Kernel GKI |
|---|---|---|
| Pixel 9a (tegu) | android-gs-tegu-6.1-android16 | android14-6.1 |
| Pixel 9 Pro Fold (comet) | android-gs-comet-6.1-android16 | android14-6.1 |
| Pixel 9 (tokay) Pixel 9 Pro (caiman) Pixel 9 Pro XL (komodo) |
android-gs-caimito-6.1-android16 | android14-6.1 |
| Pixel 8a (akita) | android-gs-akita-6.1-android16 | android14-6.1 |
| Pixel 8 (shiba) Pixel 8 Pro (husky) |
android-gs-shusky-6.1-android16 | android14-6.1 |
| Pixel Fold (felix) | android-gs-felix-6.1-android16 | android14-6.1 |
| Pixel Tablet (tangorpro) | android-gs-tangorpro-6.1-android16 | android14-6.1 |
| Pixel 7a (lynx) | android-gs-lynx-6.1-android16 | android14-6.1 |
| Pixel 7 (panther) Pixel 7 Pro (cheetah) |
android-gs-pantah-6.1-android16 | android14-6.1 |
| Pixel 6a (bluejay) | android-gs-bluejay-6.1-android16 | android14-6.1 |
| Pixel 6 (oriole) Pixel 6 Pro (raven) |
android-gs-raviole-6.1-android16 | android14-6.1 |
Selain kernel yang didukung factory, perangkat Pixel 6 dan Pixel 6 Pro hanya didukung untuk tujuan pengembangan GKI di cabang kernel Umum Android yang disertakan dalam tabel Kombinasi platform Android dan kernel Pixel 6 dan Pixel 6 Pro yang Didukung. Karena perbedaan UAPI vendor antara HAL platform Android dan driver kernel Pixel, tabel ini menyediakan kombinasi build yang didukung.
Kombinasi platform Android dan kernel Pixel 6 dan Pixel 6 Pro yang didukung
| Cabang Manifes Kernel Pixel | Cabang GKI | Build Platform Android |
|---|---|---|
| gs-android-gs-raviole-mainline | android-mainline | android-latest-release |
| gs-android16-6.12-gs101 | android16-6.12 | android-latest-release |
| gs-android13-gs-raviole-5.15 | android13-5.15 | TQ1A.230205.002 (9471150) |
Menyiapkan 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 dan Kernel Android yang didukung.
- Untuk
android-latest-release, pilih "Back to Public", Canary, atau Beta.
- Untuk
- Pilih opsi berikut:
- Hapus Perangkat
- Paksa Flash semua Partisi
- Nonaktifkan Verifikasi
- Tekan tombol Instal build untuk mem-flash perangkat.
Menyinkronkan repositori kernel
Jalankan perintah berikut untuk mendownload kode sumber kernel. Lihat tabel Kombinasi Platform dan Kernel Android Pixel 6 dan Pixel 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 untuk memperbarui file vendor_ramdisk-DEVICE.img. Gunakan opsi (1) jika Anda menggunakan Android 15 QPR2 (BP11.241025.006) atau yang lebih baru. Jika tidak, gunakan opsi (2).
Opsi 1) Hanya memperbarui bit ramdisk DTB dan DLKM dari partisi vendor_boot
Mulai dari fastboot versi 35.0.2-12583183, Anda dapat langsung mem-flash ramdisk DTB dan DLKM di partisi
vendor_boot. Upgrade alat platform Android Anda ke v36.0.0 atau yang lebih baru untuk menggunakan opsi ini. Jalankan perintah berikut untuk melakukannya:$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platform-tools"Ikuti petunjuk untuk mem-flash DTB dan
vendor_boot:dlkmdi Mem-flash image kernel.Opsi 2) Mengekstrak image ramdisk vendor dari image 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 setelan pabrik yang Anda download.
unzip raven-ap1a.240505.004-factory-9d783215.zipcd raven-ap1a.240505.004unzip image-raven-ap1a.240505.004.zip vendor_boot.imgBuka kemasan
vendor_boot.imguntuk mendapatkan ramdisk vendor.KERNEL_REPO_ROOT/tools/mkbootimg/unpack_bootimg.py --boot_img vendor_boot.img \ --out vendor_boot_outSalin 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
Mengompilasi kernel
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 memudahkan, Anda dapat menjalankan build_DEVICE.sh
skrip yang ditemukan di KERNEL_REPO_ROOT. Dalam sebagian besar kasus, DEVICE harus berupa nama kode, yang dapat berupa nama kode satu perangkat, seperti "akita" (Pixel 8a), atau nama kode yang mewakili grup 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 di cabang kernel produksi, skrip
build_DEVICE.sh menggunakan kernel GKI yang telah di-build sebelumnya
untuk mempercepat proses build. Jika Anda ingin mengubah kernel inti, tetapkan variabel lingkungan BUILD_AOSP_KERNEL=1 untuk mem-build kernel dari sumber lokal. Cabang kernel pengembangan secara langsung mem-build sumber kernel secara default.
Untuk mengetahui detail selengkapnya tentang sistem build kernel dan cara menyesuaikan build, lihat Kleaf - Mem-build Kernel Android dengan Bazel.
Mem-flash image kernel
Catatan: Jika Anda belum menonaktifkan verifikasi, Anda harus melakukannya sebelum mem-flash kernel kustom. Berikut perintah untuk melakukannya:fastboot oem disable-verification
PERINGATAN: Jika Anda mem-flash kernel kustom di atas build platform, Anda mungkin perlu menghapus data perangkat jika ada penurunan tingkat patch keamanan (SPL) yang terkait dengan kernel baru. Proses ini akan menghapus semua data pribadi Anda. Pastikan untuk mencadangkan data Anda sebelum menghapus data.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 melakukan booting ulang ke mode fastbootd sebelum mem-flash.
| Perangkat | Partisi Kernel |
|---|---|
| Pixel 6 (oriole) Pixel 6 Pro (raven) Pixel 6a (bluejay) |
boot dtbo vendor_boot atau vendor_boot:dlkm vendor_dlkm (partisi dinamis) |
| Pixel 9 (tegu) Pixel 9 Pro Fold (comet) Pixel 9 (tokay) Pixel 9 Pro (caiman) Pixel 9 Pro XL (komodo) 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 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 --dtb out/slider/dist/dtb.img vendor_boot:dlkm out/slider/dist/initramfs.img
fastboot reboot fastboot
fastboot flash vendor_dlkm out/slider/dist/vendor_dlkm.img
Untuk Pixel 6, Pixel 6 Pro, dan Pixel 6a, jika Anda memperbarui vendor_ramdisk di
Memperbarui ramdisk vendor, gunakan
perintah berikut untuk memperbarui partisi vendor_boot:
fastboot flash vendor_boot out/slider/dist/vendor_boot.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 enablefastboot oem uart config 3000000screen -fn /dev/ttyUSB* 3000000
Memulihkan image pabrik
Untuk memulihkan perangkat ke image pabrik, Anda dapat menggunakan flash.android.com.
Mem-build dan mem-flash kernel Pixel upstream
Karena Pixel 6 dan Pixel 6 Pro didukung di kernel Linux upstream, Anda dapat menggunakan android-mainline hanya dengan driver upstream untuk melakukan booting ke perintah shell perangkat untuk pengembangan kernel. Bagian ini memberikan langkah-langkah untuk menyinkronkan, mem-build, dan mem-flash kernel Pixel 6 dan Pixel 6 Pro dari android-mainline.
Ikuti langkah-langkah berikutnya untuk memulai.
- Siapkan perangkat Anda dengan mengikuti langkah-langkah di Menyiapkan perangkat Pixel Anda
- Sinkronkan cabang manifes kernel
common-android-mainlinedengan mengikuti langkah-langkah di Menyinkronkan repositori kernel. Konfigurasi target build Kleaf ditentukan di jalur
KERNEL_REPO_ROOT/devices/google/raviole. Untuk mengompilasi target buildraviole_upstream, jalankan perintah Kleaf:tools/bazel run //devices/google/raviole:raviole_upstream_distMirip dengan kernel produksi, nonaktifkan verifikasi dan hapus data perangkat Anda saat mem-flash kernel kustom di atas image pabrik Android. Lihat catatan di Mem-flash image kernel untuk mengetahui detail selengkapnya.
Dalam mode fastboot, jalankan perintah berikut untuk mem-flash image kernel:
fastboot flash boot out/raviole_upstream/dist/boot.img fastboot flash dtbo out/raviole_upstream/dist/dtbo.img fastboot flash --dtb out/raviole_upstream/dist/dtb.img \ vendor_boot:dlkm out/raviole_upstream/dist/initramfs.imgUntuk mengakses perintah shell perangkat, Anda dapat melakukan booting ulang ke mode pemulihan dengan menjalankan perintah:
fastboot reboot recoveryBuka shell perangkat dengan menjalankan perintah
adb shell. Akses root juga dapat digunakan dengan menjalankan perintahadb root.
Kernel Pixel lama
Sebagai referensi, tabel cabang kernel Pixel Lama menyediakan cabang repositori kernel untuk perangkat Pixel 5 dan yang lebih lama. Ini adalah perangkat yang tidak didukung GKI.
Cabang kernel Pixel lama
| Perangkat | Jalur program biner di pohon 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 (blueline) Pixel 3 XL (crosshatch) |
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 |