الحفاظ على واجهة مستقرة لوحدة النواة

من الأهمية بمكان الحفاظ على واجهة مستقرة لوحدة النواة (KMI) للمورد الوحدات. تعد نواة GKI يتم إنشاؤها وشحنها في شكل ثنائي والوحدات القابلة للتحميل بواسطة البائع في شجرة منفصلة. يجب أن تعمل نواة GKI ووحدات المورّدين الناتجة عنها كما يلي: على الرغم من أنه تم بناؤهما معًا.

بشكل عام، يمتلك مجتمع Linux استياء من فكرة واجهة التطبيق الثنائية (ABI) في النواة الثبات للنواة الرئيسية. في مواجهة سلاسل الأدوات والتكوينات المختلفة ونواة Linux رئيسية ال��طور باستمرار، ليس من المجدي الحفاظ على خوارزمية KMI ثابتة في الخط الرئيسي. ورغم ذلك، يمكن الحفاظ على مؤشر KMI مستقر في بيئة GKI الخاضعة لقيود عالية جدًا مع هذه القيود:

  • يمكن استخدام إعداد واحد فقط، وهو gki_defconfig، لإنشاء النواة (النواة).

  • لا يتوفَّر KMI إلا في النواة نفسها على إصدارَي LTS وAndroid، مثل android13-5.10 أو android12-5.10 أو android13-5.15.

    • لم يتم الحفاظ على استقرار KMI لجهاز android-mainline.
  • يجب أن تتضمن سلسلة أدوات Clang المحددة فقط المقدمة في بروتوكول AOSP والمحددة يُستخدم الفرع المقابل لإنشاء النواة والوحدات.

  • يتم فقط استخدام الرموز المعروفة لاستخدامها بواسطة الوحدات كما هو محدد في قائمة الرموز والتأكد من استقرارها وتعتبر رموز KMI.

    • من الطبيعي أن تستخدم وحدات المورِّد رموز KMI فقط. هذا النمط يتم فرض القيد بفشل تحميل الوحدة النمطية إذا كانت رموز غير KMI مطلوبة.
  • بعد تجميد فرع KMI، يُسمح بإجراء التغييرات ولكن لا يمكنه تقسيمها. وتشمل هذه التغييرات ما يلي:

    • التغييرات في الإعدادات
    • تغييرات رمز النواة
    • التغييرات في سلسلة الأدوات (بما في ذلك التحديثات)

استخدام عملية التصميم المشروطة وسلسلة أدوات LLVM

تضمن عملية التصميم المحكم الحصول على خوارزمية KMI مستقرة من خلال إظهار repo في تصف السمة kernel/manifest بيئة التصميم بشكل تام. على سبيل المثال، بيان android13-5.15 مثل سلسلة الأدوات والنصوص البرمجية وكل شيء آخر مطلوب لإنشاء نواة عامة لصورة النواة (GKI). إعدادات build.config ذات الصلة مثل إعدادات إصدار GKI build.config.gki.aarch64، من استخدام الأدوات المضمّنة بشكل صحيح لإنشاء إصدار متناسق نتائجك.

ويضمن استخدام عملية إنشاء محكمة أيضًا وصف واجهة التطبيق الثنائية (ABI) شجرة متسقة سواء تم إنشاؤها بواسطة محرك بحث Google (على سبيل المثال، abi_gki_aarch64.xml لـ android13-5.15) أو تم إنشاؤها في شجرة محلية تتضمن المورد الوحدات. تشير رسالة الأشكال البيانية أدوات لإنشاء وصف واجهة التطبيق الثنائية (ABI) ومقارنته الخاصة بواجهة وحدة النواة (KMI) أيضًا كجزء من مستودع المنتجات كما هو موضح في البيان.

يجب أن تكون سلسلة الأدوات المستخدَمة لإنشاء نواة GKI متوافقة تمامًا مع سلسلة الأدوات المستخدمة لإنشاء وحدات البائعين. اعتبارًا من نظام Android 10، يجب إنشاء جميع نواة Android باستخدام سلسلة أدوات لغوي كبير (LLVM). وتتيح لك سلسلة أدوات LLVM إنشاء منتجات يجب أن تنشئ النواة ووحدات البائعين واجهة التطبيق الثنائية (ABI) نفسها التي تستخدمها سلسلة أدوات LLVM من يجب أن يتأكّد "الشريك المعتمد على Google (AOSP)" والشركاء من توافُق "مؤشر KMI" مع نواة GKI. ننصح بشدة باستخدام أدوات التصميم المتوفّرة لأنّها توفّر أفضل توافق.

ما هي الخطوات التالية؟