بشكل افتراضي، تأتي معظم أجهزة Android مزودة بمحمل إقلاع مقفل، مما يعني أنه لا يمكن للمستخدمين تحديث أداة تحميل التشغيل أو أقسام الجهاز. إذا لزم الأمر، يمكنك (ومستخدمي الأجهزة مع تمكين خيارات المطور) إلغاء قفل أداة تحميل التشغيل لفلاش صور جديدة.
الدخول إلى محمل الإقلاع
لإصدار أوامر fastboot
، يجب أن تكون في وضع أداة تحميل التشغيل. إحدى الطرق للقيام بذلك هي إرسال أمر adb adb reboot bootloader
. تسمح لك بعض الهواتف أيضًا بإعادة التشغيل في أداة تحميل التشغيل عن طريق الضغط على مجموعة المفاتيح (خفض مستوى الصوت عادةً) أثناء تشغيل الجهاز.
فتح محمل الإقلاع
بمجرد الدخول في وضع أداة تحميل التشغيل، لإلغاء قفل أداة تحميل التشغيل وتمكين إعادة تحميل الأقسام، قم بتشغيل أمر fastboot flashing unlock
على الجهاز. بعد الإعداد، يستمر وضع إلغاء القفل خلال عمليات إعادة التشغيل.
يجب أن ترفض الأجهزة أمر fastboot flashing unlock
ما لم يتم ضبط get_unlock_ability
على 1
. إذا تم التعيين على 0
، فسيحتاج المستخدم إلى التمهيد إلى الشاشة الرئيسية، وفتح قائمة الإعدادات > النظام > خيارات المطور وتمكين خيار إلغاء قفل OEM (الذي يضبط get_unlock_ability
على 1
). بعد الإعداد، يستمر هذا الوضع خلال عمليات إعادة التشغيل وإعادة ضبط بيانات المصنع.
عند إرسال أمر fastboot flashing unlock
، يجب أن يطالب الجهاز المستخدمين بتحذيرهم من أنهم قد يواجهون مشكلات مع الصور غير الرسمية. بعد أن يقر المستخدم بالتحذير، يجب أن يقوم الجهاز بإعادة ضبط بيانات المصنع لمنع الوصول غير المصرح به إلى البيانات. يجب على أداة تحميل التشغيل إعادة ضبط الجهاز حتى لو لم يتمكن من إعادة تهيئته بشكل صحيح. فقط بعد إعادة التعيين يمكن ضبط العلامة المستمرة بحيث يمكن إعادة تحميل الجهاز.
يجب إعادة ضبط كافة ذاكرة الوصول العشوائي (RAM) التي لم تتم الكتابة فوقها بالفعل أثناء عملية 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
.
إذا كان الجهاز يدعم إلغاء القفل الوامض، فيجب أن يشير برنامج تحميل التشغيل إلى حالة القفل عن طريق ضبط متغير سطر أوامر kernel androidboot.flash.locked
على 1
إذا كان مقفلاً أو على 0
إذا كان مقفلاً. يجب تعيين هذا المتغير في bootconfig بدلاً من سطر أوامر kernel في Android 12.
بالنسبة للأجهزة التي تدعم dm-verity ، استخدم ro.boot.verifiedbootstate
لتعيين قيمة ro.boot.flash.locked
على 0
؛ يؤدي هذا إلى فتح أداة تحميل التشغيل إذا كانت حالة التمهيد التي تم التحقق منها باللون البرتقالي.
حماية الأقسام الهامة
يجب أن تدعم الأجهزة قفل وإلغاء قفل الأقسام المهمة، والتي يتم تعريفها على أنها كل ما هو مطلوب لتشغيل الجهاز في أداة تحميل التشغيل. قد تتضمن هذه الأقسام الصمامات، والأقسام الافتراضية لمركز الاستشعار، ومحمل الإقلاع للمرحلة الأولى، والمزيد. لقفل الأقسام المهمة، يجب عليك استخدام آلية تمنع التعليمات البرمجية (النواة، صورة الاسترداد، رمز OTA، وما إلى ذلك) التي تعمل على الجهاز من تعديل أي قسم مهم بشكل متعمد. يجب أن تفشل وكالات السفر عبر الإنترنت في تحديث الأقسام المهمة إذا كان الجهاز في حالة قفل حرجة.
يجب أن يتطلب الانتقال من حالة القفل إلى حالة إلغاء القفل تفاعلاً فعليًا مع الجهاز. يشبه هذا التفاعل تأثيرات تشغيل أمر fastboot flashing unlock
ولكنه يتطلب من المستخدم الضغط على زر فعلي على الجهاز. يجب ألا تسمح الأجهزة بالانتقال برمجيًا من lock critical
إلى unlock critical
دون تفاعل فعلي، ويجب ألا يتم شحن الأجهزة في حالة unlock critical
.