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

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

الانتقال إلى برنامج الإقلاع

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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