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

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

پیکسل ۶ و پیکسل ۶ پرو همچنین در هسته لینوکس بالادستی پشتیبانی می‌شوند و می‌توانند فقط با درایورهای بالادستی به اعلان پوسته دستگاه بوت شوند. برای جزئیات بیشتر به ساخت و فلش کردن هسته پیکسل بالادستی مراجعه کنید.

ساخت و فلش کردن هسته‌های GKI Pixel

این بخش مراحل همگام‌سازی، ساخت و فلش کردن شاخه‌های هسته پشتیبانی‌شده توسط 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 و Pixel 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 به جدول ترکیبات کرنل و پلتفرم اندروید پشتیبانی‌شده‌ی پیکسل ۶ و پیکسل ۶ پرو مراجعه کنید.

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 فلش کنید. برای استفاده از این گزینه، Android platform-tools خود را به نسخه 36.0.0 یا جدیدتر ارتقا دهید. برای انجام این کار، دستور زیر را اجرا کنید:

    $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platform-tools"
    

    دستورالعمل‌ها را برای فلش کردن 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
      

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

در اندروید ۱۳، اسکریپت 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 استفاده کنید.

ساخت و فلش کردن هسته پیکسل بالادستی

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

برای شروع مراحل بعدی را دنبال کنید.

  1. با دنبال کردن مراحل موجود در بخش «آماده‌سازی دستگاه Pixel» دستگاه خود را آماده کنید.
  2. با دنبال کردن مراحل موجود در Sync the kernel repository، شاخه manifest هسته common-android-mainline را همگام‌سازی کنید.
  3. پیکربندی هدف ساخت Kleaf در مسیر KERNEL_REPO_ROOT /devices/google/raviole تعریف شده است. برای کامپایل هدف ساخت raviole_upstream ، دستور Kleaf را اجرا کنید:

    tools/bazel run //devices/google/raviole:raviole_upstream_dist
    
  4. مشابه کرنل‌های اصلی، هنگام فلش کردن یک کرنل سفارشی روی ایمیج‌های کارخانه‌ای اندروید، تأیید را غیرفعال کرده و دستگاه خود را پاک کنید. برای جزئیات بیشتر به یادداشت‌های موجود در فلش کردن ایمیج‌های کرنل مراجعه کنید.

  5. در حالت فست‌بوت، دستورات زیر را برای فلش کردن ایمیج‌های کرنل اجرا کنید:

    fastboot flash boot        out/raviole_upstream/dist/boot.img
    fastboot flash dtbo        out/raviole_upstream/dist/dtbo.img
    fastboot flash  --dtb out/raviole_upstream/dist/dtb.img \
        vendor_boot:dlkm out/raviole_upstream/dist/initramfs.img
    
  6. برای دسترسی به اعلان پوسته دستگاه، می‌توانید با اجرای دستور زیر، دستگاه را مجدداً به حالت ریکاوری ببرید:

    fastboot reboot recovery
    

    با اجرای دستور adb shell پوسته دستگاه را باز کنید. همچنین می‌توان با اجرای دستور adb root از دسترسی روت استفاده کرد.

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

به عنوان مرجع، جدول شاخه‌های هسته Legacy 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