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

تأتي معظم أجهزة 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.