بناء نواة Pixel

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

فروع نواة Pixel المتوافقة مع GKI
الجهاز مسار الثنائي في شجرة AOSP فروع المستودع نواة GKI
Pixel 9 Pro Fold (comet) device/google/comet-kernels/6.1 android-gs-comet-6.1-android15-qpr1 android15-6.1
‫Pixel 9 (tokay)
Pixel 9 Pro (caiman)
Pixel 9 Pro XL (komodo)
device/google/caimito-kernels/6.1 android-gs-caimito-6.1-android15-qpr1 android15-6.1
Pixel 8a (akita) device/google/akita-kernels/5.15 android-gs-akita-5.15-android15-qpr1 android15-5.15
‫Pixel 8 (سلالة شيبا)
Pixel 8 Pro (سلالة كلب الهاسكي)
device/google/shusky-kernels/5.15 android-gs-shusky-5.15-android15-qpr1 android15-5.15
Pixel Fold (felix) device/google/felix-kernels/5.10 android-gs-felix-5.10-android15-qpr1 android15-5.10
Pixel Tablet (tangorpro) device/google/tangorpro-kernels/5.10 android-gs-tangorpro-5.10-android15-qpr1 android15-5.10
Pixel 7a (lynx) device/google/lynx-kernels/5.10 android-gs-lynx-5.10-android15-qpr1 android15-5.10
‫Pixel 7 (النمر)
Pixel 7 Pro (الفهد)
device/google/pantah-kernels/5.10 android-gs-pantah-5.10-android15-qpr1 android15-5.10
Pixel 6a (bluejay) device/google/bluejay-kernels/5.10 android-gs-bluejay-5.10-android15-qpr1 android15-5.10
‫Pixel 6 (oriole)
Pixel 6 Pro (raven)
device/google/raviole-kernels/5.10 android-gs-raviole-5.10-android15-qpr1 android15-5.10

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

مجموعات الإصدارات المتوافقة من نظام التشغيل Android والنواة لهاتفَي Pixel 6 وPixel 6 Pro
فرع بيان نواة Pixel فرع GKI إصدار نظام Android الأساسي هل يمكنك تقديم الدعم بشأن aosp-main؟
gs-android-gs-raviole-mainline android-mainline (الإصدار 6.8) AP1A.240505.004 (11583682) نعم
android14-gs-pixel-6.1 android14-6.1 AP1A.240505.004 (11583682) نعم
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 Platform وKernel المتوافقة.
  3. حدِّد الخيارات التالية:
    • مسح بيانات الجهاز
    • فرض فلاش لجميع الأقسام
    • إيقاف ميزة "إثبات الملكية"
  4. اضغط على الزر تثبيت الإصدار لفلاش الجهاز.

**الشكل 2.** مثال على محطة الفلاش

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

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

شغِّل الأوامر التالية لتنزيل رمز المصدر للنواة. يُرجى الرجوع إلى جدول مجموعات أنظمة التشغيل Android وبرامج التشغيل المتوافقة مع هواتف Pixel 6/6 Pro لهاتف Pixel KERNEL_MANIFEST_BRANCH.

repo init -u https://android.googlesource.com/kernel/manifest -b KERNEL_MANIFEST_BRANCH
repo sync -c --no-tags

تعديل ذاكرة التخزين المؤقت للمورّد

عدِّل الملف vendor_ramdisk-DEVICE.img في مستودع ملف kernel لكي يتطابق مع إصدار نظام التشغيل Android الذي تم تثبيته على الجهاز. هناك بعض الخيارات التي يمكنك اتّباعها.

الخيار 1) استخراج صورة ذاكرة التخزين المؤقت للجهاز من صورة المصنع لهواتف Pixel
  1. نزِّل صورة المصنع المتوافقة لجهازك من https://developers.google.com/android/images.

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

    • تستخدِم الأوامر التالية طراز Pixel 6 Pro AP1A.240505.004 كمثال. استبدِل اسم ملف 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
    
الخيار 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

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

في الإصدار 13 من Android، تم استبدال النص البرمجي build.sh بنظام جديد لإنشاء النواة يُعرف باسم Kleaf. بالنسبة إلى الأجهزة التي تستخدم الإصدار android13-5.15 والإصدارات الأحدث، يجب إنشاء النواة باستخدام Kleaf.

بالنسبة إلى هاتفَي Pixel 6 وPixel 6 Pro اللذَين يستخدمان نواة android14 والإصدارات الأحدث، يمكنك تنفيذ الأمر التالي لإنشاء Kleaf:

tools/bazel run --config=fast --config=stamp //private/google-modules/soc/gs:slider_dist

بالنسبة إلى هواتف Pixel 6 وPixel 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 ضمن جدول فروع نواة Pixel المتوافقة مع 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.

على سبيل المثال، لإنشاء نواة لجهاز Pixel 6 على الفرع android-gs-raviole-5.10-android14، عليك تنفيذ الأمر التالي:

build_slider.sh

تستخدم نصوص build_DEVICE.sh البرمجية تلقائيًا قلب GKI المُنشئ مسبقًا لتسريع عملية التصميم. إذا كنت تريد تعديل النواة الأساسية، اضبط متغيّر البيئة BUILD_AOSP_KERNEL=1 لإنشاء النواة من المصادر المحلية بدلاً من ذلك.

لمزيد من التفاصيل حول نظام إنشاء نواة النظام وكيفية تخصيص عملية الإنشاء، يُرجى الرجوع إلى المقالة Kleaf - إنشاء نواة نظام Android باستخدام Bazel.

فلاش صور النواة

ملاحظة: إذا لم تكن قد أوقفت ميزة التحقّق، عليك إجراء ذلك قبل فلاش نواة مخصّصة. في ما يلي الأمر لتنفيذ ذلك:
fastboot oem disable-verification
تحذير: إذا كنت بصدد فلاش نواة مخصّصة على ملف برمجي لنظام أساسي، قد تحتاج إلى محو بيانات جهازك إذا كان هناك تحديث قديم لمستوى تصحيح الأمان (SPL) مرتبط بالنواة الجديدة. ستؤدي هذه العملية إلى محو جميع بياناتك الشخصية. احرص على الاحتفاظ بنسخة احتياطية من بياناتك قبل محو ذاكرة الجهاز.
fastboot -w

لفلاش صور النواة، شغِّل الأمر fastboot flash لكل قسم نواة مُدرَج لجهازك. بالنسبة إلى الأقسام الديناميكية، عليك إعادة التشغيل في وضع fastbootd قبل الفلاش.

الجهاز أقسام النواة
‫Pixel 6 (طائر أبو قلقل)
Pixel 6 Pro (غراب)
Pixel 6a (طائر جاي أزرق)
boot
dtbo
vendor_boot
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 (القسم الديناميكي)
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
ملاحظة: إذا كان لديك جهاز تحكّم تسلسلي وتريد تفعيل ملفّات log التسلسلية، يكون الأمر على النحو التالي:
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 (خطوط زرقاء)
Pixel 3 XL (خطوط متقاطعة)
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