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

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

يتوافق هاتفَي Pixel 6 وPixel 6 Pro أيضًا مع إصدار Linux الأساسي، ويمكنهما بدء التشغيل في موجه أوامر الجهاز باستخدام برامج التشغيل الأساسية فقط. لمزيد من التفاصيل، يمكنك الاطّلاع على إنشاء نواة Pixel الرئيسية وتثبيتها.

إنشاء وتثبيت نواة GKI Pixel

يقدّم هذا القسم خطوات مزامنة فروع النواة المتوافقة مع GKI وإنشائها وتثبيتها. يوضّح الجدول التالي ربطًا بين أجهزة Pixel المتوافقة وفروع مستودع نواة الإصدارات المتاحة.

فروع نواة 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
gs-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.** مخطّط انسيابي لتحديث النواة

تثبيت ذاكرة ROM على الجهاز باستخدام flash.android.com

  1. انتقِل إلى flash.android.com.
  2. اختَر إصدار Android استنادًا إلى مجموعات نظام التشغيل Android والنواة المتوافقة.
    • بالنسبة إلى android-latest-release، اختَر "العودة إلى الإصدار العلني" أو Canary أو الإصدار التجريبي.
  3. حدِّد الخيارات التالية:
    • حذف بيانات الجهاز
    • فرض تثبيت ذاكرة ROM لجميع الأقسام
    • إيقاف ميزة "تأكيد الحساب"
  4. انقر على الزر تثبيت ذاكرة ROM لتثبيت ذاكرة ROM على الجهاز.

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

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

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

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

    اعتبارًا من الإصدار 35.0.2-12583183 من Fastboot، يمكنك تثبيت ذاكرة ROM لـ DTB وDLKM ramdisk مباشرةً على القسم vendor_boot. يجب ترقية أدوات النظام الأساسي لنظام Android إلى الإصدار 36.0.0 أو إصدار أحدث لاستخدام هذا الخيار. نفِّذ الأمر التالي لإجراء ذلك:

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

    اتّبِع التعليمات لتثبيت ذاكرة ROM لـ DTB وvendor_boot:dlkm في تثبيت ذاكرة ROM لصور النواة.

  • الخيار 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
      

تجميع النواة

في نظام التشغيل 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

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

الجهاز أقسام النواة
‫Pixel 6 (oriole)
‫Pixel 6 Pro (raven)
‫Pixel 6a (bluejay)
boot
dtbo
vendor_boot أو vendor_boot:dlkm
vendor_dlkm (قسم ديناميكي)
‫Pixel 9 (tegu)
‫Pixel 9 Pro Fold (comet)
‫Pixel 9 (tokay)
‫Pixel 9 Pro (caiman)
‫Pixel 9 Pro XL (komodo)
‫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 في تعديل vendor 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 6 وPixel 6 Pro متوافقان مع نواة Linux الرئيسية، يمكنك استخدام android-mainline مع برامج التشغيل الرئيسية فقط لتشغيل الجهاز في وضع shell والحصول على مطالبة بتطوير النواة. يقدّم هذا القسم خطوات مزامنة نواة هاتفَي Pixel 6 وPixel 6 Pro وإنشائها وتثبيتها من android-mainline.

اتّبِع الخطوات التالية للبدء.

  1. جهِّز جهازك باتّباع الخطوات الواردة في تجهيز جهاز Pixel.
  2. يمكنك مزامنة فرع بيان نواة common-android-mainline باتّباع الخطوات الواردة في مزامنة مستودع النواة.
  3. يتم تحديد إعدادات هدف إنشاء Kleaf ضمن المسار KERNEL_REPO_ROOT/devices/google/raviole. لتجميع raviole_upstream الإصدار المستهدف، شغِّل أمر Kleaf التالي:

    tools/bazel run //devices/google/raviole:raviole_upstream_dist
    
  4. وكما هو الحال مع نُسخ الإنتاج من النواة، عليك إيقاف عملية التحقّق ومحو بيانات جهازك عند تثبيت نسخة مخصّصة من النواة فوق صور Android الأصلية. يُرجى الرجوع إلى الملاحظات في تثبيت صور النواة لمزيد من التفاصيل.

  5. في وضع fastboot، نفِّذ الأوامر التالية لتثبيت صور النواة:

    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. للوصول إلى موجه أوامر shell على الجهاز، يمكنك إعادة التشغيل إلى وضع الاسترداد من خلال تنفيذ الأمر التالي:

    fastboot reboot recovery
    

    افتح وحدة تحكّم الجهاز عن طريق تنفيذ الأمر adb shell. يمكن أيضًا استخدام إذن الوصول إلى الجذر من خلال تنفيذ الأمر adb root.

نواة 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 (walleye)
Pixel 2 XL (taimen)
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