Panduan ini memberikan petunjuk langkah demi langkah tentang cara mendownload, mengompilasi, dan mem-flash kernel Pixel kustom untuk pengembangan. Berkat GKI, kini kernel dapat diupdate 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 memerlukan update 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 bagian Kernel Pixel Lama untuk cabang manifes kernel Pixel 5 dan yang lebih lama.
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 (komet) | 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 pabrikan, perangkat Pixel 6 dan 6 Pro hanya didukung untuk tujuan pengembangan GKI di cabang kernel Umum Android yang disertakan dalam tabel Kombinasi Kernel dan Platform Android Pixel 6/6 Pro yang Didukung. Karena perbedaan UAPI vendor antara HAL platform Android dan driver kernel Pixel, tabel ini memberikan kombinasi build yang didukung.
Kombinasi kernel dan platform Android Pixel 6/6 Pro yang didukung
Cabang Manifes Kernel Pixel | Cabang GKI | Build Platform Android |
---|---|---|
gs-android-gs-raviole-mainline | android-mainline | android-latest-release |
android16-6.12-gs101 | android16-6.12 | android-latest-release |
gs-android13-gs-raviole-5.15 | android13-5.15 | TQ1A.230205.002 (9471150) |
Siapkan perangkat Pixel Anda
Diagram alur 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.
- Pilih opsi berikut:
- Hapus Total Perangkat
- Memaksa Flash semua Partisi
- Menonaktifkan Verifikasi
- Tekan tombol Install build untuk melakukan flash perangkat.
Mendownload dan mengompilasi kernel
Menyinkronkan repositori kernel
Jalankan perintah berikut untuk mendownload kode sumber kernel. Lihat tabel Kombinasi Platform dan Kernel Android yang Didukung untuk Pixel 6/6 Pro 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 mengupdate bit ramdisk DTB dan DLKM dari partisi vendor_boot
Mulai fastboot versi 35.0.2-12583183, Anda dapat langsung mem-flash DTB dan DLKM ramdisk di partisi
vendor_boot
. Download dan ekstraksdk-repo-HOST_OS-platform-tools-12583183.zip
dari artefak v35.0.2-12583183 ke lingkungan komputer host Anda untuk digunakan.Ikuti petunjuk untuk mem-flash DTB dan
vendor_boot:dlkm
di Flash image kernel.Opsi 2) Ekstrak image ramdisk vendor dari image pabrikan Pixel.
Download image pabrik yang didukung untuk perangkat Anda dari https://developers.google.com/android/images.
Ekstrak
vendor_boot.img
:Perintah berikut menggunakan AP1A.240505.004 Pixel 6 Pro sebagai contoh. Ganti nama file zip dengan nama file image pabrikan 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
Kompilasi 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 dibangun menggunakan Kleaf.
Untuk mempermudah, Anda dapat menjalankan skrip build_DEVICE.sh
yang ada 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 membangun kernel 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 bawaan
untuk mempercepat proses build. Jika Anda ingin mengubah kernel inti, tetapkan
variabel lingkungan BUILD_AOSP_KERNEL=1
untuk membangun kernel dari
sumber lokal. Cabang kernel pengembangan secara langsung membangun sumber kernel secara default.
Untuk mengetahui detail selengkapnya tentang sistem build kernel dan cara menyesuaikan build, lihat Kleaf - Building Android Kernels with Bazel.
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 Anda mencadangkan data 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 reboot
ke mode fastbootd
sebelum melakukan flashing.
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 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 --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/6 Pro/6a, jika Anda mengupdate vendor_ramdisk
di bagian
Perbarui ramdisk vendor, maka
gunakan perintah berikut untuk mengupdate 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 enable
fastboot oem uart config 3000000
screen -fn /dev/ttyUSB* 3000000
Memulihkan image pabrik
Untuk memulihkan perangkat kembali ke image 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. Ini adalah perangkat yang didukung non-GKI.
Cabang kernel Pixel lama
Perangkat | Jalur biner di struktur 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 (api) Pixel 4 XL (koral) |
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 (arsir 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 |