يتحول Android إلى نموذج "upstream first" لميزات Linux kernel الجديدة

تخطط Google للتبديل إلى نموذج التطوير "المنبع أولاً" لميزات Linux kernel في Android بدءًا من عام 2023. تابع القراءة لمعرفة المزيد.

عندما ترى كلمتي "Android" و"تجزئة" في نفس الجملة، فمن المحتمل أن يقفز عقلك على الفور إلى مخطط توزيع إصدار أندرويد. هناك عدد قليل من الكيانات التي يشير معظم الأشخاص بأصابع الاتهام إليها عند الشكوى من بطء نشر تحديثات نظام التشغيل Android في جميع المجالات، ولكن لا يوجد الكثير مما يمكن لـ Google فعله حيال ذلك قوة يقوم مصنعو المعدات الأصلية بتطوير التحديثات ونشرها بسرعة أكبر. ومع ذلك، ما يمكن أن تفعله Google هو تقليل وقت التطوير وبالتالي تكلفة نشر التحديثات.

أول مبادرة رئيسية في مشروع جوجل طويل المدى لتقليل أعباء التنمية هي مشروع التريبل. تم الإعلان عن Project Treble جنبًا إلى جنب مع Android 8.0 Oreo في عام 2017، وهو يعمل على تقسيم نظام Android إلى وحدات عن طريق فصل إطار عمل نظام التشغيل عن تنفيذ البائع (HALs وشوكة Linux kernel الخاصة بالجهاز). وقد سهّل ذلك على مصنعي المعدات الأصلية لنظام التشغيل Android إعادة تأسيس أنظمة تشغيلهم على أحدث إطار عمل AOSP حيث يمكنهم تشغيل الإصدار الأحدث دون الحاجة إلى تعليمات برمجية محدثة من البائعين. ونتيجة لذلك، يمكن لمصنعي المعدات الأصلية تجهيز شوكات Android المخصصة الخاصة بهم بشكل أسرع من ذي قبل، وبالتالي، نشر تحديثات نظام التشغيل الرئيسية بسرعة أكبر.

كانت الخطوة التالية في خطط Google هي تبسيط عملية تسليم التحديثات لمكونات Android الرئيسية. جوجل دعت هذه المبادرة مشروع الخط الرئيسي عندما قدمته إلى جانب Android 10 في عام 2019. سيطرت Google بشكل أساسي على مكونات نظام التشغيل الرئيسية ومنعت مصنعي المعدات الأصلية من تعديلها. ثم قاموا بإعداد آلية تسليم عبر Google Play حتى يتمكنوا من نشر التحديثات عن بعد لهذه المكونات الرئيسية دون الحاجة إلى انتظار مصنعي المعدات الأصلية لتطبيق التصحيحات بأنفسهم. أدى Mainline إلى تحسين كبير في مدى سرعة تلقي الأجهزة للإصدارات المحدثة من مكونات نظام التشغيل المهمة، مما أدى بدوره إلى تحسين أمان نظام Android البيئي ككل.

ولكن ما سيأتي بعد ذلك هو أكثر أهمية، ويمكن القول إنه الجزء الأكثر أهمية في استراتيجية جوجل طويلة المدى. عندما أشرنا سابقًا إلى كيفية قيام Treble بتقسيم نظام Android إلى وحدات من خلال فصل إطار عمل نظام التشغيل عن نظام التشغيل عند تنفيذ البائع، قمنا بتضمين "شوكة Linux kernel الخاصة بالجهاز" كجزء من ذلك البائع شفرة. أي شخص على دراية بنظام التشغيل Linux على أجهزة الكمبيوتر المكتبية سوف يتعرف على المشكلة هناك: لماذا يتم دمجها مع كود البائع مغلق المصدر؟ تكمن المشكلة في أنه على الرغم من أن أجهزة Android تأتي مزودة بنواة Linux، إلا أن هذه النواة تتميز بـ كثير من رمز خارج الشجرة.

كيف نصل إلى هناك؟ المشكلة، كما أوضحها مهندس برمجيات جوجل تود كجوس في مؤتمر سباكين Linux لهذا العام (عبر آرس تكنيكا)، وذلك لأن نواة Linux الرئيسية يتم تشعبها عدة مرات قبل أن يتم شحنها على جهاز Android. تقوم Google بتقسيم كل نواة Linux رئيسية إلى "نواة أندرويد المشتركة"، الذي يتتبع الإصدار الرئيسي عن كثب ولكنه يضيف بعض التصحيحات الخاصة بنظام Android. ثم يتم تفرع بائعي SoC مثل Qualcomm وMediaTek وSamsung الذي - التي نواة لكل شركة نفط الجنوب التي يقومون بها. يأخذ مصنعو المعدات الأصلية بعد ذلك النواة الخاصة بـ SoC ويضيفون تصحيحات إضافية لتنفيذ الدعم للأجهزة المحددة التي يريدون شحنها.

وبسبب هذه التغييرات "ما يصل إلى 50% من التعليمات البرمجية التي يتم تشغيلها على الجهاز هي تعليمات برمجية خارج الشجرة (ليست من نواة Linux الأولية أو AOSP الشائعة)"، بحسب جوجل. إن الكمية الكبيرة من التعليمات البرمجية خارج الشجرة على هذه الأجهزة تجعل دمج التغييرات الأولية عملية طويلة ومليئة بالتحديات. وهذا يضر بأمان الجهاز، حيث يحتاج مصنعو المعدات الأصلية إلى العمل بجهد أكبر لتنفيذ تصحيحات لنقاط الضعف التي تم اكتشافها في Linux kernel. علاوة على ذلك، فإن هذا يترك معظم أجهزة Android تعمل بإصدارات kernel قديمة، مما يعني أنها تفوت ميزات Linux kernel الجديدة.

وفي محاولة لمعالجة هذه المشكلة، تعمل Google على Android Generic Kernel Image (GKI)، وهي في الأساس نواة تم تجميعها مباشرة من فرع ACK. تعمل GKI على عزل تخصيصات بائعي SoC وOEM إلى وحدات المكونات الإضافية، مما يؤدي إلى التخلص من التعليمات البرمجية خارج الشجرة والسماح لـ Google بدفع تحديثات kernel مباشرةً إلى المستخدم النهائي. منذ أكثر من عام، تعمل جوجل على إيجاد طريقة لتوصيل تحديثات GKI عبر متجر Play، من خلال استخدام وحدة الخط الرئيسي.

وبحسب مصادرنا فإن الأجهزة التي تعمل بـ أندرويد 12 ويجب أن يتم الشحن مع Linux kernel 5.10 بنشر صورة تمهيد موقعة من Google. جوجل الخاصة جدا بكسل 6 سيتم إطلاق السلسلة بنظام Android 12 خارج الصندوق وسيتم شحنها مع Linux kernel 5.10، لذلك قد يكون الهاتفان أول جهازين في السوق يتم شحنهما مع GKI.

بالإضافة إلى ذلك، كشف تود كجوس من Google أن الشركة تخطط للتحول إلى نموذج تطوير "المنبع أولاً" لميزات Linux kernel الجديدة. سيساعد هذا Google على ضمان وصول التعليمات البرمجية الجديدة أولاً إلى نواة Linux الرئيسية، مما سيقلل من الديون الفنية المستقبلية المتراكمة من المزيد من التعليمات البرمجية خارج الشبكة على أجهزة Android.

في مؤتمر Linux Plumbers هذا الأسبوع، قال كجوس، "نظرًا لأن الوحدات النمطية غير التقليدية مهمة جدًا لحالة الاستخدام لدينا، فإننا نتوقع أن يكون لدينا دائمًا مجموعة من الصادرات وبعض الأشياء المختلفة أو بالإضافة إلى ما هو موجود في المنبع، ولكن هذا المشروع بأكمله عبارة عن مشروع متعدد السنوات يعمل على التخلص من أكبر عدد ممكن من البقع خارج الشجرة، والمواءمة قدر الإمكان مع المنبع." تهدف Google إلى إكمال عملها نحو رفع مستوى الميزات الحالية وعزل تغييرات البائعين بحلول نهاية عام 2022 وابتداءً من عام 2023، تخطط الشركة لاعتماد نموذج التطوير "المنبع أولاً" لتجنب مثل هذه المشكلات في مستقبل.