لتنفيذ التحديثات عبر اتصال لاسلكي، يجب أن يكون برنامج الإقلاع قادرًا على الوصول إلى قرص RAM الخاص بالاسترداد أثناء عملية الإقلاع. إذا كان الجهاز يستخدم صورة استرداد AOSP غير معدَّلة، يقرأ برنامج الإقلاع أول 32 بايت على قسم misc
. وإذا كانت البيانات المتوفّرة تطابق boot-recovery
، يبدأ برنامج الإقلاع في تشغيل صورة recovery
. تتيح هذه الطريقة مواصلة أي عملية استرداد معلّقة (مثل تطبيق تحديث عبر الأثير أو إزالة البيانات) إلى حين اكتمالها.
للحصول على تفاصيل حول محتوى وحدة التخزين المحظورة في ذاكرة الفلاش المستخدَمة في الاتصالات من خلال وضع الاسترداد وبرنامج التشغيل، يُرجى الرجوع إلى bootable/recovery/bootloader_message/bootloader_message.h.
الأجهزة التي تتلقّى تحديثات من النوع أ/ب
لإتاحة تحديثات عبر الأثير على الأجهزة التي تستخدم تحديثات A/B، تأكَّد من أنّ برنامج تحميل التشغيل على الجهاز يستوفي المعايير التالية.
المعايير العامة
يجب أن تكون جميع الأقسام التي يتم تحديثها من خلال تحديث عبر شبكة غير سلكية قابلة للتحديث أثناء تشغيل النظام الرئيسي (وليس أثناء التحديث في وضع الاسترداد).
لبدء تشغيل القسم
system
، يمرِّر برنامج التحميل القيمة التالية في سطر أوامر النواة:ro root=/dev/[node] rootwait init=/init
.يتحمّل إطار عمل Android مسؤولية استدعاء
markBootSuccessful
من طبقة HAL. يجب ألا يضع برنامج الإقلاع علامة على أي قسم للإشارة إلى أنّه تم تشغيله بنجاح.
دعم طبقة تجريد الأجهزة الخاصة بالتحكّم في التشغيل
يجب أن يتيح برنامج الإقلاع استخدام boot_control
HAL كما هو محدّد في
hardware/libhardware/include/hardware/boot_control.h
. يستعلم برنامج التحديث عن
HAL الخاص بأداة التحكم في عملية التشغيل،
ويحدّث فتحة التشغيل غير المستخدَمة، ويغيّر فتحة التشغيل النشطة باستخدام
HAL، ثم يعيد التشغيل إلى نظام التشغيل المحدَّث. لمزيد من التفاصيل، يُرجى الاطّلاع على
تنفيذ طبقة HAL الخاصة بالتحكّم في عملية التشغيل.
التوافق مع الفترات الزمنية
يجب أن يتيح برنامج الإقلاع وظائف ذات صلة بالأقسام وفتحات التخزين، بما في ذلك:
يجب أن تتضمّن أسماء الأقسام لاحقة تحدّد الأقسام التي تنتمي إلى فتحة معيّنة في برنامج التشغيل. لكل قسم من هذه الأقسام، هناك متغيّر مطابق
has-slot:partition base name
بقيمةyes
. يتم تسمية الخانات أبجديًا على النحو التالي: أ، ب، ج، وما إلى ذلك، بما يتوافق مع الأقسام التي تتضمّن اللاحقة_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
المناسب وأدرِج المسار إلى قسم النظام الصحيح في سطر أوامر النواة.املأ المَعلمة
slot_suffix
في سطر أوامر النواة.التشغيل إذا لم يتم وضع علامة
slot-successful
، يجب إنقاصslot-retry-count
.
تحدّد الأداة المساعدة fastboot
القسم الذي سيتم تحديثه عند تنفيذ أي أوامر تحديث. على سبيل المثال، يؤدي تنفيذ الأمر fastboot flash system system.img
أولاً إلى طلب البحث عن المتغيّر current-slot
ثم ربط النتيجة بالنظام لإنشاء اسم القسم الذي يجب تثبيته (system_a
وsystem_b
وما إلى ذلك).
عند ضبط الفتحة الحالية باستخدام الأمر set_active
fastboot أو الأمر setActiveBootSlot
HAL الخاص بالتحكّم في عملية التشغيل، على برنامج التشغيل تحديث الفتحة الحالية ومحو slot-unbootable
وslot-successful
وإعادة ضبط عدد المحاولات (هذه هي الطريقة الوحيدة لمحو slot-unbootable
).
الأجهزة التي لا تتضمّن تحديثات A/B
لإتاحة تحديثات عبر الأثير على الأجهزة التي لا تستخدم تحديثات A/B (راجِع الأجهزة التي يمكن تحديثها بدون استخدام نظام A/B)، تأكَّد من أنّ برنامج التشغيل الأوّلي للجهاز يستوفي المعايير التالية.
يجب أن يحتوي القسم
recovery
على صورة قادرة على قراءة صورة نظام من أحد الأقسام المتوافقة (cache
أوuserdata
) وكتابتها في القسمsystem
.يجب أن يتيح برنامج الإقلاع إمكانية التشغيل مباشرةً في وضع الاسترداد.
في حال توفّر تحديثات صور الراديو، يجب أن يكون القسم
recovery
قادرًا أيضًا على تحديث الراديو. يمكن إجراء ذلك بإحدى الطريقتَين التاليتَين:يومض برنامج الإقلاع الراديو. في هذه الحالة، من المفترض أن يكون من الممكن إعادة التشغيل من قسم الاسترداد إلى برنامج الإقلاع لإكمال التحديث.
تعرض صورة الاسترداد الراديو. يمكن توفير هذه الوظيفة كأداة أو مكتبة ثنائية.