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

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

شاخه‌های هسته پیکسل پشتیبانی‌شده توسط GKI
دستگاه شاخه‌های مخزن هسته GKI
پیکسل ۹a (تگو) اندروید-جی‌اس-تگو-۶.۱-اندروید۱۶ اندروید ۱۴-۶.۱
پیکسل ۹ پرو فولد (ستاره دنباله‌دار) اندروید-جی‌اس-کامت-۶.۱-اندروید۱۶ اندروید ۱۴-۶.۱
پیکسل ۹ (خب)
پیکسل ۹ پرو (کایمن)
پیکسل ۹ پرو ایکس ال (کومودو)
android-gs-caimito-6.1-android16 اندروید ۱۴-۶.۱
پیکسل ۸a (آکیتا) اندروید-جی‌اس-آکیتا-۶.۱-اندروید۱۶ اندروید ۱۴-۶.۱
پیکسل ۸ (شیبا)
پیکسل ۸ پرو (هاسکی)
اندروید-جی‌اس-شوسکی-۶.۱-اندروید۱۶ اندروید ۱۴-۶.۱
پیکسل فولد (فلیکس) اندروید-جی‌اس-فلیکس-۶.۱-اندروید۱۶ اندروید ۱۴-۶.۱
تبلت پیکسل (تانگورپرو) اندروید-جی-اس-تانگورپرو-۶.۱-اندروید۱۶ اندروید ۱۴-۶.۱
پیکسل ۷a (لینکس) اندروید-جی‌اس-لینکس-۶.۱-اندروید۱۶ اندروید ۱۴-۶.۱
پیکسل ۷ (پلنگ)
پیکسل ۷ پرو (یوزپلنگ)
android-gs-pantah-6.1-android16 اندروید ۱۴-۶.۱
پیکسل ۶a (بلوجی) اندروید-جی-اس-بلوجی-۶.۱-اندروید۱۶ اندروید ۱۴-۶.۱
پیکسل ۶ (مرغابی)
پیکسل ۶ پرو (کلاغ)
android-gs-raviole-6.1-android16 اندروید ۱۴-۶.۱

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

پلتفرم اندروید و ترکیب‌های کرنل پشتیبانی‌شده برای پیکسل ۶/۶ پرو
شاخه مانیفست هسته پیکسل شعبه GKI ساخت پلتفرم اندروید
gs-android-gs-raviole-mainline اندروید-مین‌لاین آخرین نسخه اندروید
gs-android16-6.12-gs101 اندروید ۱۶-۶.۱۲ آخرین نسخه اندروید
gs-android13-gs-raviole-5.15 اندروید ۱۳-۵.۱۵ TQ1A.230205.002 (9471150)

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

نمودار جریان زیر فرآیند به‌روزرسانی هسته در پیکسل ۶ و دستگاه‌های بعدی را شرح می‌دهد:

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

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

  1. به flash.android.com بروید
  2. بر اساس ترکیب‌های پشتیبانی‌شده‌ی پلتفرم و هسته‌ی اندروید، نسخه‌ی اندروید مورد نظر خود را انتخاب کنید.
    • برای android-latest-release ، یکی از گزینه‌های «بازگشت به عمومی»، «Canary» یا «بتا» را انتخاب کنید.
  3. گزینه‌های زیر را انتخاب کنید:
    • دستگاه را پاک کنید
    • فلش اجباری تمام پارتیشن‌ها
    • غیرفعال کردن تأیید
  4. برای فلش کردن دستگاه، دکمه‌ی Install build را فشار دهید.

شکل ۲. مثال ایستگاه فلش

دانلود و کامپایل کرنل

همگام‌سازی مخزن هسته

برای دانلود کد منبع کرنل، دستورات زیر را اجرا کنید. برای مشاهده‌ی Pixel KERNEL_MANIFEST_BRANCH به جدول ترکیبات کرنل و پلتفرم اندروید پشتیبانی‌شده‌ی 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 را در مخزن هسته به‌روزرسانی کنید تا با نسخه پلتفرم اندروید فلش شده روی دستگاه مطابقت داشته باشد. چندین گزینه برای به‌روزرسانی فایل vendor_ramdisk- DEVICE .img وجود دارد. اگر از اندروید 15 QPR2 (BP11.241025.006) یا بالاتر استفاده می‌کنید، از گزینه (1) استفاده کنید. در غیر این صورت، از گزینه (2) استفاده کنید.

  • گزینه ۱) فقط بیت‌های ramdisk مربوط به DTB و DLKM از پارتیشن vendor_boot را به‌روزرسانی کنید

    با شروع از نسخه fastboot 35.0.2-12583183 ، می‌توانید مستقیماً DTB و DLKM ramdisk را روی پارتیشن vendor_boot فلش کنید. sdk-repo- HOST_OS -platform-tools-12583183.zip را از مصنوعات v35.0.2-12583183 دانلود و در محیط دستگاه میزبان خود برای استفاده استخراج کنید.

    دستورالعمل‌ها را برای فلش کردن DTB و vendor_boot:dlkm در فلش کردن ایمیج‌های کرنل دنبال کنید.

  • گزینه ۲) ایمیج 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_ را در مخزن هسته‌ی Pixel کپی کنید.

      دستگاه DEVICE_RAMDISK_PATH
      پیکسل ۶ (مرغابی)
      پیکسل ۶ پرو (کلاغ)
      پیش‌ساخته‌ها/مصنوعات بوت/رم‌دیسک‌ها/vendor_ramdisk- oriole.img
      پیکسل ۶a (بلوجی) خصوصی/دستگاه‌ها/گوگل/بلوجی/فروشنده_رم‌دیسک- bluejay.img
        cp vendor_boot_out/vendor-ramdisk-by-name/ramdisk_ \
            KERNEL_REPO_ROOT/DEVICE_RAMDISK_PATH
      

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

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

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

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

build_slider.sh

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

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

فلش کردن ایمیج‌های کرنل

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

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

دستگاه پارتیشن‌های هسته
پیکسل ۶ (مرغابی)
پیکسل ۶ پرو (کلاغ)
پیکسل ۶a (بلوجی)
بوت
دی‌تی‌بو
vendor_boot یا vendor_boot:dlkm
vendor_dlkm (پارتیشن پویا)
پیکسل ۹ (تگو)
پیکسل ۹ پرو فولد (ستاره دنباله‌دار)
پیکسل ۹ (خب)
پیکسل ۹ پرو (کایمن)
پیکسل ۹ پرو ایکس ال (کومودو)
پیکسل ۸ (شیبا)
پیکسل ۸ پرو (هاسکی)
پیکسل فولد (فلیکس)
تبلت پیکسل (تانگورپرو)
پیکسل ۷a (لینکس)
پیکسل ۷ (پلنگ)
پیکسل ۷ پرو (یوزپلنگ)
بوت
دی‌تی‌بو
فروشنده_هسته_بوت
vendor_dlkm (پارتیشن پویا)
system_dlkm (پارتیشن پویا)

در اینجا دستورات چشمک زن برای پیکسل ۶ در android-mainline آمده است:

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

برای پیکسل ۶/۶ پرو/۶a، اگر vendor_ramdisk در بخش «به‌روزرسانی ramdisk فروشنده» به‌روزرسانی کرده‌اید، در عوض از دستور زیر برای به‌روزرسانی پارتیشن vendor_boot استفاده کنید:

fastboot flash vendor_boot out/slider/dist/vendor_boot.img

تصاویر هسته را می‌توان در DIST_DIR یافت.

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

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

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

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

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

شاخه‌های هسته پیکسل قدیمی
دستگاه مسیر دودویی در درخت AOSP شاخه‌های مخزن
پیکسل ۵a (باربت)
پیکسل ۴a (5G) (رنگ زرشکی)
پیکسل ۵ (ردفین)
دستگاه/گوگل/ردبول-هسته اندروید-msm-redbull-4.19-android14-qpr3
پیکسل ۴a (خورشیدی) دستگاه/گوگل/هسته-خورشیدی اندروید-MSM-Sunfish-4.14-android13-qpr3
پیکسل ۴ (شعله)
پیکسل ۴ ایکس‌ال (مرجانی)
دستگاه/گوگل/هسته مرجانی اندروید-msm-coral-4.14-android13
پیکسل ۳a (سارگو)
پیکسل ۳a XL (با حروف لاتین)
دستگاه/گوگل/هسته بونیتو اندروید-msm-bonito-4.9-android12L
پیکسل ۳ (خط آبی)
پیکسل ۳ ایکس‌ال (با هاشور متقاطع)
دستگاه/گوگل/کراس‌هاچ-هسته اندروید-msm-crosshatch-4.9-android12
پیکسل ۲ (وال‌آی)
پیکسل ۲ ایکس‌ال (تا به حال)
دستگاه/گوگل/wahoo-kernel اندروید-msm-wahoo-4.4-android10-qpr3
پیکسل (بادبان‌ماهی)
پیکسل XL (مارلین)
دستگاه/گوگل/هسته مارلین اندروید-MSM-marlin-3.18-pie-qpr2