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

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

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

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

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

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

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

تحتوي نواات GKI على واجهة وحدة Kernel ثابتة. يتميّز KMI بشكل فريد المحددون من خلال إصدار النواة وإصدار نظام 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" المستهدَف. عرض كائن واجهة المورّدين (Vendor) - مطابقة فروع النواة (kernel) لمزيد من التفاصيل.

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

إنشاء فرع من 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 لإتاحة إمكانية تطوير ميزات الإصدار 13 من نظام التشغيل Android البدء بـ 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) يتم التحقق من التوافق من خلال الاختبار المستمر لـ VTS وCTS لنواة GKI مع جميع الإصدارات المتوافقة.

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

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

يمكن استخدام نواة GKI مع الإصدارات الأولية واللاحقة فقط. وهي غير متوافقة مع الإصدارات القديمة. لذا فإن النواة android15-6.6 غير متوافقة مع الأجهزة التي تعمل بنظام تشغيل الجهاز. الإصدار 14 من نظام التشغيل Android (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

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

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

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

بدءًا من النواة 6.6، فإن عمر الدعم للنواة الثابتة هو 4 سنوات.

يعرض هذا الجدول القيم الدائمة لحِزم ACK المتوافقة:

فرع ACK تاريخ
الإطلاق
الدعم
العمر
(السنة)
EOL
Android-4.19-مستقر 2018-10-22 6 2025-01-01
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

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

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

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

اختبار نواة Linux الوظيفية (LKFT) بدء اختبارات مجموعات اختبارية متنوعة تشمل kselftest وLTP وVTS وCTS على من جهازَي Arm32 وذراع من 64. يمكن العثور على نتائج الاختبارات الحديثة هنا.

اختبار 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
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

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

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

إرسال رموز التصحيح إلى Gerrit وتتوافق مع هذه إرشادات المساهمات