إنشاء نواة نظام التشغيل لهواتف Pixel

يقدّم هذا الدليل تعليمات مفصّلة حول كيفية تنزيل نواة Pixel مخصّصة وتجميعها وتثبيتها لتطوير التطبيقات. وبفضل GKI، أصبح بإمكانك الآن تحديث النواة بشكل مستقل عن إصدار منصة Android. لا تنطبق هذه الخطوات إلا على هواتف Pixel 6 والإصدارات الأحدث. ويرجع ذلك إلى أنّ هواتف Pixel 5 والإصدارات الأقدم تتطلّب تحديث وحدات النواة على قسم vendor، وهو ما يعتمد على إصدار منصة Android لهذه الأجهزة. يتضمّن جدول فروع نواة Pixel المتوافقة مع GKI فرع بيان مستودع النواة لكل جهاز Pixel متوافق مع GKI. راجِع قسم نواة Pixel القديمة للاطّلاع على فروع بيان النواة في هواتف Pixel 5 والإصدارات الأقدم.

فروع نواة Pixel المتوافقة مع GKI
جهاز فروع المستودع نواة GKI
‫Pixel 9a (tegu) android-gs-tegu-6.1-android16 android14-6.1
‫Pixel 9 Pro Fold (الاسم الرمزي: comet) android-gs-comet-6.1-android16 android14-6.1
‫Pixel 9 (tokay)
‫Pixel 9 Pro (caiman)
‫Pixel 9 Pro XL (komodo)
android-gs-caimito-6.1-android16 android14-6.1
‫Pixel 8a (akita) android-gs-akita-6.1-android16 android14-6.1
‫Pixel 8 (shiba)
Pixel 8 Pro (husky)
android-gs-shusky-6.1-android16 android14-6.1
‫Pixel Fold (felix) android-gs-felix-6.1-android16 android14-6.1
Pixel Tablet (tangorpro) android-gs-tangorpro-6.1-android16 android14-6.1
‫Pixel 7a (lynx) android-gs-lynx-6.1-android16 android14-6.1
‫Pixel 7 (الاسم الرمزي: panther)
Pixel 7 Pro (الاسم الرمزي: cheetah)
android-gs-pantah-6.1-android16 android14-6.1
‫Pixel 6a (bluejay) android-gs-bluejay-6.1-android16 android14-6.1
‫Pixel 6 (oriole)
Pixel 6 Pro (raven)
android-gs-raviole-6.1-android16 android14-6.1

بالإضافة إلى النواة المتوافقة مع إعدادات المصنع، يتوافق هاتفا Pixel 6 وPixel 6 Pro مع أغراض تطوير GKI فقط على فروع نواة Android الشائعة المضمَّنة في جدول مجموعات نظام التشغيل Android والنواة المتوافقة مع هاتفَي Pixel 6 وPixel 6 Pro. نظرًا إلى الاختلافات في واجهة برمجة التطبيقات الموحّدة للمورّد (UAPI) بين طبقات تجريد الأجهزة (HAL) لنظام Android وبرامج تشغيل نواة Pixel، يقدّم الجدول مجموعات الإصدارات المتوافقة.

مجموعات نظام التشغيل Android ونواة النظام المتوافقة مع هاتفَي Pixel 6 وPixel 6 Pro
فرع بيان نواة Pixel فرع GKI إنشاء إصدار Android
gs-android-gs-raviole-mainline android-mainline android-latest-release
android16-6.12-gs101 android16-6.12 android-latest-release
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 استنادًا إلى مجموعات نظام التشغيل Android ونواة النظام المتوافقة.
  3. حدِّد الخيارات التالية:
    • مسح بيانات الجهاز
    • فرض تثبيت جميع الأقسام
    • إيقاف ميزة "إثبات ملكية الحساب"
  4. انقر على الزر تثبيت الإصدار لتثبيت البرنامج على الجهاز.

**الشكل 2.** مثال على محطة شحن سريعة

تنزيل النواة وتجميعها

مزامنة مستودع النواة

نفِّذ الأوامر التالية لتنزيل رمز مصدر النواة. راجِع جدول مجموعات نظام التشغيل Android والنواة المتوافقة مع هاتفَي Pixel 6 وPixel 6 Pro في 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 في مستودع النواة ليتطابق مع إصدار منصة Android الذي يتم تثبيته على الجهاز. هناك خياران لتعديل ملف vendor_ramdisk-DEVICE.img. استخدِم الخيار (1) إذا كنت تستخدم الإصدار Android 15 QPR2 (BP11.241025.006) أو الإصدارات الأحدث. وفي ما عدا ذلك، استخدِم الخيار (2).

  • الخيار 1) تعديل أجزاء DTB وDLKM ramdisk فقط من قسم 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 في تثبيت صور النواة.

  • الخيار 2) استخراج صورة ramdisk الخاصة بالمورّد من صورة المصنع على Pixel

    1. نزِّل صورة النظام المتوافقة مع جهازك من https://developers.google.com/android/images.

    2. استخرِج vendor_boot.img:

      تستخدِم الأوامر التالية الإصدار AP1A.240505.004 من Pixel 6 Pro كمثال. استبدِل اسم ملف zip باسم ملف صورة المصنع الذي نزّلته.

        unzip raven-ap1a.240505.004-factory-9d783215.zip
      
        cd raven-ap1a.240505.004
      
        unzip image-raven-ap1a.240505.004.zip vendor_boot.img
      
    3. فك حزمة vendor_boot.img للحصول على ramdisk المورِّد.

        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
      ‫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
      

تجميع النواة (Kleaf)

في نظام التشغيل Android 13، تم استبدال البرنامج النصي 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 قبل التثبيت.

جهاز أقسام النواة
‫Pixel 6 (oriole)
‫Pixel 6 Pro (raven)
‫Pixel 6a (bluejay)
boot
dtbo
vendor_boot أو vendor_boot:dlkm
vendor_dlkm (قسم ديناميكي)
‫Pixel 8 (shiba)
Pixel 8 Pro (husky)
Pixel Fold (felix)
Pixel Tablet (tangorpro)
Pixel 7a (lynx)
Pixel 7 (panther)
Pixel 7 Pro (cheetah)
boot
dtbo
vendor_kernel_boot
vendor_dlkm (dynamic partition)
system_dlkm (dynamic partition)

في ما يلي أوامر التثبيت السريع لهاتف Pixel 6 على 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

بالنسبة إلى هواتف Pixel 6 وPixel 6 Pro وPixel 6a، إذا عدّلت vendor_ramdisk في القسم تعديل ramdisk الخاص بالمورّد، استخدِم الأمر التالي بدلاً من ذلك لتعديل القسم vendor_boot:

fastboot flash vendor_boot out/slider/dist/vendor_boot.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.

نواة Pixel القديمة

للحصول على مرجع، يوفّر جدول فروع نواة Pixel القديمة فروع مستودع النواة لهواتف Pixel 5 والإصدارات الأقدم. هذه الأجهزة غير متوافقة مع GKI.

فروع نواة Pixel القديمة
جهاز المسار الثنائي في شجرة AOSP فروع المستودع
‫Pixel 5a (barbet)
‫Pixel 4a (5G) (bramble)
‫Pixel 5 (redfin)
device/google/redbull-kernel android-msm-redbull-4.19-android14-qpr3
‫Pixel 4a (sunfish) device/google/sunfish-kernel android-msm-sunfish-4.14-android13-qpr3
‫Pixel 4 (برتقالي)
‫Pixel 4 XL (مرجاني)
device/google/coral-kernel android-msm-coral-4.14-android13
‫Pixel 3a (sargo)
Pixel 3a XL (bonito)
device/google/bonito-kernel android-msm-bonito-4.9-android12L
‫Pixel 3 (الاسم الرمزي: blueline)
‫Pixel 3 XL (الاسم الرمزي: crosshatch)
device/google/crosshatch-kernel android-msm-crosshatch-4.9-android12
‫Pixel 2 (سمك الوَلّي)
‫Pixel 2 XL (سمك التايمين)
device/google/wahoo-kernel android-msm-wahoo-4.4-android10-qpr3
‫Pixel (sailfish)
‫Pixel XL (marlin)
device/google/marlin-kernel android-msm-marlin-3.18-pie-qpr2