ساخت هسته پیکسل

بررسی اجمالی

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

GKI از شاخه های Pixel Kernel پشتیبانی می کند
دستگاه مسیر باینری در درخت AOSP شعبه های مخزن هسته GKI
پیکسل 8 (شیبا)
پیکسل 8 پرو (هاسکی)
device/google/shusky-kernel android-gs-shusky-5.15-android14-d1 android14-5.15
Pixel Fold (felix) device/google/felix-kernel android-gs-felix-5.10-android14 android13-5.10
تبلت پیکسل (tangorpro) device/google/tangorpro-kernel android-gs-tangorpro-5.10-android14 android13-5.10
Pixel 7a (سیاه گوش) دستگاه/گوگل/کرنل سیاهگوش android-gs-lynx-5.10-android14 android13-5.10
پیکسل 7 (پلنگ)
Pixel 7 Pro (یوزپلنگ)
device/google/pantah-kernel android-gs-pantah-5.10-android14 android13-5.10
Pixel 6a (bluejay) device/google/bluejay-kernel android-gs-bluejay-5.10-android14 android13-5.10
Pixel 6 (oriole)
Pixel 6 Pro (raven)
device/google/raviole-kernel android-gs-raviole-5.10-android14 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.6 ) UP1A.231005.007.A1 (10762838) آره
android14-gs-pixel-6.1 اندروید 14-6.1 UP1A.231005.007.A1 (10762838) آره
gs-android13-gs-raviole-5.15 android13-5.15 TQ1A.230205.002 (9471150) خیر

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

نمودار جریان زیر روند به‌روزرسانی هسته را در دستگاه‌های 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 Factory Image استخراج کنید.
  1. تصویر کارخانه پشتیبانی شده را برای دستگاه خود از https://developers.google.com/android/images دانلود کنید.

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

    • دستورات زیر از Pixel 6 Pro UP1A.231005.007.a1 به عنوان مثال استفاده می کنند. نام فایل فشرده را با نام فایل تصویر کارخانه ای که دانلود کرده اید جایگزین کنید.
      unzip raven-up1a.231005.007.a1-factory-5d927f3e.zip
    
      cd raven-up1a.231005.007.a1
    
      unzip image-raven-up1a.231005.007.a1.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. فایل 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

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

build_slider.sh

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

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

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

توجه: اگر تأیید صحت را غیرفعال نکرده اید، باید قبل از فلش کردن کرنل سفارشی این کار را انجام دهید. در اینجا دستور انجام این کار وجود دارد:
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 (پر قرمز)
device/google/redbull-kernel android-msm-redbull-4.19-android14
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