Pixel çekirdeklerini derleme

Bu kılavuzda, geliştirme için özel bir 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üncelleyebilirsiniz. Bu adımlar yalnızca Pixel 6 ve sonraki cihazlar için geçerlidir. Bunun nedeni, Pixel 5 ve önceki cihazlarda vendor bölümündeki çekirdek modüllerinin güncellenmesinin gerekmesidir. Bu güncelleme, söz konusu cihazların 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 bölümüne bakın.

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

Fabrikada desteklenen çekirdeklere ek olarak Pixel 6 ve 6 Pro cihazlar, yalnızca Desteklenen Pixel 6/6 Pro Android Platform ve Çekirdek Kombinasyonları tablosunda yer alan Android Common çekirdek 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/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
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:

**Şekil 1.** Çekirdek Güncelleme Akış Şeması

flash.android.com adresini kullanarak cihazı flaşlayın

  1. flash.android.com adresine gidin.
  2. Desteklenen Android Platform ve Kernel kombinasyonlarına göre Android derlemesini seçin.
  3. Aşağıdaki seçenekleri belirleyin:
    • Cihazı Temizle
    • Tüm Bölümleri Flash'lemeye Zorla
    • Doğrulamayı devre dışı bırakma
  4. Cihazı flashlamak için Yükleme derlemesi düğmesine basın.

**Şekil 2.** Flash İstasyonu Örneği

Çekirdeği indirip derleme

Ç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/6 Pro Android Platform 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 (2) seçeneğini kullanın.

  • 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_boot bölümüne yükleyebilirsiniz. Kullanmak için sdk-repo-HOST_OS-platform-tools-12583183.zip dosyasını v35.0.2-12583183 artifacts dosyasından indirip ana makinenizin ortamına çıkarın.

    Çekirdek görüntülerini flaşlama bölümünde DTB ve vendor_boot:dlkm flaşlama talimatlarını uygulayın.

  • 2. seçenek: Satıcı ramdisk görüntüsünü Pixel fabrika görüntüsünden ayıklayın.

    1. Cihazınız için desteklenen fabrika görüntüsünü https://developers.google.com/android/images adresinden indirin.

    2. vendor_boot.img dosyasını çı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.zip
      
        cd raven-ap1a.240505.004
      
        unzip image-raven-ap1a.240505.004.zip vendor_boot.img
      
    3. Tedarikçi ramdisk'ini almak için vendor_boot.img dosyasını açın.

        KERNEL_REPO_ROOT/tools/mkbootimg/unpack_bootimg.py --boot_img vendor_boot.img \
            --out vendor_boot_out
      
    4. Ayı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 (Kleaf)

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, "akita" (Pixel 8a) gibi tek bir cihazın kod adı olabilen veya "caimito" gibi bir çekirdeği paylaşan ilgili cihaz grubunu temsil eden bir kod adı olması gerekir. "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 yerel kaynaklardan çekirdek 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 (dynamic partition)
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/6 Pro/6a için vendor_ramdisk bölümünü 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:
fastboot oem uart enable
fastboot oem uart config 3000000
Ana makineden bağlanmak için örnek komut:
screen -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.

Eski Pixel çekirdekleri

Eski Pixel çekirdek dalları tablosunda, Pixel 5 ve önceki cihazların ç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