نواة AOSP الشائعة (المعروفة أيضًا باسم نواة Android الشائعة أو ACKs ) هي مصب لنواة kernel.org وتتضمن تصحيحات تهم مجتمع Android التي لم يتم دمجها في نواة رئيسية أو مدعومة طويلة الأجل (LTS). يمكن أن تشمل هذه البقع:
- المنافذ الخلفية والاختيارات المميزة لوظائف المنبع اللازمة لميزات Android
- الميزات جاهزة لأجهزة Android ولكنها لا تزال قيد التطوير (على سبيل المثال ، تحسينات تعيين مهمة Energy Aware Scheduler).
- ميزات البائع / 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 المشترك الجديد ، يمكن للشركاء تغيير مصدر الدمج بسهولة إلى الفرع الجديد.
تتلقى فروع 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>
. على سبيل المثال ، تم تسمية 5.4 GKI kernel لنظام 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 النواة: Android 11 و Android 12.
نظرًا لأن نظام تسمية الحلوى لإصدارات منصة Android قد تم إسقاطه باستخدام Android 10 ، فإن أحدث إصدارات الحلوى التي كان من الممكن أن يطلق عليها android-4.14-r
و android-4.19-r
كانت تسمى بدلاً من ذلك android-4.14-stable
و android-4.19-stable
.
تم استبدال نواة الحلوى بـ GKI kernels بدءًا من 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 |
فروع نواة الإصدار القديم
يتم الاحتفاظ بنواة الإصدار لتوفير نسخ احتياطية من التصحيحات المذكورة في نشرة أمان Android الشهرية. تم إنشاؤها لكل نواة إطلاق عندما كان هناك إصدار جديد لمنصة أندرويد. يتم إهمالها عندما يتم إهمال إصدار kernel أو النظام الأساسي المرتبط كما هو موضح في فترات الدعم وتصحيحات الأمان .
في كل شهر عندما يتم نشر نشرة Android Security Bulletin ، يتم تحديث هذه النوى بإطارات خلفية للتصحيحات المذكورة في النشرة ذات الصلة بنواة المنبع ونواة 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 ، سيكون هناك عدد أقل من نواة الميزات مقارنة بنواة التشغيل للحد من عدد KMIs المستقرة التي يجب دعمها.
إصدار منصة أندرويد | إطلاق النوى | حبات الميزة |
---|---|---|
أندرويد 10 (2019) | android-4.9-q android-4.14-q android-4.19-q | android-4.9-q android-4.14-q android-4.19-q |
أندرويد 11 (2020) | android-4.14-stable android-4.19-stable android11-5.4 | android-4.14-stable android-4.19-stable android11-5.4 |
أندرويد 12 (2021) | android-4.19-stable android11-5.4 1 android12-5.4 android12-5.10 | android12-5.4 android12-5.10 |
أندرويد 13 (2022) | android11-5.4 1 android12-5.4 1 android12-5.10 1 android13-5.10 android13-5.15 | android13-5.10 android13-5.15 |
1 قد يتم تطبيق قيود إضافية إذا تم تحديث BSP المرتبط لإصدار النظام الأساسي. بعبارات أكثر عمومية ، يجب أن يكون رقم إصدار Android للنواة أعلى من أو يساوي إصدار FCM الهدف . راجع كائن واجهة البائع - تطابق فروع kernel للحصول على التفاصيل. |
التسلسل الهرمي المشترك للنواة
المتفرعة من android-mainline
يظهر المستوى الأعلى من التسلسل الهرمي المشترك للنواة في الشكل 1.
الشكل 1. إنشاء نواة مشتركة من نواة android-mainline
لاحظ أن نواة Android الشائعة الجديدة android12-5.10
كانت متفرعة من android-mainline
في عام 2020. في عام 2021 ، عندما تم الإعلان عن LTS التالي ، تم تشعب android13-5.15
من android-mainline
.
كما هو مبين في الشكل 1 ، كل إصدار kernel هو الأساس لنواة 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.
الشكل 2. 5.10 دورة حياة فرع ACK KMI
لتوضيح عملية التطوير ودورة حياة الفرع ، يركز الشكل 2 على فروع ACK KMI لمدة 5.10.
دورات كل فرع من فروع ACK KMI عبر ثلاث مراحل موضحة في الشكل 2 بألوان مختلفة في كل فرع. كما هو موضح ، يتم دمج LTS بانتظام بغض النظر عن المرحلة.
مرحلة التطوير
عند إنشائه ، يدخل فرع ACK KMI في مرحلة التطوير ( dev في الشكل 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 ، تصبح على الفور مستقرة ولا يمكن كسرها بالتغييرات المستقبلية.
على سبيل المثال ، لا يُسمح بإجراء تغيير يضيف حقلاً إلى بنية مستخدمة من قبل kernel المشترك لواجهة 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
kernel لأجهزة 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
kernel عند الترقية إلى Android 2020 ، أو تحديث الكود الخاص بالبائع لدعم android-4.19-stable
.
مصفوفة التوافق
يوضح هذا الجدول إصدارات kernel المدعومة والمختبرة مع كل إصدار لمنصة Android.
إصدار منصة أندرويد | النوى المدعومة للترقية | نواة مدعومة للإطلاق |
---|---|---|
أندرويد 10 (2019) | android-3.18 (EOL)android-4.4-o (EOL)android-4.9-o (EOL)android-4.9-p (EOL)android-4.14-p (EOL) | android-4.9-q |
أندرويد 11 (2020) | android-4.4-o (EOL)android-4.4-p (EOL)android-4.9-o (EOL)android-4.9-p (EOL)android-4.9-q android-4.14-p (EOL)android-4.14-q | android-4.14-stable |
أندرويد 12 (2021) | android-4.9-o (EOL)android-4.9-p (EOL)android-4.9-q (EOL)android-4.14-q | android-4.19-stable |
أندرويد 13 (2022) | android-4.9-q | android11-5.4 |
دعم الأعمار وتصحيحات الأمان
يتم دعم نواة Android الشائعة حتى يتوقف دعم إصدار LTS kernel أو Android Platform المرتبط. بينما يتم دعم النواة ، فإنها تستمر في تلقي عمليات دمج LTS من المنبع وإصلاح الأخطاء للرمز الخاص بنظام Android. تتضمن هذه الإصلاحات جميع تصحيحات أمان kernel المذكورة في نشرات أمان Android الشهرية ذات الصلة بنواة Android الشائعة.
يمكن للشركاء أن يكونوا على ثقة من أنه من خلال الدمج المنتظم من نواة Android الشائعة ، فإنهم يحصلون على جميع تصحيحات أمان kernel الممكنة.
اختبار النواة المشترك
يتم اختبار النوى الشائعة باستخدام العديد من أنظمة CI بالإضافة إلى اختبار المصب بواسطة البائعين.
اختبار Linaro Kernel الوظيفي
تبدأ اختبارات Linaro Kernel الوظيفية للاختبار (LKFT) مجموعات اختبار مختلفة بما في ذلك kselftest و LTP و VTS و CTS على مجموعة من أجهزة arm32 و arm64 المادية. يمكن العثور على نتائج الاختبار الأخيرة هنا .
اختبار KernelCI
يتم بدء اختبارات البناء والتمهيد لـ KernelCI عندما يتم تخصيص تصحيح جديد لفرع kernel مشترك. يتم اختبار عدة مئات من تكوينات البناء وتمهيدها على لوحات مختلفة. يمكن العثور على النتائج الأخيرة لنواة Android هنا .
تقديم Android مسبقًا واختبار ما بعد الإرسال
تُستخدم اختبارات ما قبل التقديم لمنع حدوث الفشل في النواة المشتركة. النتائج ليست متاحة للجمهور في هذا الوقت.
يتم إجراء اختبار postubmit لنظام Android عند تخصيص تصحيح جديد لفرع kernel مشترك. بإدخال aosp_kernel
كاسم فرع جزئي ، سترى قائمة بفروع kernel مع النتائج المتاحة. على سبيل المثال ، يمكن العثور على نتائج android-mainline
هنا .
اختبار لمدة 0 يوم
يُجري الاختبار لمدة 0 يوم اختبار التصحيح تلو الآخر على جميع فروع kernel الشائعة في Android عند الالتزام بالتصحيحات الجديدة. يتم تشغيل العديد من اختبارات التمهيد والوظيفية والأداء. انضم إلى المجموعة العامة cros-kernel-buildreports
مصفوفة الاختبار
نواة Android المشتركة | إصدارات منصة أندرويد | مجموعات الاختبار | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
يتقن | 13 | 12 | 11 | 10 | 9 (فطيرة) | LKFT | نواة | قبل الإرسال | إرسال إرسال | 0 يوم | |
android-mainline | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
android13-5.15 | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
android12-5.10 | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
android11-5.4 | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
android-4.19-q | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | android-4.9-q | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ |
المساهمة في نواة Android الشائعة
بشكل عام ، يجب أن يتم تطوير الميزات على نظام Linux الرئيسي وليس على نواة Android الشائعة. يتم تشجيع التطوير الأولي بشدة ، وبعد قبول التطوير هناك ، يمكن نقله بسهولة إلى فرع ACK المحدد حسب الحاجة. يسعد فريق Android Kernel بدعم جهود النشر لصالح نظام Android البيئي.
إرسال التصحيحات إلى Gerrit وتوافق مع إرشادات المساهمة هذه.