النواة الشائعة في Android

النواة الشائعة (AOSP) (المعروفة أيضًا باسم نواة Android الشائعة أو ACK) هي نواة نواة kernel.org، وتتضمّن حزمًا تهم منتدى Android لم يتم دمجها في نواة (النواة) الرئيسية أو المتاحة لفترة طويلة (LTS). يمكن أن تتضمن هذه التصحيحات ما يلي:

  • الخلفيات الأساسية لأحدث الوظائف والميزات المطلوبة لميزات Android
  • الميزات جاهزة لأجهزة Android ولكنها لا تزال قيد التطوير
  • ميزات المورّدين أو المصنّعين الأصليين للأجهزة والتي تكون مفيدة للشركاء الآخرين في المنظومة المتكاملة

android-mainline هو فرع التطوير الأساسي لميزات Android. يتم دمج خط Linux الرئيسي في android-mainline عندما ينشر "لينوس تورفالدز" إصدارًا مُرشّحًا أو مُرشّحًا للإطلاق. قبل العام 2019، تم إنشاء النواة الشائعة لنظام التشغيل Android من خلال استنساخ نواة قناة الدعم الطويل الأمد (LTS) التي تم الإعلان عنها مؤخرًا وإضافة رموز التصحيح الخاصة بنظام التشغيل Android. تغيّرت هذه العملية في عام 2019 لتفرع النواة الشائعة الجديدة لنظام Android من android-mainline. يتجنّب هذا النموذج الجديد الجهد الكبير لإعادة توجيه رموز تصحيح Android واختبارها من خلال تحقيق النتيجة نفسها بشكل متزايد. تخضع android-mainline لاختبارات مستمرة ومستمرة، ويضمن هذا النموذج نواة عالية الجودة من يوم نشرها.

عند الإعلان عن إطلاق قناة الدعم الطويل الأمد (LTS) جديدة، تتفرع النواة المشتركة المقابلة من android-mainline. يتيح ذلك للشركاء بدء مشروع قبل الإعلان عن إصدار قناة الدعم الطويل الأمد (LTS)، من خلال الدمج من android-mainline. بعد إنشاء فرع نواة مشترك جديد، يمكن للشركاء تغيير مصدر الدمج بسلاسة إلى الفرع الجديد.

تتلقّى فروع النواة الشائعة الأخرى عمليات دمج منتظمة من نواة الدعم الطويل الأمد (LTS) المرتبطة بها. تتم عادةً عمليات الدمج هذه فورًا بعد نشر إصدار قناة الدعم الطويل الأمد (LTS). على سبيل المثال، عندما تم نشر الإصدار 6.1.75 من نظام التشغيل Linux، تم دمجه في النواة 6.1 الشائعة (android14-6.1). ننصح الشركاء بشدة بتحديث النواة الخاصة بهم للبقاء على اطّلاع على أحدث المعلومات من خلال قناة الدعم الطويل الأمد (LTS) وإصلاح الأخطاء الخاصة بنظام التشغيل Android.

فرع النواة في ACK KMI

تحتوي نواات GKI على واجهة وحدة Kernel ثابتة. يتم التعرّف على خوارزمية KMI بشكل فريد من خلال إصدار النواة (kernel) وإصدار نظام Android الأساسي، لذلك تتم تسمية الفروع باسم ANDROID_RELEASE-KERNEL_VERSION. على سبيل المثال، يُطلق على النواة 6.1 GKI لنظام Android 14 اسم android14-6.1. بالنسبة إلى Android 15 (AOSP التجريبي)، تم تقديم واجهة GKI kernel android15-6.6.

ميزات وإطلاق النواة

قبل استخدام نظام Android 15 (الإصدار التجريبي من AOSP)، كان من الممكن استخدام أيّ من أحدث ثلاث نواات في عملية إطلاق الجهاز. بدءًا من نظام التشغيل Android 15 (الإصدار التجريبي من AOSP)، يمكن استخدام أحدث إصدارَين من النواة لتشغيلهما على الجهاز. نواة الإطلاق لنظام التشغيل Android 15 (الإصدار التجريبي من AOSP) هما android15-6.6 وandroid14-6.1.

بما أنّ ترقيات النواة غير مطلوبة عند تحديث إصدار النظام الأساسي، يمكن استخدام النواة التي لا تتضمّن أحدث الميزات المتوفّرة في إصدار النظام الأساسي لإطلاق الأجهزة. لذلك، يمكن استخدام النواة المصمَّمة لنظام التشغيل Android 14، مثل android14-6.1، على الأجهزة حتى بعد ترقية إصدار النظام الأساسي إلى Android 15 (إصدار AOSP التجريبي).

إصدار نظام Android الأساسي تشغيل النواة نواة الميزات
Android 15 (إصدار AOSP التجريبي) (2024) android15-6.6
android14-6.1
android15-6.6
الإصدار 14 من نظام التشغيل Android (2023) android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.101
android14-6.1
android14-5.15
نظام التشغيل Android 13 (2022) android13-5.15
android13-5.10
android12-5.101
android12-5.41
android11-5.41
android13-5.15
android13-5.10
نظام التشغيل Android 12 (2021) android12-5.10
android12-5.4
android11-5.41
android-4.19-stable
android12-5.10
android12-5.4
نظام التشغيل Android 11 (2020) android11-5.4
android-4.19-stable
android11-5.4
android-4.19-stable

1 قد يتم فرض قيود إضافية في حال تحديث مقدِّم خدمة الفوترة المرتبط لإصدار النظام الأساسي. بعبارات عامة، يجب أن يكون رقم إصدار Android للنواة أعلى من أو يساوي إصدار المراسلة عبر السحابة الإلكترونية من Firebase المستهدف. يُرجى الاطّلاع على كائن واجهة البائع - مطابقة فروع النواة لمعرفة التفاصيل.

التسلسل الهرمي الشائع للنواة

إنشاء فرع من Android-mainline

يتم عرض المستوى الأعلى للتسلسل الهرمي الشائع للنواة في الشكل 1.

إنشاء نواة شائعة من نواة android-mainline

الشكل 1. إنشاء نواة شائعة من نواة android-mainline

لاحِظ أنّ نواة Android المشتركة الجديدة android14-6.1 قد تشعّبت من android-mainline في عام 2022. في عام 2023، عندما تم الإعلان عن قناة الدعم الطويل الأمد (LTS) التالية، تفرع السمة android15-6.6 من android-mainline.

كما هو موضح في الشكل 1، يمكن أن يكون كل إصدار نواة أساسًا لنواة GKI. على سبيل المثال، النواة v5.15 هما android13-5.15 وandroid14-5.15، وكلاهما نواة ميزات لإصدارات المنصّات المخصّصة لكل منهما. كان هذا هو الحال بالنسبة إلى الإصدار 5.10 أيضًا، حيث تم إنشاء android12-5.10 عند الإعلان عن قناة الدعم الطويل الأمد (LTS) وتشعّب android13-5.10 من android12-5.10 في المرحلة الرئيسية الكاملة لميزات النواة في ربيع 2021 للسماح بتطوير ميزات Android 13. بدءًا من الإصدار Android 15 (الإصدار التجريبي من AOSP) (في عام 2024)، سيكون هناك نواة GKI جديدة واحدة فقط لكل إصدار من النواة (لا يوجد نواة android15-6.1).

مراحل نشاط فرع ACK KMI

وتوضح دورة حياة فرع ACK KMI أدناه في الشكل 2.

6.6 مراحل نشاط فرع ACK KMI

الشكل 2. 6.6 مراحل نشاط فرع ACK KMI

لتوضيح عملية التطوير ودورة حياة الفروع، يركز الشكل 2 على فروع ACK KMI للإصدار 6.6.

يمر كل فرع من فروع ACK KMI عبر ثلاث مراحل مُشار إليها في الشكل 2 بألوان مختلفة في كل فرع. كما هو موضّح، يتم دمج قناة الدعم الطويل الأمد (LTS) بانتظام بغض النظر عن المرحلة.

مرحلة التطوير

عند إنشائه، يدخل فرع ACK KMI في مرحلة التطوير (يُشار إليه باسم dev في "الشكل 2")، وهو مفتوح للمساهمات في ميزات الإصدار التالي من نظام Android الأساسي. في الشكل 2، تم إنشاء android15-6.6 عندما تم الإعلان عن أنّ الإصدار 6.6 هو النواة الجديدة لقنوات الدعم الطويل الأمد (LTS).

مرحلة التثبيت

عند الإعلان عن اكتمال ميزة فرع ACK KMI، تدخل في مرحلة التثبيت (تُسمّى ثابتة في الشكل 2). ما زالت ميزات الشركاء وإصلاحات الأخطاء متاحة، ولكن تم تفعيل ميزة تتبُّع KMI لرصد أي تغييرات تؤثر في الواجهة. في هذه المرحلة، يتم قبول التغييرات التي قد تؤدي إلى كسر خوارزمية KMI ويتم تحديث تعريف مقياس KMI بوتيرة محددة مسبقًا (عادةً كل أسبوعين). يمكنك الاطّلاع على نظرة عامة على أداة GKI للحصول على تفاصيل حول تتبُّع "مؤشر KMI".

المرحلة المجمّدة لخوارزمية KMI

قبل إرسال إصدار نظام أساسي جديد إلى AOSP، يكون فرع ACK KMI مجمّدًا ويظل مجمدًا طوال فترة بقاء الفرع. ويعني هذا أنّه لا يتم قبول التغييرات التي قد تؤدي إلى كسر خوارزمية KMI ما لم يتم تحديد مشكلة أمنية خطيرة لا يمكن التخفيف من حدتها بدون التأثير في مؤشر KMI المستقر. لتجنُّب حدوث أعطال KMI، قد يتم تعديل أو تجاهل بعض رموز التصحيح المُدمَجة من قناة الدعم الطويل الأمد (LTS) إذا لم يكن الإصلاح مطلوبًا لأجهزة Android.

عند تجميد فرع ACK KMI، يمكن قبول إصلاحات الأخطاء وميزات الشركاء طالما أنّ النواة المشتركة الحالية الخاصة بـ KMI غير معطَّلة. يمكن توسيع KMI باستخدام رموز جديدة تم تصديرها، طالما أنّ الواجهات التي تتضمّن رمز KMI الحالي غير متأثرة. عند إضافة واجهات جديدة إلى خوارزمية KMI، تصبح هذه الواجهات مستقرة على الفور ولا يمكن تقسيمها بفعل تغييرات مستقبلية.

على سبيل المثال، لا يُسمح بالتغيير الذي يضيف حقلاً إلى بنية مستخدمة بواسطة النواة الشائعة لواجهة KMI لأنه يغيِّر تعريف الواجهة:

struct foo {
  int original_field1;
  int original_field2;
  int new_field;  // Not allowed
};

int do_foo(struct foo &myarg)
{
  do_stuff(myarg);
}
EXPORT_SYMBOL_GPL(do_foo);

ومع ذلك، لا بأس في إضافة دالة جديدة:

struct foo2 {
  struct foo orig_foo;
  int new_field;
};

int do_foo2(struct foo2 &myarg)
{
  do_stuff2(myarg);
}
EXPORT_SYMBOL_GPL(do_foo2);

طوال فترة بقاء نواة GKI، يتم الحفاظ على التوافق مع مساحة المستخدم كي يمكن استخدام النواة بأمان في إصدار نظام Android الأساسي الذي تم إطلاق الجهاز من خلاله. يضمن الاختبار المستمر مع الإصدارات السابقة الحفاظ على التوافق. إذًا في الشكل 2، يمكن استخدام نواة android15-6.6 للأجهزة التي تعمل بنظام التشغيل Android 15 (التجريبي AOSP) والأجهزة الأحدث. بما أنّ إصدار نظام Android الأساسي متوافق أيضًا مع الإصدارات السابقة، يمكن استخدام نواة android14-6.1 لأجهزة Android 15 (التجريبية AOSP) إما للإطلاق أو الترقية.

رقم الجيل KMI

إذا تم دمج قناة الدعم الطويل الأمد (LTS) أثناء مرحلة التثبيت أو حدثت مشكلة في الأمان أو حدث آخر بعد ذلك يتطلّب قبول رمز تصحيح لتغيير خوارزمية KMI، ستتم إضافة رقم إصدار KMI المسجّل في build.config.common. يمكن العثور على عملية إنشاء خوارزمية KMI الحالية باستخدام الأمر uname:

$ uname -r
6.6.30-android15-6-g86d10b30f51f

الرقم بعد إصدار النظام الأساسي هو إنشاء KMI (6 في هذه الحالة).

إذا تغير جيل KMI، تكون النواة غير متوافقة مع وحدات الموردين التي تتوافق مع الجيل السابق من لوحة KMI، لذا يجب إعادة إنشاء الوحدات وتحديثها بشكل متزامن مع النواة. بعد تجميد KMI، من المتوقع أن تكون التغييرات التي يتم إجراؤها في إنشاء KMI نادرة جدًا.

التوافق بين النواة (kernel)

ستتغيّر متطلبات التوافق بين النواة في عائلة الدعم الطويل الأمد (LTS) نفسها، بدءًا من نواة GKI الجديدة.

نواة GKI

تحافظ نواة GKI على التوافق مع الأنظمة الأساسية لجميع إصدارات نظام Android الأساسي التي تتوافق مع إصدار النواة. بالإضافة إلى ذلك، تتوافق إصدارات نظام Android الأساسي مع الإصدارات القديمة من نواة GKI من الإصدارات السابقة. لذلك، يمكنك استخدام نواة android14-6.1 التي تم تطويرها لنظام التشغيل Android 14 (2023) بأمان على الأجهزة التي تعمل بنظام التشغيل Android 15 (AOSP التجريبي) (2024). يتم التحقّق من التوافق من خلال الاختبار المستمر لنواة GKI مع جميع الإصدارات المتوافقة مع VTS وCTS.

يتسم نظام KMI بأنه مستقر بحيث يمكن تحديث النواة دون الحاجة إلى إعادة إنشاء وحدات النواة في صورة المورد.

لا يتم الحفاظ على توافق KMI بين نواة GKI المختلفة. على سبيل المثال، لا يمكن استبدال نواة android14-6.1 بالنواة android15-6.6 بدون إعادة إنشاء جميع الوحدات.

يمكن استخدام نواة GKI مع الإصدارات الأولية واللاحقة فقط. وهي غير متوافقة مع الإصدارات القديمة. بالتالي، لا تتوافق النواة android15-6.6 مع الأجهزة التي تعمل بنظام التشغيل Android 14 (2023).

مصفوفة التوافق

يعرض هذا الجدول إصدارات النواة المتوافقة مع التطبيق والتي تم اختبارها مع كل إصدار من أنظمة التشغيل Android الأساسية.

إصدار نظام Android الأساسي النواة المتوافقة مع الترقية النواة المتوافقة مع الإطلاق
Android 15 (إصدار AOSP التجريبي) (2024) android15-6.6
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android15-6.6
android14-6.1
الإصدار 14 من نظام التشغيل Android (2023) android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
نظام التشغيل Android 13 (2022) android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
نظام التشغيل Android 12 (2021) android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.19-stable
android11-5.4
android12-5.4
android12-5.10
نظام التشغيل Android 11 (2020) android11-5.4
android-4.19-stable
android11-5.4
android-4.19-stable

إتاحة رموز تصحيح الأمان الدائمة

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

يمكن للشركاء الاطمئنان على أنّ استخدام نواة GKI سيحصلون على جميع رموز تصحيح الأمان الممكنة.

اختبار النواة الشائعة

ويتم اختبار النواة الشائعة باستخدام العديد من أنظمة CI، بالإضافة إلى الاختبار النهائي من خلال المورِّدين.

اختبار نواة Linux الوظيفية

تبدأ اختبارات اختبار Kernel الوظيفي (LKFT) في مجموعة من مجموعات الاختبار المختلفة، بما في ذلك kselftest وLTP وVTS وCTS على مجموعة من أجهزة العامل الفعلي عن بُعد 32 وذراع التشعّب. يمكن العثور على نتائج الاختبارات الحديثة هنا.

اختبار KernelCI

يتم بدء اختبارات الإنشاء والتمهيد في KernelCI كلما تم ربط رمز تصحيح جديد بفرع نواة مشترك. ويتم اختبار العديد من تهيئات التصميم وتشغيلها على لوحات متنوعة. يمكن العثور على النتائج الحديثة لنواة Android هنا.

اختبار الإرسال المسبق وما بعد الإرسال في Android

تُستخدم اختبارات الإرسال المسبق لمنع ظهور الأخطاء في النواة الشائعة لنظام Android. يمكن العثور على ملخّص نتيجة الاختبار في علامة التبويب "عمليات التحقّق" ضِمن عملية تغيير الرمز في نسخة kernel الشائعة في Android.

يتم إجراء اختبار ما بعد الإرسال في Android على الإصدارات الجديدة المنشورة في فروع النواة الشائعة لنظام Android عند تخصيص رموز تصحيح جديدة لفرع نواة مشتركة في Android على ci.android.com. وعند إدخال aosp_kernel كاسم فرع جزئي في ci.android.com، ستظهر لك قائمة بفروع النواة التي تتوفّر لها نتائج. على سبيل المثال، يمكن العثور على نتائج عن android-mainline هنا. عند النقر على إصدار معيّن، ستظهر لك حالة الاختبار في علامة التبويب "Test Results".

إنّ الاختبارات المحدّدة من خلال تعيين الاختبار مع مجموعة الاختبار kernel-presubmit في شجرة مصادر نظام Android الأساسي سيتم إجراؤها كإرسال مُسبَق لفروع Android kernel. على سبيل المثال، سيؤدي الإعداد التالي في test/vts/tests/kernel_proc_file_api_test/TEST_MAPPING إلى تفعيل vts_kernel_proc_file_api_test كاختبار مسبق من قبل التحقق من رمز النواة الشائعة في Android.

{
  "kernel-presubmit": [
    {
      "name": "vts_kernel_proc_file_api_test"
    }
  ]
}

الاختبار لمدة 0 يوم

يتم خلال 0 يوم إجراء اختبار كل حزم على حدة على جميع فروع النواة الشائعة في Android عند توفير رموز تصحيح جديدة. يتم إجراء عدة اختبارات للتمهيد والوظائف والأداء. الانضمام إلى المجموعة العامة cros-kernel-buildreports

اختبار المصفوفة

النواة الشائعة لنظام التشغيل Android إصدارات نظام Android الأساسي مجموعات الاختبار
الهاتف الرئيسي 15 14 13 12 11 10 معيار LKFT بروتوكول KernelCI الإرسال المسبق بعد الإرسال 0-day
android-mainline
android5-6.6
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable

المساهمة في النواة الشائعة في Android

بشكل عام، يجب تطوير الميزات على نظام التشغيل Linux الرئيسي وليس على نواة Android الشائعة. نشجّعك بشدة على إجراء عملية التطوير الأولية، وبعد الموافقة عليها، يمكن إرجاعها بسهولة إلى فرع ACK المحدد حسب الحاجة. يسر فريق Android Kernel دعم جهود النشر لصالح منظومة Android المتكاملة.

أرسِل رموز التصحيح إلى Gerrit واتّبِع إرشادات المساهمة هذه.