يتوافق نظام Android 10 والإصدارات الأحدث مع الأقسام التي يمكن تغيير حجمها من خلال تغيير موقع تنفيذ Fastboot الإلكتروني من برنامج الإقلاع إلى مساحة المستخدم هذا النمط تتيح عملية إعادة تحديد الموقع نقل الرمز الوامض إلى أداة قابلة للصيانة وقابلة للاختبار مكان عام فقط مع أجزاء خاصة بالبائع من Fastboot يتم تنفيذها بواسطة طبقة تجريد الأجهزة (HAL). بالإضافة إلى ذلك، إنّ نظام التشغيل Android 12 والأعلى يتوافق مع وامض الهزّات من خلال أمر Fastboot الإضافي.
توحيد Fastboot واسترداد الحساب
بما أنّ سياسة Fastboot وميزة الاسترداد متشابهتان، يمكنك دمجهما في حساب واحد أو برنامج ثنائي. يوفر هذا مزايا مثل استخدام مساحة أقل، عدد الأقسام الأقل بشكل عام، كما أن توفير ميزة Fastboot واستعادة البيانات والنواة والمكتبات.
للتوافق مع fastbootd
، يجب أن تنفذ برنامج الإقلاع حظرًا جديدًا للتحكّم في التشغيل
(BCB) الأمر boot-fastboot
. لاستخدام وضع "fastbootd
"، برنامج الإقلاع
تكتب boot-fastboot
في حقل الأمر لرسالة BCB وتترك الحقل
لم يتم تغيير حقل recovery
من BCB (لتفعيل إعادة تشغيل أي عملية استرداد تمت مقاطعتها
المهام). ولم يطرأ أي تغيير على الحقول status
وstage
وreserved
.
يتم تحميل برنامج الإقلاع وتشغيله في صورة الاسترداد عند رؤية
boot-fastboot
في حقل أوامر BCB. عملية الاسترداد ثم تحلّل رسالة BCB
وينتقل إلى وضع fastbootd
.
أوامر ADB
يوضِّح هذا القسم الأمر adb
لدمج fastbootd
. تشير رسالة الأشكال البيانية
نتائج مختلفة، اعتمادًا على ما إذا تم تنفيذه من خلال النظام أو
عن طريق الاسترداد.
الأمر | الوصف |
---|---|
reboot fastboot |
|
أوامر Fastboot
يصف هذا القسم أوامر Fastboot لدمج fastbootd
،
بما في ذلك الأوامر الجديدة لوميض وإدارة الأقسام المنطقية. بعض الإشعارات
للأوامر نتائج مختلفة، اعتمادًا على ما إذا تم تنفيذها من خلال
برنامج الإقلاع أو من خلال fastbootd
.
الأمر | الوصف |
---|---|
reboot recovery |
|
reboot fastboot |
تتم إعادة تشغيل الجهاز في fastbootd . |
getvar is-userspace |
|
getvar is-logical:<partition> |
تعرض yes إذا كان القسم المعين قسمًا منطقيًا،
no بخلاف ذلك.
تتوافق الأقسام المنطقية مع جميع الأوامر الواردة أدناه. |
getvar super-partition-name |
تعرض اسم القسم المميّز. يتضمّن الاسم الخانة الحالية اللاحقة إذا كان القسم المميز عبارة عن قسم A/B (لا يكون كذلك عادةً). |
create-logical-partition <partition> <size> |
تنشئ قسمًا منطقيًا بالاسم والحجم المعطاين. يجب ألّا يكون الاسم موجودة بالفعل كقسم منطقي. |
delete-logical-partition <partition> |
يؤدي هذا الإجراء إلى حذف القسم المنطقي المحدّد (يمحو القسم بشكل فعّال). |
resize-logical-partition <partition> <size> |
لتغيير حجم القسم المنطقي إلى الحجم الجديد بدون تغيير محتواه. يتعذّر تنفيذ تغيير الحجم إذا لم تكن هناك مساحة كافية لإجراء تغيير الحجم. |
update-super <partition> |
يدمج التغييرات التي تم إجراؤها على البيانات الوصفية للقسم المميز. إذا تعذر الدمج
(على سبيل المثال، التنسيق على الجهاز هو إصدار غير متوافق)، فعندئذ
فشل الأمر. تؤدي مَعلمة wipe الاختيارية إلى استبدال القيم.
البيانات الوصفية، بدلاً من إجراء عملية دمج. |
flash <partition> [ <filename> ] |
كتابة ملف في قسم Flash. يجب أن يكون الجهاز في حالة فتح القفل. |
erase <partition> |
محو قسم (غير مطلوب ليتم محو البيانات بأمان). يجب أن يكون الجهاز ضِمن حالة فتح القفل. |
getvar <variable> | all |
يعرض متغير برنامج الإقلاع أو جميع المتغيرات. إذا لم يكن المتغير الموجودة، تُرجع خطأ. |
set_active <slot> |
تضبط هذه السياسة خانة تشغيل A/B المحدّدة على بالنسبة إلى التوافق مع A/B، تكون الخانات عبارة عن مجموعات مكرّرة من الأقسام التي يمكن تشغيلها.
من مستقلة. يُطلق على الشرائح اسم |
reboot |
يعيد تشغيل الجهاز بشكل طبيعي. |
reboot-bootloader (أو reboot bootloader ) |
يعيد هذا الإجراء تشغيل الجهاز في برنامج الإقلاع. |
fastboot fetch vendor_boot <out.img> |
يمكن استخدامها في Android 12 والإصدارات الأحدث من أجل أو دعم برامج تشتيت أو برامج غير مترابطة
تحصل على حجم القسم بالكامل وحجم المجموعة. تحصل على بيانات لكل مقطع،
بعد ذلك، يتم دمج البيانات معًا في "
لمعرفة التفاصيل، يُرجى الاطّلاع على |
fastboot flash vendor_boot:default <vendor-ramdisk.img> |
تُستخدم هذه السياسة في نظام التشغيل Android 12 والإصدارات الأحدث لإتاحة الإصدارات الوامضة من قِبل المورّدين. وهذا شكل خاص من أمر الفلاش. وهي تؤدي وظيفة صورة
للحصول على التفاصيل، يمكنك مراجعة
|
fastboot flash vendor_boot:<foo> <vendor-ramdisk.img> |
يمكن استخدامها في Android 12 والإصدارات الأحدث من أجل
أو دعم حزم توريث وامضة لجلب صورة للحصول على التفاصيل، يمكنك مراجعة
|
برنامج Fastboot وبرنامج الإقلاع
يؤدي برنامج الإقلاع إلى تثبيت الإصدارات bootloader
وradio
وboot/recovery
.
الأقسام، وبعدها يتم تشغيل الجهاز في Fastboot (مساحة المستخدم) ثم يومض
جميع الأقسام الأخرى. يجب أن يتوافق برنامج الإقلاع مع الأوامر التالية:
الأمر | الوصف |
---|---|
download |
يتم تنزيل الصورة للفلاش. |
flash recovery <image>/ flash boot <image>/ flash
bootloader <image>/ |
يؤدي هذا الإجراء إلى وميض قسم "recovery/boot " وبرنامج الإقلاع. |
reboot |
يعيد هذا الإجراء تشغيل الجهاز. |
reboot fastboot |
تتم إعادة تشغيل الجهاز للدخول في وضع Fastboot. |
reboot recovery |
عمليات إعادة التشغيل لاسترداد الحساب. |
getvar |
تحصل هذه الميزة على متغير برنامج الإقلاع وهو مطلوب لتشغيل نسخة افتراضية من الاسترداد أو التشغيل
صورة (على سبيل المثال، current-slot و
max-download-size ). |
oem <command> |
الأمر الذي يحدّده المصنّع الأصلي للجهاز. |
الأقسام الديناميكية
يجب ألا يسمح برنامج الإقلاع بوميض أو محو بيانات الأقسام الديناميكية.
ويجب عرض رسالة خطأ إذا تمت محاولة إجراء هذه العمليات. للمراجعة
فإن أداة Fastboot (وبرنامج الإقلاع) تدعم فرض
لإجراء مسح ضوئي لقسم ديناميكي بشكل مباشر أثناء استخدام وضع برنامج الإقلاع. بالنسبة
على سبيل المثال، إذا كان system
قسمًا ديناميكيًا على الجهاز الذي تمت إعادة تعديله،
يؤدي استخدام الأمر fastboot --force flash system
إلى تمكين برنامج الإقلاع
(بدلاً من fastbootd
) لتشغيل التقسيم.
الشحن في وضع عدم الاتصال
إذا كان الجهاز يتيح الشحن في وضع عدم الاتصال أو تم تشغيله تلقائيًا في جهاز
عند تطبيق القوة، فإن تنفيذ
يجب أن يكون الأمر fastboot oem off-mode-charge 0
وتجاوز هذه الأوضاع الخاصة، بحيث يتم تشغيل الجهاز كما لو كان المستخدم قد ضغط
زر التشغيل.
طبقة تجريد الأجهزة (HAL) للمصنّع الأصلي للجهاز في Fastboot
لاستبدال برنامج الإقلاع Fastboot تمامًا، يجب أن يتعامل Fastboot مع جميع أوامر Fastboot. فالعديد من هذه الأوامر من المصنّعين الأصليين للأجهزة ويتم توثيقها ولكن استخدام تطبيق مخصّص العديد من الأوامر الخاصة بالمُصنّع الأصلي غير موثقة. للتعامل مع هذه الأوامر، يحدد برنامج Fastboot HAL جدول البيانات أوامر المصنّع الأصلي للجهاز. يمكن للمصنّعين الأصليين للأجهزة أيضًا تنفيذ أوامرهم الخاصة.
فيما يلي تعريف طبقة HAL التي يتم تعريفها في Fastboot:
import IFastbootLogger;
/**
* IFastboot interface implements vendor specific fastboot commands.
*/
interface IFastboot {
/**
* Returns a bool indicating whether the bootloader is enforcing verified
* boot.
*
* @return verifiedBootState True if the bootloader is enforcing verified
* boot and False otherwise.
*/
isVerifiedBootEnabled() generates (bool verifiedBootState);
/**
* Returns a bool indicating the off-mode-charge setting. If off-mode
* charging is enabled, the device autoboots into a special mode when
* power is applied.
*
* @return offModeChargeState True if the setting is enabled and False if
* not.
*/
isOffModeChargeEnabled() generates (bool offModeChargeState);
/**
* Returns the minimum battery voltage required for flashing in mV.
*
* @return batteryVoltage Minimum battery voltage (in mV) required for
* flashing to be successful.
*/
getBatteryVoltageFlashingThreshold() generates (int32_t batteryVoltage);
/**
* Returns the file system type of the partition. This is only required for
* physical partitions that need to be wiped and reformatted.
*
* @return type Can be ext4, f2fs or raw.
* @return result SUCCESS if the operation is successful,
* FAILURE_UNKNOWN if the partition is invalid or does not require
* reformatting.
*/
getPartitionType(string partitionName) generates (FileSystemType type, Result result);
/**
* Executes a fastboot OEM command.
*
* @param oemCmd The oem command that is passed to the fastboot HAL.
* @response result Returns the status SUCCESS if the operation is
* successful,
* INVALID_ARGUMENT for bad arguments,
* FAILURE_UNKNOWN for an invalid/unsupported command.
*/
doOemCommand(string oemCmd) generates (Result result);
};
تفعيل Fastbootd
لتفعيل ميزة "fastbootd
" على جهاز:
إضافة
fastbootd
إلىPRODUCT_PACKAGES
فيdevice.mk
:PRODUCT_PACKAGES += fastbootd
تأكَّد من تضمين HAL وعنصر التحكم في التشغيل (HAL) وHAL في ميزة Fastboot (HAL) والتحكم في التشغيل. كجزء من صورة الاستعادة.
أضِف أي أذونات SEPolicy خاصة بالجهاز يطلبها
fastbootd
. بالنسبة على سبيل المثال، يتطلبfastbootd
إذنًا بالكتابة في قسم خاص بالجهاز فلاش هذا القسم. بالإضافة إلى ذلك، قد يؤدي تنفيذ HAL في Fastboot إلى تتطلب أذونات خاصة بالجهاز.
للتحقق من صحة بيانات Fastboot مساحة المستخدم، يمكنك تشغيل أداة اختبار المورّد (Vendor Test Suite) (VTS):
ملفات عشوائية لبائعي Flash
يتوافق الإصدار 12 من نظام التشغيل Android والإصدارات الأحدث مع
ملفات تعريف الارتباط الوامضة مع إضافة أمر Fastboot (Fastboot) يسحب كل
صورة واحدة (vendor_boot
) من جهاز. يوجه الأمر أمر Fastboot (Fastboot) من جهة المضيف.
لقراءة رأس تشغيل البائع وإعادة إنشاء وفلاش الصورة الجديدة.
لسحب صورة vendor_boot
الكاملة، تمت إضافة الأمر fetch:vendor_boot
.
على كل من بروتوكول Fastboot، وتنفيذ Fastbootd للبروتوكول
في Android 12. تجدر الإشارة إلى أنّ Fastbootd يفعل
ولكن قد لا يتم تنفيذ هذا الإجراء من خلال برنامج الإقلاع نفسه. يمكن للمصنّعين الأصليين للأجهزة إضافة
الأمر fetch:vendor_boot
إلى تنفيذ برنامج الإقلاع
والبروتوكول. ولكن إذا لم يتم التعرف على الأمر في وضع برنامج الإقلاع، فحينئذٍ
ملفات RAMD المتشابكة لأحد البائعين في وضع برنامج الإقلاع ليست متاحة عبر المورِّد
.
التغييرات التي طرأت على برنامج الإقلاع
يتم تنفيذ الأمرين getvar:max-fetch-size
وfetch:name
في
fastbootd
لدعم عمليات إعادة التوجيه الوامضة للمورّدين في برنامج الإقلاع، يجب:
تنفيذ هذين الأمرين.
تغييرات Fastbootd
getvar:max-fetch-size
مثل max-download-size
. ويحدد
أقصى حجم يمكن للجهاز إرساله في استجابة DATA واحدة. يجب ألّا يُسمَح السائق
لجلب حجم أكبر من هذه القيمة.
يجري "fetch:name[:offset[:size]]
" سلسلة من عمليات الفحص على الجهاز. إذا كانت كل المنصّات
أيًا مما يلي صحيح، يُرجع الأمر fetch:name[:offset[:size]]
البيانات:
- يعمل الجهاز بإصدار يمكن تصحيح الأخطاء فيه.
- الجهاز غير مقفَل (حالة التشغيل باللون البرتقالي).
- اسم القسم الذي تم استرجاعه هو
vendor_boot
. - تقع قيمة
size
ضمن 0 <size
<=max-fetch-size
.
بعد التحقّق من ذلك، يعرض fetch:name[:offset[:size]]
حجم القسم.
والمعادلة.
ملاحظات:
- إنّ
fetch:name
تعادلfetch:name:0
، أي ما يعادلfetch:name:0:partition_size
fetch:name:offset
تساويfetch:name:offset:(partition_size - offset)
ولذلك تكون قيمة fetch:name[:offset[:size]]
=
fetch:name:offset:(partition_size - offset)
في حال عدم تحديد قيمة offset
أو partition_size
(أو كليهما)،
يتم استخدام القيم التلقائية، والتي تكون فيها offset
هي 0، وبالنسبة إلى size
هي
القيمة المحسوبة partition_size - offset
.
- تم تحديد إزاحة، لم يتم تحديد الحجم:
size = partition_size - offset
- لم يتم تحديد أي منهما: القيم التلقائية المستخدمة لكليهما،
size = partition_size
- 0.
على سبيل المثال، يجلب fetch:foo
قسم foo
بالكامل بالإزاحة 0.
تغييرات برامج التشغيل
تمت إضافة أوامر إلى أداة Fastboot لتنفيذ تغييرات برنامج التشغيل. يُعد كل منها المرتبطة بتعريفها الكامل في جدول Fastboot (تشغيل سريع) الطلبات.
fastboot fetch vendor_boot out.img
- تستدعي
getvar max-fetch-size
لتحديد حجم المجموعة. - استدعاء
getvar partition-size:vendor_boot[_a]
لتحديد حجم القسم بالكامل. - المكالمات على الرقم
fastboot fetch vendor_boot[_a]:offset:size
لكل مكالمة مقطع. (يتجاوز حجم المجموعة أكبر من حجمvendor_boot
، لذلك عادة ما يكون هناك مقطع واحد فقط). - يتم دمج البيانات معًا من أجل
out.img
.
- تستدعي
fastboot flash vendor_boot:default vendor-ramdisk.img
وهذا شكل خاص من أمر الفلاش. وهي تجلب صورة واحدة (
vendor_boot
)، كما لو تم استدعاءfastboot fetch
.- إذا كان تمهيد المورد هو إصدار العنوان
3،
يقوم بما يلي:
- لاستبدال ذاكرة التخزين المؤقت للبائع بالصورة المحددة.
- يؤدي هذا الإجراء إلى عرض وميض الصورة
vendor_boot
الجديدة.
- إذا كان رأس تشغيل البائع هو الإصدار
4،
يقوم بما يلي:
- يستبدل قرص البائع بأكمله بالصورة المحددة بحيث
الصورة المحددة تصبح الجزء الوحيد من القرص المضغوط للبائع في
صورة واحدة (
vendor_boot
). - لإعادة حساب الحجم والإزاحة في جدول RAMD للمورد.
- يؤدي هذا الإجراء إلى عرض وميض الصورة
vendor_boot
الجديدة.
- يستبدل قرص البائع بأكمله بالصورة المحددة بحيث
الصورة المحددة تصبح الجزء الوحيد من القرص المضغوط للبائع في
صورة واحدة (
- إذا كان تمهيد المورد هو إصدار العنوان
3،
يقوم بما يلي:
fastboot flash vendor_boot:foo vendor-ramdisk.img
لجلب
vendor_boot image
، كما لو تم استدعاءfastboot fetch
.- إذا كان رأس تشغيل البائع هو الإصدار 3، فسيعرض خطأ.
إذا كان رأس تشغيل المورِّد هو الإصدار 4، سيتم إجراء ما يلي:
- للعثور على جزء ذاكرة الوصول العشوائي للمورّد الذي يحمل الاسم
foo
. إذا لم يتم العثور عليه، أو إذا كانت هناك مطابقات متعددة، فسيتم إرجاع خطأ. - لاستبدال جزء ذاكرة الوصول العشوائي للمورّد بالصورة المحددة.
- يعيد حساب كل حجم وإزاحة في جدول ذاكرة التخزين المؤقت للمورد.
- يؤدي هذا الإجراء إلى عرض وميض الصورة
vendor_boot
الجديدة.
- للعثور على جزء ذاكرة الوصول العشوائي للمورّد الذي يحمل الاسم
علامة mkbootimg
يتم حجز الاسم default
لتسمية أجزاء ramdisk للمورّد في
الإصدار 12 من نظام التشغيل Android والإصدارات الأحدث بينما يُعد Fastboot flash vendor_boot:default
تظل الدلالة كما هي، ويجب عدم تسمية أجزاء القرص الصلب
default
التغييرات على SELinux
تم إجراء تغيير في
fastbootd.te
لدعم عمليات الهدوء التي يجريها البائعون.