این راهنما دستورالعمل های گام به گام در مورد نحوه دانلود، کامپایل و فلش کردن هسته پیکسل سفارشی برای توسعه ارائه می دهد. با توجه به GKI، اکنون می توان کرنل را مستقل از ساخت پلتفرم اندروید به روز رسانی کرد. این مراحل فقط برای دستگاههای Pixel 6 و جدیدتر قابل اجرا هستند. این به این دلیل است که پیکسل 5 و دستگاههای قبلی نیاز به بهروزرسانی ماژولهای هسته در پارتیشن vendor
دارند که به ساخت پلتفرم اندروید برای آن دستگاهها بستگی دارد. جدول شاخههای هسته پیکسل پشتیبانیشده توسط GKI شامل شاخه مانیفست مخزن هسته برای هر دستگاه پیکسل پشتیبانیشده توسط GKI است. به بخش Legacy Pixel Kernels برای شاخههای Pixel 5 و مانیفست هسته قبلی مراجعه کنید.
GKI از شاخه های هسته پیکسل پشتیبانی می کند
دستگاه | مسیر باینری در درخت AOSP | شعبه های مخزن | هسته GKI |
---|---|---|---|
Pixel 9 Pro Fold (دنباله دار) | device/google/comet-kernels/6.1 | android-gs-comet-6.1-android15-qpr1 | اندروید 15-6.1 |
Pixel 9 (اکنون) Pixel 9 Pro (caiman) Pixel 9 Pro XL (کومودو) | device/google/caimito-kernels/6.1 | android-gs-caimito-6.1-android15-qpr1 | اندروید 15-6.1 |
Pixel 8a (akita) | device/google/akita-kernels/5.15 | android-gs-akita-5.15-android15-qpr1 | اندروید 15-5.15 |
پیکسل 8 (شیبا) پیکسل 8 پرو (هاسکی) | device/google/shusky-kernels/5.15 | android-gs-shusky-5.15-android15-qpr1 | اندروید 15-5.15 |
Pixel Fold (felix) | device/google/felix-kernels/5.10 | android-gs-felix-5.10-android15-qpr1 | اندروید 15-5.10 |
تبلت پیکسل (tangorpro) | device/google/tangorpro-kernels/5.10 | android-gs-tangorpro-5.10-android15-qpr1 | اندروید 15-5.10 |
Pixel 7a (سیاه گوش) | device/google/lynx-kernels/5.10 | android-gs-lynx-5.10-android15-qpr1 | اندروید 15-5.10 |
پیکسل 7 (پلنگ) Pixel 7 Pro (یوزپلنگ) | device/google/pantah-kernels/5.10 | android-gs-pantah-5.10-android15-qpr1 | اندروید 15-5.10 |
Pixel 6a (bluejay) | device/google/bluejay-kernels/5.10 | android-gs-bluejay-5.10-android15-qpr1 | اندروید 15-5.10 |
Pixel 6 (oriole) Pixel 6 Pro (raven) | device/google/raviole-kernels/5.10 | android-gs-raviole-5.10-android15-qpr1 | اندروید 15-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.12 ) | BP11.241025.006 (12620009) | بله |
android-gs-raviole-6.1-android15-qpr2-beta | اندروید 14-6.1 | BP11.241025.006 (12620009) | بله |
gs-android13-gs-raviole-5.15 | android13-5.15 | TQ1A.230205.002 (9471150) | خیر |
دستگاه Pixel خود را آماده کنید
نمودار جریان زیر روند بهروزرسانی هسته را در دستگاههای Pixel 6 و جدیدتر توضیح میدهد:
دستگاه را با استفاده از flash.android.com فلش کنید
- به flash.android.com بروید
- ساخت اندروید را بر اساس پلتفرم Android و ترکیبات هسته پشتیبانی شده انتخاب کنید.
- گزینه های زیر را انتخاب کنید:
- پاک کردن دستگاه
- فلش اجباری تمام پارتیشن ها
- تأیید صحت را غیرفعال کنید
- دکمه Install build را فشار دهید تا دستگاه فلش شود.
هسته را دانلود و کامپایل کنید
مخزن هسته را همگام سازی کنید
برای دانلود کد منبع هسته دستورات زیر را اجرا کنید. برای 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
را در مخزن هسته بهروزرسانی کنید تا با پلتفرم اندرویدی که روی دستگاه فلش شده است مطابقت داشته باشد. چند گزینه برای به روز رسانی فایل vendor_ramdisk- DEVICE .img
وجود دارد. اگر از Android 15 QPR2 (BP11.241025.006) یا جدیدتر استفاده می کنید، از گزینه (1) استفاده کنید. در غیر این صورت از گزینه (2) استفاده کنید.
گزینه 1) فقط بیت های DTB و DLKM ramdisk پارتیشن vendor_boot را به روز کنید
با شروع سریع بوت نسخه 35.0.2-12583183 ، می توانید مستقیماً ramdisk DTB و DLKM را در پارتیشن
vendor_boot
فلش کنید.sdk-repo- HOST_OS -platform-tools-12583183.zip
را از مصنوعات v35.0.2-12583183 در محیط ماشین میزبان خود برای استفاده دانلود و استخراج کنید.دستورالعمل های فلش DTB و
vendor_boot:dlkm
در تصاویر کرنل فلش کنید.گزینه 2) تصویر ramdisk فروشنده را از تصویر کارخانه Pixel استخراج کنید.
تصویر کارخانه پشتیبانی شده را برای دستگاه خود از https://developers.google.com/android/images دانلود کنید.
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برای بدست آوردن ramdisk فروشنده
vendor_boot.img
را باز کنید.KERNEL_REPO_ROOT /tools/mkbootimg/unpack_bootimg.py --boot_img vendor_boot.img \ --out vendor_boot_outفایل
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
کامپایل هسته (کلیف)
در اندروید 13، اسکریپت build.sh
با یک سیستم ساخت هسته جدید به نام Kleaf جایگزین شد. برای دستگاههایی که از android13-5.15
و بالاتر استفاده میکنند، هسته باید با استفاده از Kleaf ساخته شود.
برای 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 (caiman) و Pixel 9 Pro XL (komodo) است. برای 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/6 Pro/6a، اگر از دانلود vendor_ramdisk
در بخش Update the vendor ramdisk صرفنظر کرده اید، به جای فلش کردن تصویر vendor_boot.img
، از دستور زیر برای به روز رسانی ramdisk DTB و DLKM استفاده کنید:
fastboot flash --dtb out/DEVICE /dist/dtb.img vendor_boot:dlkm out/slider/dist/initramfs.img
در اینجا دستورات چشمک زن 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 (crosshatch) | 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 |