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

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

  • Backports واختيار الكرز للوظائف الأولية اللازمة لميزات Android
  • ميزات جاهزة لأجهزة Android ولكنها لا تزال قيد التطوير (على سبيل المثال، تحسينات موضع المهام الخاصة بـ Energy Aware Scholer).
  • ميزات المورد/OEM المفيدة لشركاء النظام البيئي الآخرين (على سبيل المثال، sdcardfs).

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

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

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

فرع نواة ACK KMI

تحتوي حبات GKI على واجهة وحدة Kernel مستقرة. يتم تعريف KMI بشكل فريد من خلال إصدار kernel وإصدار نظام Android الأساسي، لذلك تتم تسمية الفروع <androidRelease>-<kernel version> . على سبيل المثال، تم تسمية نواة GKI 5.4 لنظام Android 11 باسم android11-5.4. بالنسبة لنظام التشغيل Android 12، هناك نوعان إضافيان من نواة GKI، android12-5.4 و android12-5.10 .

فروع نواة الحلوى القديمة

تم إنشاء حبات الحلوى القديمة لضمان عدم تداخل تطوير الميزات الجديدة مع الدمج من نواة Android الشائعة. تم إنشاء الفروع قبل إصدار الحلوى المرتبط بها وتتلقى عمليات دمج منتظمة من LTS، ولكن لا توجد ميزات جديدة. على سبيل المثال، يتلقى android-4.9-q عمليات الدمج من فرع LTS 4.9.y.

إذا لم يكن إصدار kernel بمثابة نواة تشغيل، فلن يتم إنشاء نواة للحلوى، ولكن النواة المرتبطة بأحدث إصدار للنظام الأساسي تكون صالحة للترقية إلى إصدارات نظام Android الأساسي المستقبلية. على سبيل المثال، كان android-4.9-q هو آخر فروع الحلوى android-4.9* ، لذلك تم دعمه واختباره باستخدام إصدار النظام الأساسي الأصلي، Android 10. كما أنه مدعوم واختباره مع إصدارات النظام الأساسي التي تدعم ترقيات الأجهزة التي تعمل بالإصدار 4.9. النوى: أندرويد 11 وأندرويد 12.

نظرًا لأنه تم إسقاط نظام تسمية الحلوى لإصدارات نظام Android الأساسي مع Android 10، فإن إصدارات الحلوى الأخيرة التي كان من الممكن أن يطلق عليها android-4.14-r و android-4.19-r تم تسميتها بدلاً من ذلك android-4.14-stable و android-4.19-stable .

يتم استبدال حبات الحلوى بنواة GKI بدءًا من Android 11، لذا فإن القائمة الكاملة لنواة الحلوى المدعومة موجودة في هذا الجدول.

إطلاق منصة أندرويد نواة مدعوم حتى
أندرويد 10 android-4.9-q
android-4.14-q
android-4.19-q
يناير 2023
أندرويد 11 android-4.14-stable
android-4.19-stable
يناير 2024
ديسمبر 2024

فروع النواة القديمة

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

في كل شهر، عند نشر نشرة أمان Android، يتم تحديث هذه النوى بمنافذ خلفية للتصحيحات المذكورة في النشرة ذات الصلة بالنواة الأولية ونواة Android الشائعة. ولا يتلقون تصحيحات LTS، لذا لا يتغير رقم الإصدار الثانوي أبدًا. وهي لا تحتوي على منافذ خلفية للتصحيحات الخاصة بالبائع.

في إصدار Android 11 والإصدارات الأحدث من النظام الأساسي، يجب على الشركاء الدمج من نواة الحلوى أو GKI لتطبيق التصحيحات المذكورة في نشرة أمان Android. لن يتم إنشاء نواة إصدار لنظام Android 11 أو إصدارات النظام الأساسي الأحدث.

ولذلك، فإن القائمة الكاملة التي تضم 14 نواة إصدار معروضة في هذا الجدول، ولن تتم إضافة أي منها.

إطلاق منصة أندرويد نواة مدعوم حتى
أندرويد 10 android-4.9-q-release
android-4.14-q-release
android-4.19-q-release
يناير 2023

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

يدعم كل إصدار لنظام Android الأساسي إطلاق أجهزة جديدة تعتمد على أي من إصدارات Linux kernel الثلاثة. كما هو موضح في الجدول أدناه، فإن نواة الإطلاق لنظام Android 11 هي android-4.14-stable و android-4.19-stable و android11-5.4 .

نظرًا لأن ترقيات kernel ليست مطلوبة بشكل عام عند تحديث إصدار النظام الأساسي، فلا يزال من الممكن استخدام النواة التي تفتقد أحدث الميزات لإصدار النظام الأساسي لتشغيل الأجهزة. لذلك يمكن استخدام النوى التي تم تصميمها لنظام Android 10، مثل android-4.19-q ، على الأجهزة حتى بعد ترقية إصدار النظام الأساسي إلى Android 11. بدءًا من Android 12، سيكون هناك عدد أقل من نواة الميزات مقارنة بنواة الإطلاق للحد من عدد مؤشرات KMI المستقرة التي يجب دعمها.

إطلاق منصة أندرويد إطلاق النواة نواة مميزة
أندرويد 14 (2023) android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10 1
android14-6.1
android14-5.15
أندرويد 13 (2022) android13-5.15
android13-5.10
android12-5.10 1
android12-5.4 1
android11-5.4 1
android13-5.15
android13-5.10
أندرويد 12 (2021) android12-5.10
android12-5.4
android11-5.4 1
android-4.19-stable
android12-5.10
android12-5.4
أندرويد 11 (2020) android11-5.4
android-4.19-stable
android-4.14-stable
android11-5.4
android-4.19-stable
android-4.14-stable
أندرويد 10 (2019) android-4.19-q
android-4.14-q
android-4.9-q

android-4.19-q
android-4.14-q
android-4.9-q

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

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

فرع من android-mainline

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

إنشاء حبات مشتركة من نواة android-mainline

الشكل 1. إنشاء حبات مشتركة من نواة android-mainline

لاحظ أن نواة Android الشائعة الجديدة android12-5.10 تم تفرعها من android-mainline في عام 2020. وفي عام 2021، عندما تم الإعلان عن LTS التالي، تم تفرع android13-5.15 من android-mainline .

كما هو موضح في الشكل 1، كل إصدار نواة هو الأساس لنواة GKI. على سبيل المثال، النواتان v5.4 هما android11-5.4 و android12-5.4 ، وكلاهما نواة مميزة لإصدارات النظام الأساسي الخاصة بهما. وسيكون هذا هو الحال بالنسبة لـ 5.10 أيضًا؛ تم إنشاء android12-5.10 عندما تم الإعلان عن LTS وسيتفرع android13-5.10 من android12-5.10 عند استكمال ميزة kernel في ربيع 2021 للسماح بتطوير ميزات Android 13.

دورة حياة فرع ACK KMI

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

5.10 دورة حياة فرع ACK KMI

الشكل 2. 5.10 دورة حياة فرع ACK KMI

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

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

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

عند إنشائه، يدخل فرع ACK KMI في مرحلة التطوير ( التطوير في الشكل 2)، ويكون مفتوحًا لمساهمات الميزات لإصدار نظام Android الأساسي التالي. في الشكل 2، تم إنشاء android12-5.10 عندما تم الإعلان عن 5.10 باعتباره نواة LTS الأولية الجديدة. قد يتم إنشاء فرع ACK KMI الثاني لإصدار kernel مسبقًا للسماح بتطوير الإصدار اللاحق. في الشكل 2، يتم إنشاء android13-5.10 عندما ينتقل android12-5.10 إلى خارج مرحلة التطوير.

مرحلة الاستقرار

عندما يتم الإعلان عن اكتمال ميزة فرع 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، يمكن استخدام نواة android12-5.10 لأجهزة Android 12 وأجهزة Android 13. نظرًا لأن إصدار نظام Android الأساسي متوافق أيضًا مع الإصدارات السابقة، يمكن استخدام نواة android12-5.4 لأجهزة Android 13 إما للتشغيل أو الترقية.

عند الدخول إلى المرحلة المجمدة، يتم وضع علامة git على الفرع باستخدام سلسلة إصدار KMI التي تحتوي على رقم إنشاء KMI. على سبيل المثال، عندما تم تجميد android11-5.4 ، تم وضع علامة عليه بسلسلة إصدار KMI 5.4-android11-0 حيث يكون الرقم 0 هو رقم إنشاء KMI. إذا كانت هناك مشكلة أمنية أو حدث آخر يتطلب قبول تصحيح تغيير KMI، فسيتم زيادة رقم إنشاء KMI وإعادة وضع علامة على الفرع. على سبيل المثال، إذا تم قبول هذا التغيير في android11-5.4 ، فسيتم وضع علامة على الفرع بإصدار KMI الجديد، 5.4-android11-1 . يمكن العثور على جيل KMI الحالي باستخدام الأمر uname :

$ uname -r
5.4.61-android11-0-00153-ga972f59040e4

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

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

التوافق بين النواة

تتغير متطلبات التوافق بين النوى في نفس عائلة LTS بدءًا من نواة GKI الجديدة.

حبات GKI

تحافظ نواة GKI على التوافق مع الإصدارات السابقة مع جميع إصدارات نظام Android الأساسي التي تدعم إصدار kernel. بالإضافة إلى ذلك، تعد إصدارات نظام Android متوافقة مع الإصدارات السابقة مع نواة GKI من الإصدارات السابقة. لذلك يمكنك استخدام نواة android12-5.4 المطورة لنظام Android 12 بأمان على الأجهزة التي تعمل بنظام Android 13. ويتم التحقق من التوافق من خلال اختبار VTS وCTS المستمر لنواة GKI مع جميع الإصدارات المدعومة.

يعتبر KMI مستقرًا بحيث يمكن تحديث kernel دون الحاجة إلى إعادة بناء وحدات kernel في صورة البائع.

لا يتم الحفاظ على توافق KMI بين نواة GKI المختلفة. لذلك، على سبيل المثال، لا يمكن استبدال android12-5.10 بنواة android13-5.10 دون إعادة بناء جميع الوحدات.

نواة GKI مدعومة لإصداراتها الأولية واللاحقة فقط. وهي غير مدعومة للإصدارات الأقدم. لذا فإن نواة android13-5.10 غير مدعومة على الأجهزة التي تعمل بنظام التشغيل Android 12.

النوى القديمة

لا تتوافق حبات الحلوى القديمة ( *-q و *-stable ) مع الإصدارات السابقة عبر إصدارات نظام Android الأساسي، ولكن يتم دعم النواة من الإصدارين السابقين لنظام Android الأساسي للترقية. لذلك، يمكن للجهاز الذي تم إطلاقه بنظام Android 10 باستخدام نواة تعتمد على android-4.19-q إما الاستمرار في استخدام نواة android-4.19-q عند الترقية إلى Android 2020، أو تحديث التعليمات البرمجية الخاصة بالمورد لدعم android-4.19-stable .

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

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

إطلاق منصة أندرويد النوى المدعومة للترقية النوى المدعومة للإطلاق
أندرويد 14 (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
android-4.14-stable
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
أندرويد 13 (2022) android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.14-stable
android-4.19-q (EOL)
android-4.14-q (EOL)
android-4.9-q (EOL)
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
أندرويد 12 (2021) android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.14-stable
android-4.19-q (EOL)
android-4.14-q (EOL)
android-4.14-p (EOL)
android-4.9-q (EOL)
android-4.9-p (EOL)
android-4.9-o (EOL)
android-4.19-stable
android11-5.4
android12-5.4
android12-5.10
أندرويد 11 (2020) android11-5.4
android-4.19-stable
android-4.14-stable
android-4.19-q (EOL)
android-4.14-q (EOL)
android-4.14-p (EOL)
android-4.9-q (EOL)
android-4.9-p (EOL)
android-4.9-o (EOL)
android-4.4-p (EOL)
android-4.4-o (EOL)
android11-5.4
android-4.19-stable
android-4.14-stable
أندرويد 10 (2019) android-4.14-stable
android-4.14-p (EOL)
android-4.9-p (EOL)
android-4.9-o (EOL)
android-4.4-p (EOL)
android-4.4-o (EOL)
android-3.18 (EOL)
android-4.14-stable
android-4.19-q (EOL)
android-4.14-q (EOL)
android-4.9-q (EOL)

دعم مدى الحياة وتصحيحات الأمان

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

يمكن للشركاء أن يكونوا واثقين من أنه من خلال الدمج المنتظم من أنوية Android الشائعة، فإنهم سيحصلون على جميع تصحيحات أمان kernel الممكنة.

اختبار النواة المشتركة

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

اختبار وظائف نواة لينكس

تبدأ اختبارات الاختبار الوظيفي لـ Linux Kernel (LKFT) بمجموعات اختبار متنوعة بما في ذلك kselftest وLTP وVTS وCTS على مجموعة من أجهزة Arm32 وarm64 المادية. يمكن العثور على نتائج الاختبار الأخيرة هنا .

اختبار KernelCI

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

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

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

يتم إجراء اختبار ما بعد الإرسال لنظام Android على الإصدارات الجديدة المنشورة في فروع kernel الشائعة لنظام Android عندما يتم الالتزام بالتصحيحات الجديدة بفرع Android kernel المشترك في ci.android.com . عن طريق إدخال aosp_kernel كاسم فرع جزئي في ci.android.com ، سترى قائمة بفروع kernel مع النتائج المتاحة. على سبيل المثال، يمكن العثور على نتائج 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 كاختبار مسبق عند تسجيل الوصول إلى كود kernel المشترك لنظام Android.

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

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

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

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

نواة أندرويد المشتركة إصدارات منصة أندرويد أجنحة الاختبار
رئيسي 14 13 12 11 10 LKFT KernelCI قبل الإرسال إرسال آخر 0 يوم
android-mainline
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-4.19-stable
android-4.14-stable

المساهمة في حبات Android الشائعة

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

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