تأتي معظم أجهزة Android مع برنامج إقلاع مقفل بشكل تلقائي، ما يعني أنّه لا يمكن للمستخدمين تثبيت ذاكرة ROM لبرنامج الإقلاع أو أقسام الجهاز. إذا لزم الأمر، يمكنك (ومستخدمو الأجهزة الذين فعّلوا "خيارات المطوّرين") فتح قفل برنامج الإقلاع لتثبيت صور جديدة.
الدخول إلى برنامج الإقلاع
لإصدار أوامر fastboot، يجب أن تكون في وضع برنامج الإقلاع. إحدى طرق القيام بذلك هي إرسال أمر adb adb reboot bootloader. تسمح لك بعض الهواتف أيضًا بإعادة التشغيل في برنامج الإقلاع عن طريق الضغط على مجموعة مفاتيح (عادةً خفض مستوى الصوت) أثناء تشغيل الجهاز.
فتح قفل برنامج الإقلاع
بعد الدخول إلى وضع برنامج الإقلاع، لتتمكّن من فتح قفل برنامج الإقلاع وإعادة تثبيت الأقسام، شغِّل الأمر fastboot flashing unlock على الجهاز. بعد ضبط هذا الوضع، سيظل مفعّلاً بعد إعادة التشغيل.
يجب أن ترفض الأجهزة الأمر fastboot flashing unlock ما لم يتم ضبط get_unlock_ability على 1. إذا تم ضبطه على 0، على المستخدم تشغيل الشاشة الرئيسية، وفتح قائمة الإعدادات > النظام > خيارات المطوّرين وتفعيل خيار فتح قفل المصنّع الأصلي للجهاز (الذي يضبط get_unlock_ability على 1). بعد ضبط هذا الوضع، سيظل مفعّلاً بعد إعادة التشغيل وإعادة ضبط بيانات المصنع.
عند إرسال الأمر fastboot flashing unlock، يجب أن يطلب الجهاز من المستخدمين تأكيد تحذيرهم من احتمال مواجهة مشاكل في الصور غير الرسمية.
بعد أن يؤكّد المستخدم التحذير، يجب أن يعيد الجهاز ضبط بيانات المصنع لمنع الوصول غير المصرّح به إلى البيانات. يجب أن يعيد برنامج الإقلاع ضبط الجهاز حتى إذا لم يتمكّن من إعادة تهيئته بشكل صحيح. بعد إعادة الضبط فقط، يمكن ضبط العلامة المستمرة ليتمكّن الجهاز من إعادة التثبيت.
يجب إعادة ضبط كل ذاكرة الوصول العشوائي (RAM) التي لم تتم الكتابة فوقها بعد أثناء عملية fastboot flashing unlock. يمنع هذا الإجراء الهجمات التي تقرأ محتويات ذاكرة الوصول العشوائي المتبقية من عملية التشغيل السابقة. وبالمثل، يجب أن تمحو الأجهزة التي تم فتح قفلها ذاكرة الوصول العشوائي في كل عملية تشغيل (إلا إذا أدّى ذلك إلى تأخير غير مقبول)، ولكن يجب أن تترك المنطقة المستخدَمة لـ ramoops في النواة.
قفل برنامج الإقلاع
لقفل برنامج الإقلاع وإعادة ضبط الجهاز، شغِّل الأمر fastboot flashing lock على الجهاز. يجب شحن الأجهزة المخصّصة للبيع بالتجزئة في حالة القفل (مع عرض get_unlock_ability للقيمة 0) لضمان عدم تمكّن المهاجمين من اختراق الجهاز عن طريق تثبيت نظام جديد أو صورة تشغيل.
ضبط خصائص القفل وفتح القفل
يجب ضبط السمة ro.oem_unlock_supported في مدّة التصميم استنادًا إلى ما إذا كان الجهاز يتيح فتح قفل تثبيت ذاكرة ROM.
- إذا كان الجهاز يتيح فتح قفل التثبيت، اضبط
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.