قفل برنامج الإقلاع وفتح قفله

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

الوصول إلى برنامج الإقلاع

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

إلغاء قفل برنامج الإقلاع

بعد الدخول إلى وضع برنامج الإقلاع، شغِّل الأمر fastboot flashing unlock على الجهاز لفتح قفل برنامج الإقلاع والسماح بإعادة تثبيت الأقسام. بعد ضبط وضع فتح القفل، يظل هذا الوضع مفعّلاً عند إعادة تشغيل الجهاز.

يجب أن ترفض الأجهزة الأمر fastboot flashing unlock ما لم يتم ضبط get_unlock_ability على 1. إذا تم ضبطها على 0، على المستخدم الانتقال إلى الشاشة الرئيسية، وفتح قائمة الإعدادات > النظام > خيارات المطوّرين وتفعيل الخيار فتح قفل المصنّع الأصلي للجهاز (الذي يضبط get_unlock_ability على 1). بعد الضبط، يظل هذا الوضع ساريًا عند إعادة التشغيل وإعادة الضبط على الإعدادات الأصلية.

عند إرسال الأمر fastboot flashing unlock، من المفترض أن يطلب الجهاز من المستخدمين تأكيدًا لتحذيرهم من أنّهم قد يواجهون مشاكل في الصور غير الرسمية. بعد أن يقرّ المستخدم بالتحذير، يجب أن يعيد الجهاز ضبطه على الإعدادات الأصلية لمنع الوصول غير المصرَّح به إلى البيانات. يجب أن يعيد برنامج التشغيل ضبط الجهاز حتى إذا تعذّر إعادة تنسيقه بشكل صحيح. بعد إعادة الضبط فقط، يمكن ضبط العلامة الثابتة حتى يمكن إعادة تثبيت البرنامج على الجهاز.

يجب إعادة ضبط كل ذاكرة الوصول العشوائي التي لم تتم الكتابة فوقها أثناء عملية fastboot flashing unlock. يمنع هذا الإجراء الهجمات التي تقرأ محتويات ذاكرة الوصول العشوائي المتبقية من عملية التشغيل السابقة. وبالمثل، يجب أن تمحو الأجهزة غير المقفلة ذاكرة الوصول العشوائي (RAM) في كل عملية تشغيل (إلا إذا أدّى ذلك إلى حدوث تأخير غير مقبول)، ولكن يجب أن تترك المنطقة المستخدَمة في ramoops لنواة النظام.

قفل برنامج الإقلاع

لقفل برنامج الإقلاع وإعادة ضبط الجهاز، شغِّل الأمر fastboot flashing lock على الجهاز. يجب شحن الأجهزة المخصّصة للبيع بالتجزئة وهي في حالة مقفلة (مع عرض get_unlock_ability للرمز 0) لضمان عدم تمكّن المخترقين من اختراق الجهاز عن طريق تثبيت نظام جديد أو صورة تمهيد جديدة.

ضبط خصائص القفل وفتح القفل

يجب ضبط السمة ro.oem_unlock_supported في وقت الإنشاء استنادًا إلى ما إذا كان الجهاز يتيح فتح القفل من خلال إعادة التثبيت.

  • إذا كان الجهاز يتيح فتح القفل باستخدام الضوء الوامض، اضبط ro.oem_unlock_supported على 1.
  • إذا كان الجهاز لا يتيح فتح القفل من خلال وميض الضوء، اضبط ro.oem_unlock_supported على 0.

إذا كان الجهاز يتيح فتح القفل من خلال وميض، يجب أن يشير برنامج الإقلاع إلى حالة القفل من خلال ضبط متغيّر سطر أوامر النواة androidboot.flash.locked على 1 إذا كان مقفلاً أو على 0 إذا كان غير مقفل. يجب ضبط هذا المتغير في bootconfig بدلاً من سطر أوامر النواة في Android 12.

بالنسبة إلى الأجهزة التي تتوافق مع dm-verity، استخدِم ro.boot.verifiedbootstate لضبط قيمة ro.boot.flash.locked على 0، ما يؤدي إلى إلغاء قفل برنامج الإقلاع إذا كانت حالة "التشغيل المتحقَّق منه" باللون البرتقالي.

حماية الأقسام المهمة

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

يجب أن يتطلّب الانتقال من حالة القفل إلى حالة عدم القفل تفاعلاً فعليًا مع الجهاز. يشبه هذا التفاعل تأثيرات تنفيذ الأمر fastboot flashing unlock، ولكنّه يتطلب أن يضغط المستخدم على زر مادي على الجهاز. يجب ألا تسمح الأجهزة بالانتقال آليًا من lock critical إلى unlock critical بدون تفاعل فعلي، ويجب ألا يتم شحن الأجهزة في حالة unlock critical.