توضّح هذه الصفحة مشروع "صورة النواة العامة" (GKI) وكيفية تحسينه لاستقرار نظام التشغيل Android وتعزيز مستوى الأمان.
السجلّ
يحتاج كل جهاز Android إلى نواة إصدار علني. قبل GKI، كانت النوى مخصّصة وتستند إلى "النواة الشائعة لنظام التشغيل Android" (ACK)، مع إدخال مورّدي المنظومة على الرقاقة (SoC) والمصنّعين الأصليين للأجهزة لتغييرات متعلقة بالجهاز.
يمكن أن يؤدي هذا التخصيص إلى أن يكون ما يصل إلى% 50 من رمز ملف kernel خارج الشجرة وليس من نواة Linux أو ACKs. ونتيجةً لذلك، أدّت الطبيعة المخصّصة لأنظمة التشغيل التي كانت تستخدم نواة GKI قبل توفّرها إلى تجزئة كبيرة للنواة.
تكاليف التجزئة
تؤدي كثرة الإصدارات الفرعية للنواة إلى عدة تأثيرات سلبية على منتدى Android.
تحديثات الأمان تتطلّب الكثير من الجهد
يجب إعادة استخدام الرقع الأمنية المُشار إليها في نشرة أمان Android (ASB) في كل نواة من نوى الجهاز. ومع ذلك، بسبب عدم اتّساق ملف التمهيد، فإنّ نشر إصلاحات الأمان على أجهزة Android في الميدان يتطلّب تكاليف باهظة.
من الصعب دمج التعديلات المتاحة على المدى الطويل
تتضمّن إصدارات الدعم الطويل الأمد (LTS) إصلاحات الأمان وغيرها من إصلاحات الأخطاء الملحّة. لقد تبيّن أنّ البقاء على اطّلاع بآخر إصدارات قناة الدعم الطويل الأمد هو الطريقة الأكثر فعاليةً لتقديم إصلاحات الأمان. على أجهزة Pixel، تم اكتشاف أنّه سبق أن تم حلّ 90% من مشاكل أمان النواة التي تم الإبلاغ عنها في نشرة ASB على الأجهزة التي يتم تحديثها باستمرار.
ومع ذلك، بسبب كل التعديلات المخصّصة في نواة الجهاز، من الصعوبة دمج إصلاحات LTS في نواة الجهاز فقط.
منع ترقيات إصدارات نظام التشغيل Android
تؤدي التجزئة إلى صعوبة إضافة ميزات Android الجديدة التي تتطلّب تغييرات في النواة إلى الأجهزة في الميدان. كان على رمز إطار عمل Android مراعاة الاختلافات المختلفة في النواة، ولم يكن بإمكانه الاعتماد على ميزات Android الجديدة التي يتم تنفيذها في النواة. أدّى ذلك إلى إبطاء الابتكار وزيادة حجم الرمز البرمجي وتعقيده.
من الصعب المساهمة في تغييرات النواة مرة أخرى في Linux
أدّت الطريقة المجزّأة لسحب الإصلاحات إلى نواة الإصدار العلني إلى تأخُّر مدّته تصل إلى 18 شهرًا من وقت توفّر إصدار LTS في الإصدار العلني إلى وقت توفّره على الأجهزة. ويؤدي هذا التأخير الطويل بين إصدار نواة النظام الأساسية والمنتجات إلى صعوبة على منتدى Android توفير الميزات وبرامج التشغيل المطلوبة في ملف تعريف برمجي للنواة الأساسية. بحلول الوقت الذي يرسل فيه المستخدم اقتراحات للتحسينات، يتغير قاعدة البيانات، ما يجعل من الصعب إظهار مدى صلة التصحيح.
حلّ مشكلة التجزئة: صورة نواة عامة
يعالج مشروع Generic Kernel Image (GKI) تجزئة النواة من خلال توحيد النواة الأساسية ونقل دعم وحدة المعالجة المركزية (SoC) واللوحة خارج النواة الأساسية إلى وحدات المصنّعين القابلة للتحميل. يوفّر GKI أيضًا واجهة برمجة تطبيقات ثابتة لوحدة المعالجة الأساسية (KMI) لوحدات المورّدين، ما يتيح تحديث الوحدات والنواة بشكلٍ مستقل. في ما يلي بعض خصائص نواة GKI:
- تم إنشاء نواة GKI من مصادر ACK.
- نواة GKI هي ملف ثنائي نواة واحد بالإضافة إلى وحدات قابلة للتحميل مرتبطة بها لكل بنية، ولكل إصدار من إصدارات الدعم الطويل الأمد.
- يتم اختبار نواة GKI مع جميع إصدارات نظام Android المتوافقة مع ACK المرتبط. لا يتم إيقاف الميزات نهائيًا طوال فترة استخدام إصدار GKI النواة.
- تعرِض نواة GKI واجهة برمجة تطبيقات KMI ثابتة لبرامج تشغيل الأجهزة ضمن قناة دعم طويل الأمد معيّنة.
- لا يحتوي نواة GKI على رمز خاص بوحدة المعالجة المركزية (SoC) أو اللوحة.
للحصول على صورة لبنية GKI، يُرجى الرجوع إلى مقالة نظرة عامة على النواة.
صورة شائعة
بدءًا من Android 12، يجب أن تكون الأجهزة التي تعمل بالإصدار 5.10 من نظام التشغيل GKI أو إصدار أحدث مزوّدة بالإصدار GKI من نواة النظام. يتم تحديث إصدارات Generic Kernel Image (GKI) الإصدارات بانتظام، ويتم تحديثها بانتظام مع إصلاحات الأخطاء المُهمّة وإصلاحات قناة الدعم الطويل الأمد. وبما أنّه يتم الحفاظ على ثبات الثنائيات لـ KMI، يمكنك تثبيت ملف التمهيد هذه بدون إجراء تغييرات على صور المورّدين. يهدف مشروع GKI إلى تحقيق ما يلي:
- يجب عدم حدوث تراجعات كبيرة في الأداء أو الطاقة عند استبدال النواة الخاصة بالمنتج بنواة GKI.
- تمكين الشركاء من تقديم إصلاحات أمان للنواة وإصلاحات للأخطاء بدون إشراك المورّد
- تقليل تكلفة ترقية الإصدار الرئيسي من النواة للأجهزة
- الحفاظ على ملف ثنائي واحد لنظام التشغيل GKI لكل بنية من خلال تحديث ملفَّي GKI باستخدام عملية واضحة للترقية