لتنفيذ التحديثات عبر شبكة غير سلكيّة، يجب أن يتمكّن
برنامج الإقلاع من الوصول إلى قرص ذاكرة وصول عشوائي (RAM) لإعادة التشغيل أثناء عملية الإقلاع. إذا كان الجهاز
يستخدم صورة استرداد AOSP لم يتم تعديلها، يقرأ برنامج الإقلاع أول 32 بايت
في قسم misc
. وإذا كانت البيانات المعروضة تتطابق مع boot-recovery
، يبدأ
برنامج الإقلاع في تشغيل صورة recovery
. تتيح هذه الطريقة مواصلة تنفيذ أي عملية قيد الانتظار لمحاولة التعافي (مثل تطبيق تحديث OTA أو إزالة البيانات) حتى اكتمالها.
لمعرفة تفاصيل عن محتوى إحدى الكتل في ذاكرة الفلاش المستخدَمة للتواصل من خلال وضع الاسترداد ومُشغِّل الإقلاع، يُرجى الرجوع إلى bootable/recovery/bootloader_message/bootloader_message.h.
الأجهزة التي تتوفّر عليها تحديثات A/B
لتفعيل ميزة تحديثات OTA على الأجهزة التي تستخدم تحديثات A/B، تأكَّد من استيفاء أداة تحميل نظام التشغيل للجهاز للمعايير التالية.
المعايير العامة
يجب أن تكون جميع الأقسام التي تم تحديثها من خلال شبكة غير سلكية (OTA) قابلة للتحديث أثناء التمهيد لنظام التشغيل الرئيسي (ولا يتم تحديثها في وضع الاسترداد).
لتشغيل قسم
system
، يُرسِل أداة تحميل البرامج القيمة التالية في سطر أوامرro root=/dev/[node] rootwait init=/init
:ro root=/dev/[node] rootwait init=/init
.تقع على عاتق إطار عمل Android مسؤولية استدعاء
markBootSuccessful
من HAL. يجب ألا يضع برنامج الإقلاع علامة على أي قسم على أنّه تم التمهيد منه بنجاح.
توفُّر HAL للتحكّم في عملية التشغيل
يجب أن يتوافق برنامج الإقلاع مع واجهة برمجة التطبيقات boot_control
HAL كما هو محدّد في
hardware/libhardware/include/hardware/boot_control.h
. يُجري أداة التحديث طلب بحث في HAL لوحدة التحكّم في بدء التشغيل، ويُجري تحديثًا لفتحة بدء التشغيل غير المستخدَمة، ويغيّر الفتحة النشطة باستخدام HAL، ويعيد تشغيل الجهاز ليعمل بنظام التشغيل المُحدَّث. لمعرفة التفاصيل، يُرجى الاطّلاع على مقالة تنفيذ واجهة برمجة التطبيقات لوحدة التحكّم في عملية التشغيل (HAL).
إتاحة الفتحات
يجب أن يتيح برنامج الإقلاع الوظائف ذات الصلة بالأقسام والمنافذ، بما في ذلك:
يجب أن تتضمّن أسماء الأقسام إضافة لاحقة تحدِّد الأقسام التي تنتمي إلى خانة معيّنة في أداة تحميل البرامج. لكل قسم من هذا النوع، يكون هناك متغيّر مقابل
has-slot:partition base name
بقيمةyes
. يتم تسمية الفتحات أبجديًا مثل a وb وc وما إلى ذلك، والتي تتوافق مع القسمات التي تحتوي على اللاحقة_a
و_b
و_c
وما إلى ذلك. من المفترض أن يُعلم أداة تحميل البرامج النظام التشغيل بالفتحة التي تم تشغيلها باستخدام سمة سطر الأوامرandroidboot.slot_suffix
. يتم ضبط هذه السمة من خلال bootconfig للأجهزة التي يتم تشغيلها باستخدام الإصدار 12 من نظام التشغيل Android أو إصدار أحدث.تتم إعادة ضبط قيمة
slot-retry-count
على قيمة موجبة (عادةً3
)، إما من خلال وحدة HAL الخاصة بإدارة عملية التمهيد من خلال دالة الاستدعاءsetActiveBootSlot
أو من خلال الأمرfastboot set_active
. عند تعديل قسم هو جزء من خانة، يُزيل برنامج الإقلاع الرسالة "تم الإقلاع بنجاح" ويعيد ضبط عدد عمليات إعادة المحاولة للخانة.
من المفترض أن يحدِّد برنامج الإقلاع أيضًا خانة التحميل. يعرض الشكل مثالاً على عملية اتخاذ القرار.

حدِّد خانة الإعلان التي تريد عرضها. لا تحاول تحميل خانة تم وضع علامة عليها
slot-unbootable
. يجب أن تكون هذه الفتحة متسقة مع القيم التي تعرضها أداة fastboot، ويُشار إليها باسم الفتحة الحالية.إذا لم يتم وضع علامة
slot-successful
على الفتحة الحالية وكانت تحتوي علىslot-retry-count = 0
، ضَع علامةslot-unbootable
على الفتحة الحالية. بعد ذلك، اختَر خانة مختلفة غير مميّزة بالرمزunbootable
ومميّزة بالرمزslot-successful
. أصبحت هذه الخانة الآن هي الخانة المحدّدة. إذا لم تكن هناك خانة حالية متوفرة، يجب التمهيد إلى وضع الاسترداد أو عرض رسالة خطأ مفيدة للمستخدم.اختَر
boot.img
المناسب وأدرِج المسار إلى القسم الصحيح لنظام التشغيل في سطر أوامر kernel.املأ مَعلمة
slot_suffix
في سطر أوامر kernel.التشغيل إذا لم يتم وضع علامة
slot-successful
، عليك خفض القيمةslot-retry-count
.
تحدِّد الأداة fastboot
القسم الذي سيتم برمجته عند تشغيل أي تعليمات
برمجة. على سبيل المثال، يؤدي تشغيل الأمر fastboot flash system system.img
أولاً إلى طلب متغيّر current-slot
ثم تسلسل النتيجة
إلى النظام لإنشاء اسم القسم الذي يجب برمجته
(system_a
أو system_b
أو غير ذلك).
عند ضبط الفتحة الحالية باستخدام الأمر fastboot set_active
أو الأمر
boot control HAL setActiveBootSlot
، من المفترض أن يعدّل أداة تحميل البرامج التمهيدية
الفتحة الحالية، وتُمحو slot-unbootable
وslot-successful
، وتتم إعادة ضبط
عدد عمليات إعادة المحاولة (هذه هي الطريقة الوحيدة لمحو slot-unbootable
).
الأجهزة التي لا تتوفّر عليها تحديثات A/B
لتفعيل التحديثات عبر الهواء على الأجهزة التي لا تستخدم تحديثات A/B (راجِع الأجهزة التي يمكن تحديثها بدون استخدام تحديثات A/B)، تأكَّد من أنّ أداة التمهيد في الجهاز تستوفي المعايير التالية.
يجب أن يحتوي القسم
recovery
على صورة يمكنها قراءة صورة نظام من بعض الأقسام المتوافقة (cache
وuserdata
) وكتابة هذه الصورة في القسمsystem
.من المفترض أن يتيح برنامج الإقلاع الانتقال مباشرةً إلى وضع الاسترداد.
إذا كانت تحديثات صور الراديو متاحة، يجب أن يكون القسم
recovery
قادرًا أيضًا على تحديث الراديو. يمكن تنفيذ ذلك بطريقتَين:يُبرمِج برنامج الإقلاع الراديو. في هذه الحالة، من المفترض أن يكون من الممكن إعادة التشغيل من قسم الاسترداد إلى برنامج الإقلاع لإكمال التحديث.
تومض صورة الاسترداد جهاز الراديو. يمكن توفير هذه الوظيفة كمكتبة ثنائية أو أداة.