Pixel çekirdekleri oluşturma

Bu kılavuzda, geliştirme için özel bir Pixel çekirdeğini indirme, derleme ve flaşlamayla 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üncellenmesi gerekmesidir. Bu güncelleme, söz konusu cihazlar için Android platform derlemesine bağlıdır. GKI tarafından desteklenen Pixel çekirdek dalları tablosunda, GKI tarafından desteklenen her Pixel cihazın çekirdek deposu manifest dalı yer alır. Pixel 5 ve önceki çekirdek manifesti dalları için Eski Pixel Çekirdekleri bölümüne bakın.

GKI tarafından desteklenen Pixel çekirdek dalları
Cihaz AOSP ağacındaki ikili yol Depo dalları GKI Çekirdeği
Pixel 9 Pro Fold (kuyruklu yıldız) 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 (örümcek kuşu)
Pixel 6 Pro (karga)
device/google/raviole-kernels/5.10 android-gs-raviole-5.10-android15-qpr1 android15-5.10

Fabrika tarafından desteklenen çekirdeklere ek olarak Pixel 6 ve 6 Pro cihazlar, GKI geliştirme amacıyla yalnızca Desteklenen Pixel 6/6 Pro Android Platformu ve Çekirdek Kombinasyonları tablosunda yer alan Android Ortak çekirdek dallarında desteklenir. Android platform HAL'leri ile Pixel çekirdek sürücüleri arasındaki tedarikçi UAPI farklılıkları nedeniyle tabloda desteklenen derleme kombinasyonları sağlanmaktadır.

Desteklenen Pixel 6/6 Pro Android platformu ve çekirdek kombinasyonları
Pixel Kernel Manifest Branch GKI Şubesi Android Platform Derlemesi aosp-main destek ekibine başvurabilir miyim?
gs-android-gs-raviole-mainline android-mainline (v6.12) BP11.241025.006 (12620009) Evet
android-gs-raviole-6.1-android15-qpr2-beta android14-6.1 BP11.241025.006 (12620009) Evet
gs-android13-gs-raviole-5.15 android13-5.15 TQ1A.230205.002 (9471150) Hayır

Pixel cihazınızı hazırlayın

Aşağıdaki akış şemasında, Pixel 6 ve sonraki model cihazlarda çekirdeğin güncellenme süreci açıklanmaktadır:

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

flash.android.com adresini kullanarak cihazı flaşlama

  1. flash.android.com adresine gidin
  2. Desteklenen Android Platformu ve Çekirdek kombinasyonlarına göre Android derlemesini seçin.
  3. Aşağıdaki seçenekleri belirleyin:
    • Cihazı Temizle
    • Tüm bölümleri zorla flaşlama
    • Doğrulamayı devre dışı bırakma
  4. Cihazı flaşlamak için Derlemeyi yükle 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 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

Çekirdek deposundaki vendor_ramdisk-DEVICE.img dosyasını, cihaza yüklenen Android platform derlemesiyle eşleşecek şekilde güncelleyin. vendor_ramdisk-DEVICE.img dosyasını güncellemek için birkaç seçenek 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üncelleyin

    35.0.2-12583183 fastboot sürümünden itibaren DTB ve DLKM ramdisk'ini doğrudan vendor_boot bölümüne yükleyebilirsiniz. sdk-repo-HOST_OS-platform-tools-12583183.zip'ü, v35.0.2-12583183 yapılarından indirip ana makinenizin ortamına çıkarın.

    Çekirdek görüntülerini flaşlama bölümündeki talimatları uygulayarak DTB ve vendor_boot:dlkm dosyalarını flaşlayın.

  • 2. Seçenek) Pixel fabrika görüntüsünden tedarikçi firma ramdisk görüntüsünü çıkarı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ı ayıklama:

      Aşağıdaki komutlarda Pixel 6 Pro AP1A.240505.004 örneği kullanılmıştır. zip dosyası 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'ün paketini 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 (örümcek kuşu)
      Pixel 6 Pro (karga)
      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.

android13-5.15 çekirdeklerine sahip Pixel 6 ve 6 Pro için Kleaf derleme komutunu çalıştırın:

tools/bazel run --lto=thin //gs/google-modules/soc-modules:slider_dist

Diğer tüm Pixel çekirdeklerinde KERNEL_REPO_ROOT adresindeki build_DEVICE.sh komut dosyasını çalıştırın. Çoğu durumda DEVICE, GKI tarafından desteklenen Pixel çekirdek dalları tablosunun AOSP ağacındaki ikili yol sütununda kullanılan kod adıyla eşleşen kod adı olmalıdır. Bu, bir cihazın kod adı ("akita" (Pixel 8a) gibi) veya bir çekirdeği paylaşan ilgili cihaz grubunu temsil eden bir kod adı ("caimito" (Pixel 9 (tokay), Pixel 9 Pro (caiman) ve Pixel 9 Pro XL (komodo) anlamına gelir) gibi) olabilir. android14 ve önceki sürümler için Pixel 6 ve Pixel 6 Pro'da build_slider.sh, Pixel 7 ve Pixel 7 Pro'da ise build_cloudripper.sh kullanın.

Örneğin, android-gs-raviole-5.10-android14 dalında Pixel 6 için çekirdeği derlemek üzere şu komutu çalıştırırsınız:

build_slider.sh

Üretim çekirdek 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 çekirdeği yerel kaynaklardan derlemek için BUILD_AOSP_KERNEL=1 ortam değişkenini ayarlayın. Geliştirme çekirdek dalları varsayılan olarak çekirdek kaynağını doğrudan oluşturur.

Çekirdek derleme sistemi ve derlemeyi özelleştirme 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 bunu yapmanız gerekir. Bunu yapmak için kullanabileceğiniz komut şudur:
fastboot oem disable-verification
UYARI: Bir platform derlemesinin üzerine özel bir çekirdek atıyorsanız yeni çekirdekle ilişkili bir güvenlik yaması düzeyi (SPL) düşürme varsa cihazınızı silmeniz gerekebilir. Bu işlem, tüm kişisel verilerinizi siler. Silmeden önce verilerinizi yedeklediğinizden emin olun.
fastboot -w

Çekirdek görüntülerini yüklemek için cihazınız için listelenen her çekirdek bölümü için fastboot flash komutunu çalıştırın. Dinamik bölümlerde, önyüklemeden önce fastbootd moduna yeniden başlatmanız gerekir.

Cihaz Çekirdek bölümleri
Pixel 6 (oriole)
Pixel 6 Pro (raven)
Pixel 6a (bluejay)
boot
dtbo
vendor_boot
vendor_dlkm (dinamik bölüm)
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 (dinamik bölüm)
system_dlkm (dinamik bölüm)

Pixel 6/6 Pro/6a için Tedarikçi firma ramdisk'ini güncelleme bölümünde vendor_ramdisk dosyasını indirmeyi atladıysanız vendor_boot.img görüntüsünü yüklemek yerine DTB ve DLKM ramdisk'ini güncellemek için aşağıdaki komutu kullanın:

fastboot flash  --dtb out/DEVICE/dist/dtb.img vendor_boot:dlkm out/slider/dist/initramfs.img

android-mainline sürümündeki Pixel 6 için yanıp sönme komutları aşağıda verilmiştir:

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

Çekirdek görüntüleri DIST_DIR adresinde bulunabilir.

Çekirdek dalı DIST_DIR
v5.10 out/mixed/dist
v5.15 ve sonraki sürümler out/DEVICE/dist
Not: Seri dongle'ınız varsa ve seri günlüklerini 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 resimlerini geri yükleme

Cihazınızı fabrika ayarlarına geri yüklemek için flash.android.com adresini kullanabilirsiniz.

Eski Pixel çekirdekleri

Referans olarak kullanabileceğiniz eski Pixel çekirdek dalları tablosunda, Pixel 5 ve önceki model cihazların çekirdek deposu dalları yer alır. Bunlar GKI tarafından desteklenmeyen cihazlardır.

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 (mavi çizgi)
Pixel 3 XL (çapraz çizgi)
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