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 nedeniyle, çekirdek artık Android platformu derlemesinden bağımsız olarak güncellenebilir. Bu adımlar yalnızca Pixel 6 ve sonraki cihazlar için geçerlidir. Bunun nedeni, Pixel 5 ve önceki model cihazların vendor bölümündeki çekirdek modüllerinin güncellenmesini gerektirmesidir. Bu, cihazlar için Android platformu 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 manifest dalları için Eski Pixel Kernels bölümüne bakın.

GKI tarafından desteklenen Pixel çekirdek dalları
Cihaz AOSP ağacındaki ikili yol Kod deposu dalları GKI Çekirdeği
Pixel 9 Pro Fold (kuyruklu yıldız) device/google/comet-kernel android-gs-comet-6.1-android14-qpr3-d1 android14-6.1
Pixel 9 (kayıp)
Pixel 9 Pro (caiman)
Pixel 9 Pro XL (komodo)
cihaz/google/caimito-çekirdek android-gs-caimito-6.1-android14-qpr3-d1 android14-6.1
Pixel 8a (akita) cihaz/google/akita-çekirdek android-gs-akita-5.15-android14-qpr3 android14-5.15
Pixel 8 (shiba)
Pixel 8 Pro (sibirya kurt kuşu)
cihaz/google/shusky-çekirdek android-gs-shusky-5.15-android14-qpr3 android14-5.15
Pixel Fold (felix) cihaz/google/felix-çekirdek android-gs-felix-5.10-android14-qpr3 android13-5.10
Pixel Tablet (tangorpro) cihaz/google/tangorpro-çekirdek android-gs-tangorpro-5.10-android14-qpr3 android13-5.10
Pixel 7a (lynx) device/google/lynx-kernel android-gs-lynx-5.10-android14-qpr3 android13-5.10
Pixel 7 (panter)
Pixel 7 Pro (çita)
device/google/pantah-kernel android-gs-pantah-5.10-android14-qpr3 android13-5.10
Pixel 6a (bluejay) cihaz/google/bluejay-çekirdek android-gs-bluejay-5.10-android14-qpr3 android13-5.10
Pixel 6 (oriole)
Pixel 6 Pro (kuzgun)
device/google/raviole-çekirdek android-gs-raviole-5.10-android14-qpr3 android13-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 platformu HAL'leri ile Pixel çekirdek sürücüleri arasındaki satıcı 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 Platformu Derlemesi aosp-main desteği var mı?
gs-android-gs-raviole-mainline android-mainline (sürüm 6.8) AP1A.240505.004 (11583682) Evet
android14-gs-pixel-6.1 android14-6.1 AP1A.240505.004 (11583682) 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ış grafiğinde, Pixel 6 ve sonraki model cihazlarda çekirdeği güncelleme süreci açıklanmaktadır:

**Şekil 1.** Kernel Güncelleme Akış Grafiği

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 indirin ve derleyin

Ç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ı, cihazda yüklenen Android platformu derlemesiyle eşleşecek şekilde güncelleyin. Takip edebileceğiniz birkaç seçenek var.

1. 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 örnek olarak Pixel 6 Pro AP1A.240505.004 kullanılı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. Satıcının RAM diskini almak için vendor_boot.img 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 (oriole)
    Pixel 6 Pro (kuzgun)
    prebuilts/boot-artifacts/ramdisks/vendor_ramdisk-oriole.img
    Pixel 6a (bluejay) özel/cihazlar/google/bluejay/tedarikçi_saglamdisk-bluejay.img
      cp vendor_boot_out/vendor-ramdisk-by-name/ramdisk_ \
          KERNEL_REPO_ROOT/DEVICE_RAMDISK_PATH
    
2. Seçenek) Yerel olarak derlenmiş bir Android platform deposundan vendor_ramdisk dosyasını kopyalayın.
Cihaz DEVICE_RAMDISK_PATH
Pixel 6 (oriole)
Pixel 6 Pro (kuzgun)
prebuilts/boot-artifacts/ramdisks/vendor_ramdisk-oriole.img
Pixel 6a (bluejay) private/devices/google/bluejay/vendor_ramdisk-bluejay.img
cp ANDROID_ROOT/out/target/product/DEVICE/vendor_ramdisk-debug.img \
   KERNEL_REPO_ROOT/DEVICE_RAMDISK_PATH/vendor_ramdisk-DEVICE.img

Ç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 cihazlar için çekirdek, Kleaf kullanılarak oluşturulmalıdır.

android14 ve sonraki çekirdeklere sahip Pixel 6 ve 6 Pro'da Kleaf derleme komutunu çalıştırın:

tools/bazel run --config=fast --config=stamp //private/google-modules/soc/gs:slider_dist

android13-5.15 çekirdekli Pixel 6 ve 6 Pro'da Kleaf derleme komutunu çalıştırın:

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

Diğer tüm Pixel çekirdekleri için KERNEL_REPO_ROOT konumunda bulunan build_DEVICE.sh komut dosyasını çalıştırın. Çoğu durumda DEVICE, GKI destekli 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ı (ör. "akita" (Pixel 8a)) veya bir çekirdeği paylaşan ilgili cihaz grubunu temsil eden bir kod adı (ör. "caimito", Pixel 9 (tokay), Pixel 9 Pro (caiman) ve Pixel 9 Pro XL (komodo) anlamına gelir) olabilir. 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 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

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 BUILD_AOSP_KERNEL=1 ortam değişkenini, çekirdeği yerel kaynaklardan derleyecek şekilde ayarlayın.

Çekirdek derleme sistemi ve derlemenin nasıl özelleştirileceği hakkında daha fazla bilgi için Kleaf - Bazel ile Android Çekirdekleri Derleme sayfasına bakın.

Çekirdek görüntülerini Flash

Not: Doğrulamayı devre dışı bırakmadıysanız özel çekirdeği yanıp söndürmeden önce bunu yapmanız gerekir. Bu işlemi gerçekleştirmek için gereken komutu aşağıda bulabilirsiniz:
fastboot oem disable-verification
UYARI: Bir platform derlemesinin üzerinde özel bir çekirdeği güncelliyorsanız 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. 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ümler için yanıp sönmeden önce fastbootd modunda yeniden başlatmanız gerekir.

Cihaz Çekirdek bölümleri
Pixel 6 (oriole)
Pixel 6 Pro (kuzgun)
Pixel 6a (bluejay)
boot
dtbo
vendor_boot
vendor_dlkm (dinamik bölüm)
Pixel 8 (shiba)
Pixel 8 Pro (husky)
Pixel Kat (felix)
Pixel Tablet (tangorpro)
Pixel 7a (lynx)
Pixel 7 (panter)
Pixel 7 Pro (çita)
boot
dtbo
vendor_kernel_boot
vendor_dlkm (dinamik bölüm)
system_dlkm (dinamik bölüm)

Aşağıda, android-mainline cihazında Pixel 6 için yanıp sönen komutlar 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 donanım anahtarınız varsa ve seri günlüklerini etkinleştirmek istiyorsanız komut şu şekildedir:
fastboot oem uart enable
fastboot oem uart config 3000000
Ana makineden bağlanmak için örnek komut:
screen -fn /dev/ttyUSB* 3000000

Fabrika imajlarını 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 Kod deposu dalları
Pixel 5a (barbet)
Pixel 4a (5G) (bramble)
Pixel 5 (redfin)
cihaz/google/redbull-çekirdek android-msm-redbull-4.19-android14-qpr3
Pixel 4a (sunfish) cihaz/google/güneş balığı-çekirdek android-msm-güneş-balığı-4.14-android13-qpr3
Pixel 4 (alev)
Pixel 4 XL (mercan)
cihaz/google/mercan-çekirdek android-msm-mercan-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 (duvar gözü)
Pixel 2 XL (taimen)
device/google/wahoo-kernel android-msm-wahoo-4.4-android10-qpr3
Pixel (yelken balığı)
Pixel XL (marlin)
device/google/marlin-kernel android-msm-marlin-3.18-pie-qpr2