مقابلة مع المطور eng.stk الجزء الأول: الأصول وتطوير النواة

click fraud protection

لقد أجرينا مؤخرًا مقابلة مع eng.stk، مطور نواة blu_spark. وفي هذا الجزء نسأله عن نشأته وأعماله التنموية.

لقد أتيحت لي الفرصة مؤخرًا لإجراء مقابلة مع عضو كبير في XDA eng.stk، مطور نواة blu_spark. وهو متاح عبر العديد من الأجهزة في منتدياتنا، بما في ذلك Nexus 5 وOnePlus 3/T وOnePlus 5T. في هذا الجزء نسأل eng.stk عن بداياته في التطوير وكيف قام بتطوير نواة blu_spark.


لذا أولاً، قم بتقديم نفسك ونواتك. كيف تميز النواة الخاصة بك عن المنافسة؟ ما هي فلسفتك التصميمية لتغييرات النواة، وكيف يمكنك القيام بها؟

أنا eng.stk وأنا موجود في XDA منذ عام 2010. معظمكم يعرفني من خلال مشروعي code_blue وblu_spark :)

لقد بدأت في XDA بكتابة بعض البرامج النصية والأدوات المتنوعة واختراقات إطار العمل. لقد فعلت الكثير من المواضيع أيضا... خلال فترة وجودي هنا، تعاونت أيضًا بشكل مباشر في بعض المشاريع مثل Purity ROM وUniversal Kernel Manager وKernel Adiutor ومؤخرًا Magisk و WireGuard على سبيل المثال لا الحصر. لقد قمت ببعض أعمال TWRP مؤخرًا أيضًا (خاصة على أجهزة OnePlus)، ووحدات Magisk والأدوات/الاختراقات الأخرى [التي تكون] مفيدة خلال دورة حياة مشاريع kernel الخاصة بي (تم عرض بعض الأشياء على بوابة XDA إذا كنت أتذكر بشكل صحيح). بدأت blu_spark kernel في أن تصبح ليس فقط نواة، بل تجربة شاملة بين kernel وسلاسل الأدوات والاسترداد والسمات والأدوات والبرامج النصية وما إلى ذلك. لكن عمل النواة هو أكثر ما أستمتع به وهو ما يدفعني.

لقد استمتعت دائمًا بالقرصنة وإنشاء بعض الأكواد/النصوص البرمجية عندما أتيحت لي الفرصة (كان تفكيك الألعاب الإلكترونية والتشفير الأساسي على جهاز Commodore 64 الخاص بابن عمي أمرًا ممتعًا). بالنسبة لي، البرمجة ليست وسيلة لتحقيق غاية ولكنها مجرد أداة مثل البعض الآخر لتحقيق غرض محدد. تم الانتهاء من معظم الأشياء الأكثر جدية وأساسيات عملي عندما اكتشفت Linux خلال فترة مراهقتي وأوائل العشرينيات من عمري. لاحقًا، في مكان ما خلال فترة الجامعة، كان Android هو الخطوة المنطقية التالية بالنسبة لي: حلم الإصلاح حقًا، حيث يمكن تشغيل الأجهزة أو البرامج كثيرًا.

أفضل الكلمات لوصف blu_spark هي التحسين والاستقرار. يعرف الأشخاص الذين يستخدمونه أنه يمكنهم الاعتماد عليه. تعتبر إصدارات النواة الخاصة بي "مخزنة" إلى حد ما بطريقة تجعلني لا أميل إلى إزالة بعض العناصر المتوفرة خارج الصندوق، مع الاحتفاظ بكل شيء اختياريًا حتى يتمكن الأشخاص من الاختيار. لا أحب إضافة الكثير من الأشياء، بل أقوم فقط بتغيير أو إضافة ما أعتبره الأفضل لكل مجال معين. برنامج تشغيل تكرار وحدة المعالجة المركزية، أو جدولة الإدخال/الإخراج، أو بروتوكولات الشبكة، أو أنظمة الملفات، وما إلى ذلك، أو قم بتعديل بعض التعديلات لبعض المعلمات المعينة أو رفع بعض برامج التشغيل للحصول على أفضل نتيجة ممكنة. أقوم أيضًا ببناء سلاسل أدوات مخصصة (من Linaro، نظرة رائعة على دول مجلس التعاون الخليجي)، وذلك بشكل أساسي للحصول على أفضل النتائج من الهندسة المعمارية.

خلاصة القول، يعرف معظم الأشخاص أنهم يستخدمون blu_spark منذ اللحظة التي يقومون فيها بوميض النواة على الجهاز. أبحث دائمًا عن أشياء وطرق جديدة لتقديم أفضل تجربة مستخدم ممكنة. بأمان.

أخبرنا عن حاكم blu_active الخاص بك! ما هو وماذا يفعل ولماذا هو مميز؟

أعلم أن الناس يخلطون أحيانًا بين blu_active وblu_spark. blu_active هو مجرد جزء صغير مقارنة ببقية [الأعمال] التي أقوم بها.

يتخذ محافظ وحدة المعالجة المركزية بشكل أساسي قرارات لجعل ترددات وحدة المعالجة المركزية ترتفع أو تنخفض، وفقًا لاحتياجات النظام. لقد طرأ على الحاكم عدة تغييرات وطفرات منذ بدايته. مثل أي شيء آخر أفعله، كنت بحاجة إلى شيء يلبي احتياجاتي. إنه مبني على الحاكم المفضل لدي، الحاكم التفاعلي. في البداية، قمت فقط بوضع بعض الأشياء الأولية عليه، ولكن بعد ذلك بدأت بإضافة بعض الأشياء الأخرى، مثل تحديثات CAF أو المنطق الذي رأيته في المحافظين الآخرين والذي أجده مفيدًا. أضفت أيضًا التوافق مع HMP وبعض الأشياء الجيدة الأخرى.

يعتمد الإصدار الأخير على فرع Linux 4.4 Android من Google، مع بعض إصلاحات المنبع وCAF أيضًا، ولكنه أكثر مرونة بكثير من ذي قبل. ما عليك سوى استخدام ما لديك إلى أقصى حد، وإزالة ما لا تملكه. أحاول دائمًا الحصول على بطارية أفضل من إعدادات المخزون، مما يقلل من استنزاف البطارية، بينما يحاول التحسين الأداء (الأداء الواقعي، الذي تشعر به بعينيك وأصابعك، وليس بالأداء الاصطناعي أدوات).

في وقت ما، أردت ضبطًا بسيطًا حتى يتمكن الأشخاص من التلاعب بالأداء بطريقة بسيطة. هذه هي الطريقة التي ولدت بها Fastlane :). المنطق مشابه إلى حد ما للطريقة التي تعمل بها هوندا VTEC: اللعب بالتوقيت من عتبة معينة. لذلك، باستخدام مفتاح بسيط وقيمة عتبة متغيرة، يمكن للأشخاص الحصول على مقياس تردد وحدة المعالجة المركزية أكثر مباشرة وقوة. مما يجعلها تدخل عاجلاً أم آجلاً وفقاً لتحميل النظام، وتجاوز الأحمال المستهدفة. إنه متوافق تمامًا مع HMP ويمكن تعديله لكل مجموعة وفقًا لاحتياجات الأشخاص، وضبطه بدقة لكل جهاز يعمل عليه.

ما هي الآليات أو التعديلات المضمنة التي تعجبك/لا تعجبك والتي توفرها الشركات المصنعة للمعدات الأصلية؟ أي تعزيز مدخلات كوالكوم.

قد تكون بعض عمليات تعزيز مساحة المستخدم والضبط الأخرى التي تم تعيينها في HALs (طبقات تجريد الأجهزة)، وعناصر إطار العمل المشفرة وما إلى ذلك، مزعجة في بعض الأحيان. بالطبع، من المعروف أن مطوري kernel يتغلبون على بعض تلك المشكلات. على Nexus 5، على سبيل المثال، تخلص معظمنا من mpdecision وحصلوا على مكون hotplug مخصص - كان لدينا blu_plug في ذلك الوقت. كانت بعض الأجهزة الأخرى تتمتع بإدارة حرارية سيئة وتحكم حراري مخصص باستخدام sysfs لمستويات درجة الحرارة وتردد التخفيف وما إلى ذلك. تحتوي بعض الأجهزة الحديثة على بعض السياسات الصارمة بشأن البطارية، وفصل النوى والأشياء الأخرى في "المستويات المنخفضة" التي لم تحقق مكاسب حقيقية في استخدام الجهاز. في واقع الأمر، فقد أفسد ذلك تجربة المستخدم في بعض الأحيان، لذلك كان من الضروري ترويض تقنيات CTL وBCL.

أتذكر أيضًا إزالة التشفير في الأجهزة عندما كان ذلك أمرًا ممكنًا، حيث قدمت جميع التغييرات في تكرارات SELinux تغييرات جعلت عمليات الاختراق السابقة تعمل بطريقة مختلفة... تمثل بعض التغييرات الأمنية الأخيرة لنظام Android تحديًا مستمرًا. وتشمل هذه AVB (تعرف بعض الأجزاء في الغالب باسم dm-verity). أدت بعض التغييرات الأخرى إلى فرض قيود على أماكن Tunables وsysfs التي كان لا بد من نقلها لأننا لا نستطيع الوصول إلى نفس الأماكن التي كانت لدينا من قبل. معظم هذه القيود أكثر صلة بالأقراص المضغوطة المخصصة (التي أقوم بمعظم عملي فيها)، وعادة ما تمهد الطريق وتسهل الأمر عندما يتعلق الأمر بالأقراص المدمجة المخصصة (حيث تكون القيود أقل).

في SoCs الحديثة مثل Qualcomm Snapdragon 820 و835، أضافت بعض الشركات المصنعة للمعدات الأصلية بعض التعزيزات من مساحة المستخدم التي تم الترحيب بها ومعالجة النقاط العمياء في النظام، وليست كل عناصر OEM سيئة. عندما يتعلق الأمر بمصدر النواة، كلما كان المصدر أكثر نظافة وتوثيقًا، كلما كان ذلك أفضل.

ما هي الميزات الأخرى التي ترغب في تضمينها؟ مثل التحكم المتقدم في الألوان، وما إلى ذلك.

عادةً لا أقوم بتضمين الأشياء التي لا أستخدمها شخصيًا أو التي لا أجدها مفيدة. الأشياء التي أحب القيام بها، إلى جانب blu_active، تشمل تحسينات وإصلاحات البنية، وتحديثات عناصر التشفير، وجدولة الإدخال والإخراج، وغيرها الأشياء الجيدة للتخزين/نظام الملفات، KCAL، الشحن السريع عبر USB، قوة الاهتزاز، التحكم في LED للبطارية/الإشعارات، حاصرات Wakelock، WireGuard، إلخ. أقوم دائمًا بالبناء باستخدام سلسلة أدوات بناء مخصصة كما قلت سابقًا.

ما هي منهجية الاختبار التي تستخدمها للنواة الخاصة بك؟ هل تستخدم تقارير المستخدم أو المعايير أو أي إجراءات مخصصة أخرى؟

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

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

أقوم بإجراء الاختبار باستخدام ذاكرة القراءة فقط (ROM) حتى أتمكن من الحصول على خط أساس ثابت للأشياء. أقوم بإنشاء تصميمات مخصصة لأقراص ROM المخصصة، ولكن نظرًا للطبيعة المتقلبة لأقراص ROM المخصصة مع الإضافات المضافة والليلات وحتى اختلاف التنفيذ في بعض الميزات، فمن المستحيل تغطيتها جميعًا وتقديم الدعم المناسب للجميع، للأسف.

أحيانًا أقوم أيضًا بإنشاء إصدارات تجريبية لاختبار شيء محدد أو عندما أقوم بتشغيل إصدارات Beta ROM أو معاينات المطورين. لقد فعلت ذلك على أجهزة Nexus وOnePlus، حيث يحب الأشخاص اختبار الأشياء أحيانًا :)


راجع الجزء الثاني: F2FS وEAS ونصائح لمطوري Kernel الطموحين