لتنفيذ التحديثات التي تتم عبر شبكة غير سلكيّة (OTA)، يجب أن يكون برنامج الإقلاع قادرًا على الوصول إلى قرص ذاكرة وصول عشوائي (RAM) لاسترداد البيانات أثناء التشغيل. إذا كان الجهاز يستخدم صورة استرداد AOSP غير معدّلة، يقرأ برنامج الإقلاع أول 32 بايت في قسم misc
. وإذا تطابقت البيانات مع boot-recovery
، يتم تشغيل برنامج الإقلاع في صورة recovery
. تفعِّل هذه الطريقة أي عمل استرداد
في انتظار المراجعة (على سبيل المثال، تطبيق التحديث عبر الهواء أو إزالة البيانات) من أجل
الإكمال.
للحصول على تفاصيل حول محتوى الحظر في فلاش المُستخدَم للاتصالات من خلال عملية الاسترداد وبرنامج الإقلاع، يُرجى الرجوع إلى المقالة bootable/recovery/bootloader_message/bootloader_message.h.
الأجهزة التي تتضمّن تحديثات A/B
لإتاحة التحديثات عبر الهواء على الأجهزة التي تستخدم تحديثات A/B، عليك التأكّد من أنّ برنامج إقلاع الجهاز يستوفي المعايير التالية.
المعايير العامة
ينبغي أن تكون جميع الأقسام التي تم تحديثها من خلال التحديث عبر الهواء قابلة للتحديث أثناء تشغيل النظام الرئيسي (وعدم تحديثه في عملية الاسترداد).
لتشغيل قسم "
system
"، يعمل برنامج الإقلاع على ضبط القيمة التالية في سطر أوامر النواة:ro root=/dev/[node] rootwait init=/init
.يتحمل إطار عمل Android مسؤولية استدعاء
markBootSuccessful
من HAL. وينبغي ألا تضع أداة الإقلاع علامة على أحد الأقسام على أنه تم تشغيله بنجاح.
دعم طبقة تجريد الأجهزة (HAL) للتحكم في التشغيل
يجب أن يتوافق برنامج الإقلاع مع طبقة تجريد الأجهزة (HAL) boot_control
كما هو محدّد في 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
. يتم ضبط هذه السمة من خلال ملف تعريف الارتباط للأجهزة التي تعمل بالإصدار 12 من نظام التشغيل Android أو الإصدارات الأحدث.تتم إعادة ضبط قيمة
slot-retry-count
إلى قيمة موجبة (عادةً3
)، إما من خلال عنصر التحكم في التشغيل HAL من خلال معاودة الاتصالsetActiveBootSlot
أو من خلال الأمرfastboot set_active
. عند تعديل قسم هو جزء من الفتحة، يمحو برنامج الإقلاع "تم التشغيل بنجاح" ويعيد ضبط عدد مرات إعادة محاولة فتح الخانة.
يجب أن يحدد برنامج الإقلاع أيضًا الخانة المطلوب تحميلها. يوضح الشكل مثالاً لعملية اتخاذ القرار.
![مسار ضبط برنامج الإقلاع](https://source.android.com/static/docs/core/architecture/bootloader/images/bootloader_slotting.png?hl=ar)
حدِّد الخانة التي تريد المحاولة. لا تحاول تحميل خانة تحمل علامة
slot-unbootable
. يجب أن تكون هذه الخانة متسقة مع القيم التي تعرضها ميزة Fastboot (Fastboot)، ويُشار إليها باسم الفتحة الحالية.إذا لم يتم وضع علامة
slot-successful
على الخانة الحالية ويتضمّنslot-retry-count = 0
، ضَع علامة على الخانة الحالية على أنّهslot-unbootable
. بعد ذلك، اختَر خانة مختلفة لم يتم وضع علامةunbootable
عليها وتم وضع علامةslot-successful
عليها. أصبحت هذه الخانة هي الآن الخانة المحددة. إذا لم تتوفر أي خانة حالية، يمكنك التمهيد لاسترداد الحساب أو عرض رسالة خطأ مفيدة للمستخدم.اختَر قيمة
boot.img
المناسبة وأدرِج المسار إلى قسم النظام الصحيح في سطر أوامر kernel.عليك تعبئة مَعلمة
slot_suffix
في سطر أوامر النواة.التشغيل. إذا لم يتم وضع علامة
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
لإتاحة التحديثات عبر الهواء على الأجهزة التي لا تستخدم تحديثات A/B (راجع الأجهزة القابلة للتحديث من خلال A/B)، تأكَّد من أنّ برنامج إقلاع الجهاز يستوفي المعايير التالية.
يجب أن يحتوي القسم
recovery
على صورة يمكنها قراءة صورة نظام من قسم متوافق (cache
أوuserdata
) وكتابتها في القسمsystem
.من المفترض أن يتيح برنامج الإقلاع إمكانية التشغيل مباشرةً في وضع الاسترداد.
إذا كانت تحديثات صور الراديو متاحة، يجب أن يتيح قسم
recovery
أيضًا وميض الراديو. ويمكن تحقيق ذلك بإحدى الطريقتين:يومض برنامج الإقلاع على الراديو. وفي هذه الحالة، من المفترض أن يكون من الممكن إعادة التشغيل من قسم الاسترداد إلى برنامج الإقلاع لإكمال عملية التحديث.
تومض صورة الاسترداد على الراديو.يمكن توفير هذه الوظيفة كمكتبة ثنائية أو أداة مساعدة.