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

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

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

android-mainline هو فرع التطوير الأساسي لميزات Android. يتم دمج الإصدار الرئيسي من Linux في android-mainline كلما نشر Linus Torvalds إصدارًا أو إصدارًا تجريبيًا. قبل عام 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 واجهة وحدة نواة ثابتة. يتم تحديد KMI بشكل فريد من خلال إصدار النواة وإصدار منصة Android، لذا يتم تسمية الفروع على النحو التالي: ANDROID_RELEASE-KERNEL_VERSION. على سبيل المثال، يُطلق على نواة GKI 6.1 لنظام التشغيل Android 14 الاسم android14-6.1. في نظام التشغيل Android 15، تم طرح نواة GKI android15-6.6.

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

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

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

إصدار نظام Android الأساسي تشغيل النواة Feature kernels
‫Android 16 (2025) android16-6.12
android15-6.6
android16-6.12
‫Android 15 (2024) android15-6.6
android14-6.1
android15-6.6
‫Android 14 (2023) android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android14-6.1
android14-5.15
‫Android 13 (2022) android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android13-5.15
android13-5.10
‫Android 12 (2021) android12-5.10
android12-5.4
android11-5.4
android12-5.10
android12-5.4

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

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

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

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

إنشاء نُوى مشتركة من نواة android-mainline

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

يُرجى العِلم أنّه تم إنشاء فرع جديد من نواة Android المشتركة android14-6.1 من android-mainline في عام 2022. في عام 2023، عندما تم الإعلان عن إصدار LTS التالي، تم إنشاء فرع android15-6.6 من android-mainline.

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

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

يوضّح الشكل 2 مراحل نشاط فرع ACK KMI.

‫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 kernel.

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

عندما يتم الإعلان عن اكتمال ميزات فرع 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نواة الإصدار 15 من نظام التشغيل Android والإصدارات الأحدث. بما أنّ إصدار منصة Android متوافق أيضًا مع الإصدارات السابقة، يمكن استخدام نواة android14-6.1 مع أجهزة Android 15 عند إطلاقها أو ترقيتها.

رقم إنشاء KMI

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

$ uname -r
6.6.30-android15-6-g86d10b30f51f

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

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

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

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

نواة GKI

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

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

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

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

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

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

إصدار نظام Android الأساسي نواة النظام المتوافقة
‫Android 16 (2025) android16-6.12
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 15 (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 14 (2023) android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
‫Android 13 (2022) 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

فترات الدعم ورموز تصحيح الأمان

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

قد تتوفّر حزم ACK لفترة أطول من نواة الإصدار الثابت المقابل على kernel.org. في هذه الحالة، تقدّم Google دعمًا موسّعًا حتى تاريخ انتهاء الخدمة (EOL) الموضّح في هذا القسم. عند انتهاء عمر النواة، لن تعود Google توفّر الدعم لها، وسيتم اعتبار الأجهزة التي تستخدمها عرضة للخطر.

اعتبارًا من الإصدار 6.6 من النواة، ستكون مدة الدعم المتاحة لنواة الإصدار الثابت 4 سنوات.

يعرض هذا الجدول مدة صلاحية إشعارات الإقرار المتوافقة:

ACK branch تاريخ
الإطلاق
Support
lifetime
(years)
EOL
android11-5.4 2019-11-24 6 2026-01-01
android12-5.4 2019-11-24 6 2026-01-01
android12-5.10 2020-12-13 6 2027-07-01
android13-5.10 2020-12-13 6 2027-07-01
android13-5.15 2021-10-31 6 2028-07-01
android14-5.15 2021-10-31 6 2028-07-01
android14-6.1 2022-12-11 6 2029-07-01
android15-6.6 2023-10-29 4 2028-07-01
android16-6.12 2024-11-17 4 2029-07-01

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

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

اختبار وظائف نواة Linux

تبدأ اختبارات Linux Kernel Functional Test (LKFT) مجموعات اختبارات مختلفة، بما في ذلك kselftest وLTP وVTS وCTS، على مجموعة من الأجهزة الفعلية التي تعمل بمعالجات arm32 وarm64. يمكن العثور على نتائج الاختبارات الأخيرة في صفحة android-lkft.

اختبار KernelCI

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

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

تُستخدَم اختبارات ما قبل الإرسال لمنع حدوث حالات فشل في نوى Android الشائعة. يمكن العثور على ملخّص نتائج الاختبار في علامة التبويب "عمليات التحقّق" ضمن تغيير الرمز في Gerrit الخاص بنواة Android الشائعة.

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

يتم تنفيذ الاختبارات المحدّدة بواسطة test-mapping مع مجموعة الاختبار kernel-presubmit في شجرة المصدر لمنصة Android كاختبارات قبل إرسالها إلى فروع نواة Android. على سبيل المثال، يتيح الإعداد التالي في 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"
    }
  ]
}

اختبار "اليوم صفر"

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

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

نواة Android المشتركة إصدارات نظام Android الأساسي مجموعات الاختبار
الهاتف الرئيسي 16 15 14 13 12 LKFT KernelCI ما قبل الإرسال بعد الإرسال 0-day
android-mainline
android16-6.12
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 الشائعة

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

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