Bu kılavuzda, geliştirme için özel Pixel çekirdeğini indirme, derleme ve flash etme ile ilgili adım adım talimatlar verilmektedir. GKI sayesinde artık çekirdeği Android platform derlemesinden bağımsız olarak güncellemek mümkün. Bu adımlar yalnızca Pixel 6 ve sonraki model cihazlar için geçerlidir. Bunun nedeni, Pixel 5 ve önceki cihazlarda vendor bölümündeki çekirdek modüllerinin güncellenmesinin gerekmesidir. Bu işlem, söz konusu cihazlar için Android platform derlemesine bağlıdır. GKI destekli Pixel çekirdek dalları tablosunda, GKI destekli her Pixel cihaz için çekirdek deposu manifest dalı yer alır. Pixel 5 ve önceki çekirdek manifest dalları için Eski Pixel Çekirdekleri'ne bakın.
Pixel 6 ve Pixel 6 Pro da yukarı akış Linux çekirdeğinde desteklenir ve yalnızca yukarı akış sürücüleriyle cihaz kabuğu istemine başlatılabilir. Daha fazla bilgi için Build and flash the upstream Pixel kernel (Yukarı akış Pixel çekirdeğini oluşturma ve flash'lama) başlıklı makaleyi inceleyin.
GKI Pixel çekirdeklerini oluşturma ve yükleme
Bu bölümde, GKI destekli çekirdek dallarını senkronize etme, derleme ve yükleme adımları açıklanmaktadır. Aşağıdaki tabloda, desteklenen Pixel cihazlar ve ilgili üretim çekirdeği deposu dallarının eşlemesi verilmiştir.
GKI'nin desteklediği Pixel çekirdek dalları
| Cihaz | Depo dalları | GKI çekirdeği |
|---|---|---|
| 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 |
Fabrika tarafından desteklenen çekirdeklere ek olarak Pixel 6 ve 6 Pro cihazlar, yalnızca Desteklenen Pixel 6 ve Pixel 6 Pro Android platformu ve çekirdek kombinasyonları tablosunda yer alan Android Ortak Çekirdeği dallarında GKI geliştirme amacıyla desteklenir. Android platformu HAL'leri ile Pixel çekirdek sürücüleri arasındaki satıcı UAPI farklılıkları nedeniyle tabloda desteklenen derleme kombinasyonları verilmiştir.
Desteklenen Pixel 6 ve Pixel 6 Pro Android platformu ve çekirdek kombinasyonları
| Pixel Kernel Manifest Branch | GKI Branch | Android Platform Derlemesi |
|---|---|---|
| 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) |
Pixel cihazınızı hazırlayın
Aşağıdaki akış şeması, Pixel 6 ve sonraki cihazlarda çekirdeğin güncellenme sürecini açıklamaktadır:
flash.android.com adresini kullanarak cihazı flaşlama
- flash.android.com adresine gidin.
- Desteklenen Android Platform ve Kernel kombinasyonlarına göre Android derlemesini seçin.
android-latest-releaseiçin "Herkese açık sürüme geri dön", Canary veya Beta'yı seçin.
- Aşağıdaki seçenekleri belirleyin:
- Cihazı Temizle
- Tüm Bölümleri Flash'lemeye Zorla
- Doğrulamayı devre dışı bırakma
- Cihazı flashlamak için Yükleme derlemesi düğmesine basın.
Çekirdek deposunu senkronize etme
Çekirdek kaynak kodunu indirmek için aşağıdaki komutları çalıştırın. Pixel KERNEL_MANIFEST_BRANCH için Desteklenen Pixel 6 ve Pixel 6 Pro Android Platformu ve Çekirdek Kombinasyonları tablosuna bakın.
repo init -u https://android.googlesource.com/kernel/manifest -b KERNEL_MANIFEST_BRANCH
repo sync -c --no-tags
Tedarikçi ramdisk'ini güncelleme
Dosyayı, cihazda kullanılan Android platform derlemesiyle eşleşecek şekilde çekirdek deposunda güncelleyin.vendor_ramdisk-DEVICE.img vendor_ramdisk-DEVICE.img dosyasını güncellemek için birkaç seçeneğiniz vardır. Android 15 QPR2 (BP11.241025.006) veya sonraki bir sürümü kullanıyorsanız (1) seçeneğini kullanın. Aksi takdirde, seçeneği (2) kullanılır.
1. seçenek: vendor_boot bölümünün yalnızca DTB ve DLKM ramdisk bitlerini güncelleme
Fastboot sürümü 35.0.2-12583183'ten itibaren DTB ve DLKM ramdisk'i doğrudan
vendor_bootbölümüne yükleyebilirsiniz. Bu seçeneği kullanmak için Android platform-tools'u v36.0.0 veya daha yeni bir sürüme yükseltin. Bu işlemi yapmak için aşağıdaki komutu çalıştırın:$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platform-tools"DTB ve
vendor_boot:dlkmöğesini yüklemek için Çekirdek görüntülerini yükleme bölümündeki talimatları uygulayın.2. seçenek) Pixel fabrika görüntüsünden satıcı ramdisk görüntüsünü ayıklayın.
Cihazınız için desteklenen fabrika görüntüsünü https://developers.google.com/android/images adresinden indirin.
vendor_boot.imgöğesini çıkarın:Aşağıdaki komutlarda örnek olarak Pixel 6 Pro AP1A.240505.004 sürümü kullanılmaktadır. zipfile adını, indirdiğiniz fabrika görüntüsünün dosya adıyla değiştirin.
unzip raven-ap1a.240505.004-factory-9d783215.zipcd raven-ap1a.240505.004unzip image-raven-ap1a.240505.004.zip vendor_boot.imgTedarikçi ramdisk'ini elde etmek için
vendor_boot.imgdosyasını açın.KERNEL_REPO_ROOT/tools/mkbootimg/unpack_bootimg.py --boot_img vendor_boot.img \ --out vendor_boot_outAyıklanan
vendor-ramdisk-by-name/ramdisk_dosyasını Pixel çekirdek deposuna kopyalayın.Cihaz 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
Çekirdeği derleme
Android 13'te build.sh komut dosyası, Kleaf adlı yeni bir çekirdek derleme sistemiyle değiştirildi. android13-5.15 ve sonraki sürümleri kullanan cihazlarda çekirdek, Kleaf kullanılarak oluşturulmalıdır.
İşlemi daha kolay gerçekleştirmek amacıyla build_DEVICE.sh
komut dosyasını KERNEL_REPO_ROOT adresinde çalıştırabilirsiniz. Çoğu durumda DEVICE, kod adı olmalıdır. Bu, "akita" (Pixel 8a) gibi tek bir cihazın kod adı veya bir çekirdeği paylaşan ilgili cihaz grubunu temsil eden bir kod adı olabilir. Örneğin, "caimito" Pixel 9 (tokay), Pixel 9 Pro (caiman) ve Pixel 9 Pro XL (komodo) anlamına gelir. android14 ve önceki sürümlerde Pixel 6 ve Pixel 6 Pro için build_slider.sh, Pixel 7 ve Pixel 7 Pro için build_cloudripper.sh simgesini kullanın.
Örneğin, Pixel 6'nın çekirdeğini android-gs-raviole-5.10-android14 dalında oluşturmak için şu komutu çalıştırırsınız:
build_slider.sh
Üretim çekirdeği dallarında varsayılan olarak build_DEVICE.sh komut dosyaları, derleme sürecini hızlandırmak için önceden oluşturulmuş GKI çekirdeğini kullanır. Çekirdek çekirdeğini değiştirmek istiyorsanız bunun yerine çekirdeği yerel kaynaklardan oluşturmak için BUILD_AOSP_KERNEL=1 ortam değişkenini ayarlayın. Geliştirme çekirdeği dalları, varsayılan olarak doğrudan çekirdek kaynağını oluşturur.
Çekirdek derleme sistemi ve derlemenin nasıl özelleştirileceği hakkında daha fazla bilgi için Kleaf - Building Android Kernels with Bazel başlıklı makaleyi inceleyin.
Çekirdek görüntülerini flaşlama
Not: Doğrulamayı devre dışı bırakmadıysanız özel çekirdeği yüklemeden önce devre dışı bırakmanız gerekir. Bunun için şu komutu kullanın:fastboot oem disable-verification
UYARI: Bir platform derlemesinin üzerine özel çekirdek yükleyecekseniz yeni çekirdekle ilişkili bir güvenlik yaması düzeyi (SPL) düşürme işlemi varsa cihazınızı silmeniz gerekebilir. Bu işlem, tüm kişisel verilerinizi siler. Silme işleminden önce verilerinizi yedeklediğinizden emin olun.fastboot -w
Çekirdek görüntülerini yüklemek için cihazınızda listelenen her çekirdek bölümü için fastboot flash komutunu çalıştırın. Dinamik bölümler için yanıp sönme işleminden önce fastbootd modunda yeniden başlatmanız gerekir.
| Cihaz | Çekirdek Bölümleri |
|---|---|
| Pixel 6 (oriole) Pixel 6 Pro (raven) Pixel 6a (bluejay) |
boot dtbo vendor_boot veya vendor_boot:dlkm vendor_dlkm (dinamik bölüm) |
| 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 (dynamic partition) system_dlkm (dynamic partition) |
android-mainline üzerinde Pixel 6 için yanıp sönme komutları şunlardır:
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
Pixel 6, Pixel 6 Pro ve Pixel 6a'da vendor_ramdisk bölümünü Update the vendor ramdisk (Tedarikçi ramdisk'ini güncelleme) bölümünde güncellediyseniz vendor_boot bölümünü güncellemek için aşağıdaki komutu kullanın:
fastboot flash vendor_boot out/slider/dist/vendor_boot.img
Çekirdek görüntüleri DIST_DIR içinde bulunabilir.
| Çekirdek dalı | DIST_DIR |
|---|---|
| v5.10 | out/mixed/dist |
| v5.15 ve sonraki sürümler | out/DEVICE/dist |
Not: Seri donanım kilidiniz varsa ve seri günlükleri etkinleştirmek istiyorsanız komut şudur:Ana makineden bağlanmak için örnek komut: fastboot oem uart enablefastboot oem uart config 3000000screen -fn /dev/ttyUSB* 3000000
Fabrika görüntülerini geri yükleme
Cihazınızı fabrika ayarı görüntülerine geri yüklemek için flash.android.com adresini kullanabilirsiniz.
Yukarı akış Pixel çekirdeğini oluşturma ve flash'lama
Pixel 6 ve Pixel 6 Pro, yukarı akış Linux çekirdeğinde desteklendiğinden çekirdek geliştirme için cihaz kabuğu istemine önyükleme yapmak üzere yalnızca yukarı akış sürücüleriyle android-mainline kullanabilirsiniz. Bu bölümde, android-mainline kaynağından Pixel 6 ve Pixel 6 Pro çekirdeğini senkronize etme, oluşturma ve yükleme adımları açıklanmaktadır.
Başlamak için sonraki adımları uygulayın.
- Pixel cihazınızı hazırlayın bölümündeki adımları uygulayarak cihazınızı hazırlayın.
- Çekirdek deposunu senkronize etme bölümündeki adımları uygulayarak
common-android-mainlineçekirdek manifest dalını senkronize edin. Kleaf derleme hedefi yapılandırması
KERNEL_REPO_ROOT/devices/google/ravioleyolu altında tanımlanır.raviole_upstreamderleme hedefini derlemek için Kleaf komutunu çalıştırın:tools/bazel run //devices/google/raviole:raviole_upstream_distÜretim çekirdeklerine benzer şekilde, Android fabrika görüntülerinin üzerine özel bir çekirdek yüklerken doğrulamayı devre dışı bırakın ve cihazınızı temizleyin. Daha fazla bilgi için Çekirdek görüntülerini yükleme bölümündeki notlara bakın.
Fastboot modunda, çekirdek görüntülerini yüklemek için aşağıdaki komutları çalıştırın:
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.imgBir cihaz kabuğu istemine erişmek için aşağıdaki komutu çalıştırarak kurtarma modunda yeniden başlatabilirsiniz:
fastboot reboot recoveryadb shellkomutunu çalıştırarak cihaz kabuğunu açın. Kök erişimi,adb rootkomutu çalıştırılarak da kullanılabilir.
Eski Pixel çekirdekleri
Referans olarak, Eski Pixel çekirdek dalları tablosunda Pixel 5 ve önceki cihazlar için çekirdek deposu dalları verilmiştir. Bu cihazlar GKI'yı desteklemez.
Eski Pixel çekirdek dalları
| Cihaz | AOSP ağacındaki ikili yol | Depo dalları |
|---|---|---|
| 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 (alev) Pixel 4 XL (mercan) |
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 |