لدعم التحديثات عبر الأثير (OTA) ، يجب أن يكون برنامج تحميل التشغيل قادرًا على الوصول إلى قرص ذاكرة الوصول العشوائي للاسترداد أثناء التمهيد. إذا كان الجهاز يستخدم صورة استرداد AOSP غير معدلة، فإن أداة تحميل التشغيل تقرأ أول 32 بايت على القسم misc
؛ إذا كانت البيانات هناك تتطابق مع boot-recovery
، فسيقوم أداة تحميل التشغيل بالتمهيد في صورة recovery
. تمكن هذه الطريقة أي أعمال استرداد معلقة (على سبيل المثال، تطبيق OTA أو إزالة البيانات) من الاستمرار في الاكتمال.
للحصول على تفاصيل حول محتوى الكتلة في الفلاش المستخدمة للاتصالات عن طريق الاسترداد ومحمل التشغيل، راجع bootable/recovery/bootloader_message/bootloader_message.h .
الأجهزة التي تحتوي على تحديثات A/B
لدعم تحديثات OTA على الأجهزة التي تستخدم تحديثات A/B ، تأكد من أن أداة تحميل تشغيل الجهاز تلبي المعايير التالية.
المعايير العامة
يجب أن تكون جميع الأقسام التي تم تحديثها من خلال OTA قابلة للتحديث أثناء تشغيل النظام الرئيسي (وعدم تحديثها أثناء الاسترداد).
لتمهيد قسم
system
، يقوم محمل الإقلاع بتمرير القيمة التالية في سطر أوامر kernel: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 للأجهزة التي تعمل بنظام التشغيل Android 12 أو الإصدارات الأحدث.يتم إعادة تعيين قيمة
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
أو أمر التحكم في التمهيد HAL setActiveBootSlot
، يجب على أداة تحميل التشغيل تحديث الفتحة الحالية، ومسح slot-unbootable
slot-successful
، وإعادة تعيين عدد مرات إعادة المحاولة (هذه هي الطريقة الوحيدة لمسح slot-unbootable
).
الأجهزة التي لا تحتوي على تحديثات A/B
لدعم تحديثات OTA على الأجهزة التي لا تستخدم تحديثات A/B (راجع الأجهزة غير القابلة للتحديث A/B )، تأكد من أن أداة تحميل تشغيل الجهاز تستوفي المعايير التالية.
يجب أن يحتوي قسم
recovery
على صورة قادرة على قراءة صورة النظام من بعض الأقسام المدعومة (cache
،userdata
) وكتابتها إلى قسمsystem
.يجب أن يدعم برنامج تحميل التشغيل إعادة التشغيل مباشرة في وضع الاسترداد.
إذا كانت تحديثات صورة الراديو مدعومة، فمن المفترض أن يكون قسم
recovery
قادرًا أيضًا على تحديث الراديو. ويمكن تحقيق ذلك بإحدى الطريقتين:يقوم برنامج Bootloader بوميض الراديو. في هذه الحالة، من المفترض أن يكون من الممكن إعادة التشغيل من قسم الاسترداد مرة أخرى إلى أداة تحميل التشغيل لإكمال التحديث.
تومض صورة الاسترداد على الراديو. يمكن توفير هذه الوظيفة كمكتبة ثنائية أو أداة مساعدة.