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

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

بشكل عام، كان منتدى Linux يرفض فكرة ثبات ABI داخل kernel لنظام التشغيل الرئيسي. في ظلّ سلاسل الأدوات والإعدادات المختلفة، ونظام التشغيل Linux الأساسي المتغيّر باستمرار، ليس من الممكن الحفاظ على مجموعة أدوات KMI ثابتة في الإصدار الأساسي. ومع ذلك، من الممكن الحفاظ على مؤشر أداء مستدام في قياس الأداء في بيئة قياس الأداء على مستوى Google التي تفرض قيودًا صارمة من خلال تطبيق القيود التالية:

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

  • لا يكون معهد KMI ثابتًا إلا ضمن إصدارات LTS وAndroid نفسها من kernel، مثل android13-5.10 أو android12-5.10 أو android13-5.15.

    • لم يتم الحفاظ على ثبات مؤشر KMI لـ android-mainline.
  • لا يتم استخدام سوى مجموعة أدوات Clang المحدّدة والمضمّنة في AOSP والمُحدَّدة للفرع المقابل من أجل إنشاء النواة والوحدات.

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

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

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

استخدام عملية التصميم المحكم وسلسلة أدوات LLVM

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

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

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

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

  • للحصول على تعليمات حول إنشاء النواة باستخدام عملية الإنشاء التام ومجموعة أدوات LLVM، يُرجى الرجوع إلى مقالة إنشاء النوى.

  • للحصول على تعليمات حول كيفية مراقبة ABI وحلّ المشاكل، يُرجى الرجوع إلى مقالة مراقبة ABI لنظام تشغيل Android.