هسته های پیکسل بسازید

این راهنما دستورالعمل های گام به گام در مورد نحوه دانلود، کامپایل و فلش کردن هسته پیکسل سفارشی برای توسعه ارائه می دهد. با توجه به GKI، اکنون می توان کرنل را مستقل از ساخت پلتفرم اندروید به روز رسانی کرد. این مراحل فقط برای دستگاه‌های Pixel 6 و جدیدتر قابل اجرا هستند. این به این دلیل است که پیکسل 5 و دستگاه‌های قبلی نیاز به به‌روزرسانی ماژول‌های هسته در پارتیشن vendor دارند که به ساخت پلتفرم اندروید برای آن دستگاه‌ها بستگی دارد. جدول شاخه‌های هسته پیکسل پشتیبانی‌شده توسط GKI شامل شاخه مانیفست مخزن هسته برای هر دستگاه پیکسل پشتیبانی‌شده توسط GKI است. به بخش Legacy Pixel Kernels برای شاخه‌های Pixel 5 و مانیفست هسته قبلی مراجعه کنید.

GKI از شاخه های هسته پیکسل پشتیبانی می کند
دستگاه مسیر باینری در درخت AOSP شعبه های مخزن هسته GKI
Pixel 9 Pro Fold (دنباله دار) device/google/comet-kernel android-gs-comet-6.1-android14-qpr3-d1 اندروید 14-6.1
Pixel 9 (اکنون)
Pixel 9 Pro (caiman)
Pixel 9 Pro XL (کومودو)
device/google/caimito-kernel android-gs-caimito-6.1-android14-qpr3-d1 اندروید 14-6.1
Pixel 8a (akita) device/google/akita-kernel android-gs-akita-5.15-android14-qpr3 android14-5.15
پیکسل 8 (شیبا)
پیکسل 8 پرو (هاسکی)
device/google/shusky-kernel android-gs-shusky-5.15-android14-qpr3 android14-5.15
Pixel Fold (felix) device/google/felix-kernel android-gs-felix-5.10-android14-qpr3 android13-5.10
تبلت پیکسل (tangorpro) device/google/tangorpro-kernel android-gs-tangorpro-5.10-android14-qpr3 android13-5.10
Pixel 7a (سیاه گوش) دستگاه/گوگل/کرنل سیاهگوش android-gs-lynx-5.10-android14-qpr3 android13-5.10
پیکسل 7 (پلنگ)
Pixel 7 Pro (یوزپلنگ)
device/google/pantah-kernel android-gs-pantah-5.10-android14-qpr3 android13-5.10
Pixel 6a (bluejay) device/google/bluejay-kernel android-gs-bluejay-5.10-android14-qpr3 android13-5.10
Pixel 6 (oriole)
Pixel 6 Pro (Rave)
device/google/raviole-kernel android-gs-raviole-5.10-android14-qpr3 android13-5.10

علاوه بر هسته‌های پشتیبانی شده توسط کارخانه، دستگاه‌های Pixel 6 و 6 Pro برای اهداف توسعه GKI فقط در شاخه‌های هسته مشترک Android موجود در جدول پلتفرم Android پشتیبانی شده و ترکیبات هسته Pixel 6/6 Pro پشتیبانی می‌شوند. به دلیل تفاوت UAPI فروشنده بین HAL های پلتفرم اندروید و درایورهای هسته پیکسل، جدول ترکیبات ساخت پشتیبانی شده را ارائه می دهد.

پشتیبانی از پلتفرم اندروید و ترکیب هسته Pixel 6/6 Pro
شعبه مانیفست هسته پیکسل شعبه GKI ساخت پلتفرم اندروید پشتیبانی aosp-main ؟
gs-android-gs-raviole-mainline اندروید اصلی ( نسخه 6.8 ) AP1A.240505.004 (11583682) بله
android14-gs-pixel-6.1 اندروید 14-6.1 AP1A.240505.004 (11583682) بله
gs-android13-gs-raviole-5.15 android13-5.15 TQ1A.230205.002 (9471150) خیر

دستگاه Pixel خود را آماده کنید

نمودار جریان زیر روند به‌روزرسانی هسته را در دستگاه‌های Pixel 6 و جدیدتر توضیح می‌دهد:

**شکل 1. ** نمودار جریان به روز رسانی هسته

دستگاه را با استفاده از flash.android.com فلش کنید

  1. به flash.android.com بروید
  2. ساخت اندروید را بر اساس پلتفرم Android و ترکیبات هسته پشتیبانی شده انتخاب کنید.
  3. گزینه های زیر را انتخاب کنید:
    • پاک کردن دستگاه
    • فلش اجباری تمام پارتیشن ها
    • تأیید صحت را غیرفعال کنید
  4. دکمه Install build را فشار دهید تا دستگاه فلش شود.

**شکل 2.** مثال Flash Station

هسته را دانلود و کامپایل کنید

مخزن هسته را همگام سازی کنید

برای دانلود کد منبع هسته دستورات زیر را اجرا کنید. برای Pixel KERNEL_MANIFEST_BRANCH ، به جدول پلتفرم Android و کرنل پشتیبانی شده Pixel 6/6 Pro مراجعه کنید.

repo init -u https://android.googlesource.com/kernel/manifest -b KERNEL_MANIFEST_BRANCH
repo sync -c --no-tags

ramdisk فروشنده را به روز کنید

فایل vendor_ramdisk- DEVICE .img را در مخزن هسته به‌روزرسانی کنید تا با پلتفرم اندرویدی که روی دستگاه فلش شده است مطابقت داشته باشد. چند گزینه وجود دارد که می توانید دنبال کنید.

گزینه 1) تصویر ramdisk فروشنده را از تصویر کارخانه Pixel استخراج کنید.
  1. تصویر کارخانه پشتیبانی شده را برای دستگاه خود از https://developers.google.com/android/images دانلود کنید.

  2. vendor_boot.img را استخراج کنید:

    • دستورات زیر از Pixel 6 Pro AP1A.240505.004 به عنوان مثال استفاده می کنند. نام فایل فشرده را با نام فایل تصویر کارخانه ای که دانلود کرده اید جایگزین کنید.
      unzip raven-ap1a.240505.004-factory-9d783215.zip
    
      cd raven-ap1a.240505.004
    
      unzip image-raven-ap1a.240505.004.zip vendor_boot.img
    
  3. برای بدست آوردن ramdisk فروشنده، vendor_boot.img را باز کنید.

      KERNEL_REPO_ROOT/tools/mkbootimg/unpack_bootimg.py --boot_img vendor_boot.img \
          --out vendor_boot_out
    
  4. فایل vendor-ramdisk-by-name/ramdisk_ استخراج شده را در مخزن هسته پیکسل کپی کنید.

    دستگاه 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
    
گزینه 2) vendor_ramdisk را از یک مخزن پلتفرم Android ساخته شده محلی کپی کنید.
دستگاه 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 ANDROID_ROOT/out/target/product/DEVICE/vendor_ramdisk-debug.img \
   KERNEL_REPO_ROOT/DEVICE_RAMDISK_PATH/vendor_ramdisk-DEVICE.img

کامپایل هسته (کلیف)

در اندروید 13، اسکریپت build.sh با یک سیستم ساخت هسته جدید به نام Kleaf جایگزین شد. برای دستگاه‌هایی که از android13-5.15 و بالاتر استفاده می‌کنند، هسته باید با استفاده از Kleaf ساخته شود.

برای پیکسل 6 و 6 پرو با هسته های android14 و جدیدتر، دستور ساخت Kleaf را اجرا کنید:

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

برای Pixel 6 و 6 Pro با هسته های android13-5.15 ، دستور ساخت Kleaf را اجرا کنید:

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

برای سایر هسته‌های Pixel، اسکریپت build_ DEVICE .sh موجود در KERNEL_REPO_ROOT را اجرا کنید. در بیشتر موارد، DEVICE باید نام کدی باشد که با نام کد استفاده شده در مسیر باینری در ستون درختی AOSP جدول شاخه‌های هسته پیکسل پشتیبانی شده توسط GKI مطابقت داشته باشد. این می‌تواند نام رمز یک دستگاه باشد، مانند «akita» (Pixel 8a)، یا یک نام رمزی که نشان‌دهنده گروهی از دستگاه‌های مرتبط با هسته مشترک هستند، مانند «caimito» که به معنای Pixel 9 (tokay)، Pixel است. 9 Pro (کایمان) و Pixel 9 Pro XL (کومودو). برای android14 و نسخه‌های قبلی، از build_slider.sh برای Pixel 6 و Pixel 6 Pro و build_cloudripper.sh برای Pixel 7 و Pixel 7 Pro استفاده کنید.

به عنوان مثال، برای ساختن هسته پیکسل 6 در شاخه android-gs-raviole-5.10-android14 ، باید این دستور را اجرا کنید:

build_slider.sh

به طور پیش فرض، اسکریپت های build_ DEVICE .sh از هسته GKI از پیش ساخته شده برای سرعت بخشیدن به فرآیند ساخت استفاده می کنند. اگر می‌خواهید هسته اصلی را تغییر دهید، متغیر محیطی BUILD_AOSP_KERNEL=1 را تنظیم کنید تا به جای آن هسته را از منابع محلی بسازد.

برای جزئیات بیشتر در مورد سیستم ساخت هسته و نحوه سفارشی سازی ساخت، به هسته های اندرویدی Kleaf - Building با Bazel مراجعه کنید.

تصاویر کرنل را فلش کنید

توجه: اگر تأیید صحت را غیرفعال نکرده اید، باید قبل از فلش کردن کرنل سفارشی این کار را انجام دهید. در اینجا دستور انجام این کار وجود دارد:
fastboot oem disable-verification
هشدار: اگر در حال فلش کردن یک هسته سفارشی در بالای یک پلتفرم هستید، ممکن است لازم باشد دستگاه خود را پاک کنید اگر سطح وصله امنیتی (SPL) مربوط به هسته جدید کاهش یابد. این فرآیند تمام اطلاعات شخصی شما را پاک می کند. قبل از پاک کردن، حتما از اطلاعات خود نسخه پشتیبان تهیه کنید.
fastboot -w

برای فلش کردن تصاویر هسته، دستور fastboot flash را برای هر پارتیشن هسته لیست شده برای دستگاه خود اجرا کنید. برای پارتیشن های داینامیک، باید قبل از فلش زدن، در حالت fastbootd ریبوت کنید.

دستگاه پارتیشن های هسته
Pixel 6 (oriole)
Pixel 6 Pro (raven)
Pixel 6a (bluejay)
چکمه
dtbo
vendor_boot
vendor_dlkm (پارتیشن پویا)
پیکسل 8 (شیبا)
پیکسل 8 پرو (هاسکی)
Pixel Fold (felix)
تبلت پیکسل (tangorpro)
Pixel 7a (سیاه گوش)
پیکسل 7 (پلنگ)
Pixel 7 Pro (یوزپلنگ)
چکمه
dtbo
vendor_kernel_boot
vendor_dlkm (پارتیشن پویا)
system_dlkm (پارتیشن پویا)

در اینجا دستورات چشمک زن Pixel 6 در android-mainline آمده است:

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

تصاویر هسته را می توان در DIST_DIR پیدا کرد.

شاخه هسته DIST_DIR
نسخه 5.10 out/mixed/dist
نسخه 5.15 و بالاتر out/ DEVICE /dist
توجه: اگر یک دانگل سریال دارید و می‌خواهید گزارش‌های سریال را فعال کنید، دستور به صورت زیر است:
fastboot oem uart enable
fastboot oem uart config 3000000
دستور مثال برای اتصال از هاست:
screen -fn /dev/ttyUSB* 3000000

بازیابی تصاویر کارخانه

برای بازگرداندن دستگاه خود به تصاویر کارخانه، می توانید از flash.android.com استفاده کنید.

هسته‌های پیکسل قدیمی

به عنوان مرجع، جدول شاخه‌های هسته پیکسل قدیمی، شاخه‌های مخزن هسته را برای پیکسل 5 و دستگاه‌های قبلی ارائه می‌کند. اینها دستگاه هایی هستند که از GKI پشتیبانی نمی کنند.

شاخه های هسته پیکسل قدیمی
دستگاه مسیر باینری در درخت AOSP شعبه های مخزن
Pixel 5a (باربت)
Pixel 4a (5G) (bramble)
پیکسل 5 (پر قرمز)
دستگاه/google/redbull-kernel android-msm-redbull-4.19-android14-qpr3
Pixel 4a (ماهی خورشیدی) device/google/sunfish-kernel android-msm-sunfish-4.14-android13-qpr3
پیکسل 4 (شعله)
Pixel 4 XL (مرجانی)
device/google/coral-kernel android-msm-coral-4.14-android13
Pixel 3a (sargo)
Pixel 3a XL (بنیتو)
device/google/bonito-kernel android-msm-bonito-4.9-android12L
Pixel 3 (آبی خط)
Pixel 3 XL (تقاطع)
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 XL (مارلین)
دستگاه/گوگل/مارلین-کرنل android-msm-marlin-3.18-pie-qpr2