مشروع صورة Kernel عامة (GKI)

نواة المنتج، المعروفة أيضًا باسم نواة الجهاز أو نواة المصنّع الأصلي للجهاز، هي النواة التي تشحنها على جهازك. قبل إطلاق GKI، تم اشتقاق نواة المنتج من سلسلة من التغييرات في النواة الأولية. يوضّح الشكل 1 كيفية تكوين نواة المنتج (نواة المصنّع الأصلي للجهاز/الجهاز) من خلال إضافات النواة:

إنشاء نواة المنتج قبل بدء استخدام مبادرة GKI

الشكل 1: إنشاء نواة المنتج قبل بدء استخدام مبادرة GKI

  1. تم تعديل نواة التوافق الطويل الأمد (LTS) في Linux من kernel.org باستخدام رموز التصحيح الخاصة بنظام التشغيل Android والتي نتج عنها نواة Android مشتركة (ACK).
  2. تم تعديل ACK من قِبل المورّدين الذين أضافوا دعمًا لنظامهم على شريحة (SoC). وقد يضيف المورّدون أيضًا تحسينات على الأداء أو الطاقة. ويُطلق على القيمة المحصلة اسم النواة الخاصة بالمورّد.
  3. أخيرًا، عدّلت الشركات المصنّعة للأجهزة نواة المورّد باستخدام مزيد من برامج تشغيل الأجهزة والتخصيصات التي ترى أنّها ضرورية. ويُطلق على هذه البنية الأساسية اسم البنية الأساسية للمنتج.

يمكن أن تؤدي كل هذه التعديلات إلى أن يكون ما يصل إلى% 50 من رمز المعالج الأساسي رمزًا خارج الشجرة وليس من أنظمة التشغيل Linux أو ACKs. قبل ظهور GKI، كان كل جهاز تقريبًا يحتوي على نواة مخصّصة تؤدي إلى تفتيت ملف kernel.

تكاليف التجزئة

ينتج عن تجزئة النواة العديد من التأثيرات السلبية في منتدى Android.

تحديثات الأمان تتطلّب الكثير من الجهد

يجب إعادة استخدام الرقع الأمنية المُشار إليها في نشرة أمان Android (ASB) في كل نواة من نوى الجهاز. ومع ذلك، بسبب عدم اتّساق ملف التمهيد، فإنّ نشر إصلاحات الأمان على أجهزة Android في الميدان يتطلّب تكاليف باهظة.

من الصعب دمج التحديثات المتاحة على المدى الطويل

تتضمّن إصدارات الدعم الطويل الأمد (LTS) إصلاحات الأمان وغيرها من إصلاحات الأخطاء الحرجة. ثبُت أنّ التحديث المستمر لإصدارات الدعم الطويل الأمد (LTS) هو الطريقة الأكثر فعالية لتوفير إصلاحات الأمان. على أجهزة Pixel، تم اكتشاف أنّه سبق أن تم حلّ ‎90% من مشاكل أمان النواة التي تم الإبلاغ عنها في نشرة ASB على الأجهزة التي يتم تحديثها باستمرار.

مع ذلك، مع كل التعديلات المخصّصة في نواة الجهاز، قد يكون من الصعب دمج إصلاحات الدعم الطويل الأمد (LTS) في نواة الجهاز فقط.

منع ترقيات إصدارات نظام التشغيل Android

يجعل التجزئة من الصعب على ميزات Android الجديدة التي تتطلب إضافة تغييرات على النواة إلى الأجهزة في الميدان. يجب أن يفترض رمز إطار عمل Android أنّه يمكن استخدام ما يصل إلى خمسة إصدارات من نواة النظام وأنّه لم يتم إجراء أي تغييرات على نواة النظام لإصدار المنصة الجديد (يتوافق Android 10 مع نواة النظام 3.18 و4.4 و4.9 و4.14 و4.19، والتي لم يتم في بعض الحالات تحسينها بميزات جديدة منذ Android 8 في عام 2017).

من الصعب المساهمة بتغييرات النواة مرة أخرى في بداية تشغيل نظام التشغيل Linux

مع كل التغييرات التي تمّ إجراؤها على النواة (kernel)، يتم شحن معظم الأجهزة الرئيسية بإصدار نواة تم إنشاؤه قبل 18 شهرًا على الأقل. على سبيل المثال، تم إصدار ملف التمهيد 4.14 من قِبل kernel.org في تشرين الثاني (نوفمبر) 2017، وتم شحن أول هواتف Android التي تستخدم ملفات التمهيد 4.14 في ربيع 2019.

بسبب هذا التأخير الطويل بين إصدار النواة الأولية والمنتجات، يصبح من الصعب على منتدى Android توفير الميزات وبرامج التشغيل المطلوبة في النواة الرئيسية.

إصلاح التجزئة: صورة Kernel عامة

يعالج مشروع Generic Kernel Image (GKI) تجزئة النواة من خلال توحيد النواة الأساسية ونقل دعم وحدة المعالجة المركزية (SoC) واللوحة خارج النواة الأساسية إلى وحدات المصنّعين القابلة للتحميل. يوفّر GKI أيضًا واجهة برمجة تطبيقات ثابتة لوحدة المعالجة الأساسية (KMI) لوحدات المورّدين، ما يتيح تحديث الوحدات والنواة بشكلٍ مستقل. في ما يلي بعض خصائص نواة GKI:

  • تم إنشاء نواة GKI من مصادر ACK.
  • نواة GKI هي ملف ثنائي بنواة واحدة بالإضافة إلى وحدات قابلة للتحميل مرتبطة بها لكل بنية وإصدار LTS (الإصدار arm64 فقط حاليًا لنظامَي التشغيل android11-5.4 وandroid12-5.4).
  • يتم اختبار نواة GKI مع جميع إصدارات نظام Android المتوافقة مع ACK المرتبط. لن يتم إيقاف أي ميزة نهائيًا طوال فترة بقاء إصدار GKI kernel.
  • تعرِض نواة GKI واجهة برمجة تطبيقات KMI ثابتة لبرامج تشغيل الأجهزة ضمن قناة دعم طويل الأمد معيّنة.
  • لا يحتوي نواة GKI على رمز خاص بوحدة المعالجة المركزية أو اللوحة.

للحصول على صورة لبنية GKI، يُرجى الرجوع إلى مقالة نظرة عامة على النواة.

إنّ GKI هو تغيير معقّد تم طرحه على مراحل متعددة بدءًا من ملفّات ‎v5.4 kernel في إصدار نظام Android 11 الأساسي.

هناك مرحلتان من مراحل تقييم الأداء من خلال تحليلات الشبكة:

  • تم طرح الإصدار 1.0 من GKI في نظام التشغيل Android 11 للأجهزة التي تعمل بالإصدار 5.4 من نواة النظام. ينطبق الإصدار 1.0 من GKI على جميع الأجهزة التي يتم شحنها مع نواة 5.4، حتى تلك التي تم تشغيلها باستخدام Android 12 أو Android 13.
  • تم طرح GKI 2.0 في Android 12 للأجهزة التي تعمل بالإصدار 5.10 من نواة النظام، وهو المعيار الجديد لجميع الأجهزة التي تعمل بالإصدار 5.10 أو الإصدارات الأحدث من نواة النظام.

GKI 1.0

في الإصدار 1.0 من GKI، يجب اجتياز اختبار GKI (الإصدار 11 والإصدارات الأحدث من نظام التشغيل Android والإصدارات الأحدث من الأجهزة التي تعمل بالإصدار 5.4 من النواة). تشمل أهداف GKI 1.0 ما يلي:

  • تجنَّب حدوث تراجعات في مجموعة اختبار المورّد (VTS) أو مجموعة اختبار التوافق (CTS) عند استبدال نواة المنتج بنواة GKI.
  • تخفيف عبء تحديث نواة نظام التشغيل لدى الشركاء باستخدام نوى AOSP الشائعة
  • تضمين تغييرات Android الأساسية في نواة الأجهزة التي يتم ترقيتها وتشغيلها مع إصدارات Android الجديدة
  • يجب عدم إيقاف مساحة المستخدم في Android.
  • فصل المكونات الخاصة بالأجهزة عن النواة الأساسية كوحدات قابلة للتحميل.

للاطّلاع على مستندات GKI 1.0، يُرجى الانتقال إلى قسم GKI 1.0.

الإصدار 2.0 من GKI

في الإصدار 2.0 من GKI، يجب أن يتم شحن الأجهزة التي تعمل بالإصدار 5.10 من kernel أو إصدار أحدث مع kernel GKI (بدءًا من Android 12). تتوفّر صور التمهيد الموقَّعة ويتم تحديثها بانتظام مع إصدارات الدعم الطويل الأمد وإصلاحات الأخطاء المُهمّة. وبما أنّه يتم الحفاظ على ثبات الثنائيات لـ KMI، يمكنك تثبيت ملف التمهيد هذه بدون إجراء تغييرات على صور المورّدين. تشمل أهداف GKI 2.0 ما يلي:

  • يجب عدم حدوث تراجعات كبيرة في الأداء أو الطاقة عند استبدال النواة الخاصة بالمنتج بنواة GKI.
  • تمكين الشركاء من تقديم إصلاحات أمان للنواة وإصلاحات للأخطاء بدون إشراك المورّد
  • تقليل تكلفة تحديث الإصدار الرئيسي من نواة الأجهزة (على سبيل المثال، من الإصدار 5.10 إلى نواة 2021 LTS)
  • الحفاظ على ملف ثنائي واحد لنظام التشغيل GKI لكل بنية من خلال تحديث ملفَّي GKI باستخدام عملية واضحة للترقية

يمثّل الإصدار 2.0 من GKI أحدث حالة لنواة Android. تعكس مستندات ملف التمهيد خارج قسمَي GKI 1.0 و الإصدارات السابقة من ملف التمهيد (<=4.19) بنية GKI 2.0.