في الأجهزة بخلاف A/B، يجب أن تحتوي صورة الاسترداد على معلومات من ملف ثنائي كبير (DTB) في شجرة الجهاز الإعداد المتقدم وواجهة التشغيل الصورة المركّبة (ACPI). عند تشغيل هذه الأجهزة في وضع الاسترداد، يمكن لبرنامج التمهيد تحميل الصورة المتراكبة التي تتوافق مع صورة الاسترداد. الأجهزة التي تتيح استخدام أسلوب A/B (سلس) يجب أن تستخدم التحديثات الاسترداد كتشغيل بدلاً من قسم استرداد منفصل (لمزيد من التفاصيل، يُرجى الرجوع إلى تنفيذ اختبار A/B) التعديلات).
خيارات تضمين DTBO/ACPIO للاستعادة كجزء من عملية التشغيل/الاسترداد الصورة بين إصدارات Android.
الإصدار | تعديل المخطّط | الامتثال لمعايير GKI | إصدار عنوان الإقلاع (أجهزة التشغيل) | إصدار عنوان الإقلاع (ترقية الأجهزة) | مطلوب صورة مخصصة لاسترداد الحساب |
---|---|---|---|---|---|
11 | اختبار أ/ب، اختبار أ/ب الافتراضي |
نعم | 3* | لا ينطبق | لا |
A/B وVirtual A/B |
لا | 2، 3 | 0 و1 و2 و3 | لا | |
ليس A/B | نعم | 3 | لا ينطبق | نعم | |
غير اختبار أ/ب | لا | 2، 3 | 0، 1، 2، 3 | نعم | |
10 (Q) | أ/ب | لا ينطبق | 2 | 0 و1 و2 | لا |
ليس A/B | لا ينطبق | 2 | 0 و1 و2 | نعم | |
9 (P) | أ/ب | لا ينطبق | 1 | 0, 1 | لا |
ليس A/B | لا ينطبق | 1 | 0, 1 | نعم | |
8 (O) | اختبار A/B | لا ينطبق | لا ينطبق (عند احتساب القيمة 0) | لا ينطبق (عند احتساب القيمة 0) | لا |
ليس A/B | لا ينطبق | لا ينطبق (عند احتساب القيمة 0) | لا ينطبق (عند احتساب القيمة 0) | نعم |
* يجب أن تستخدم أجهزة A/B التي تعمل بالإصدار 11 من نظام التشغيل Android أو إصدارًا أحدث وتستخدم صورة Kernel Generic (GKI) إصدارًا أساسيًا من عنوان التمهيد هو 3 لتكون متوافقة مع قسم التمهيد الخاص بالمورّد .
النقاط الرئيسية:
لا تحتاج أجهزة A/B إلى تحديد صورة استرداد لأنّ تحديثات A/B تستخدم مجموعتَين من الأقسام (بما في ذلك
boot
وdtbo
) وتتبدّل بينهما أثناء التحديثات، ما يزيل الحاجة إلى صورة الاسترداد. يمكن لأجهزة A/B الاستمرار في استخدام صورة مخصصة لاسترداد الحساب.بالنسبة إلى الأجهزة غير المزوّدة بميزة A/B والتي تعمل بالإصدار 11 من نظام التشغيل Android أو الإصدارات الأحدث وتستخدم الإصدار 3 من ملف "عنوان التمهيد"، يجب تحديد الإصدار 2 من ملف "عنوان التمهيد" لصورة الاسترداد بشكل منفصل. مثلاً:
BOARD_RECOVERY_MKBOOTIMG_ARGS := --header_version 2
بالنسبة إلى البُنى التي لا تتوافق مع أشجار الأجهزة، يمكن أن تضمين صورة ACPIO بدلاً من صورة DTBO.
لمحة عن حالات تعذُّر التحديث عبر الهواء وصور الاسترداد
لمنع حدوث أعطال في عملية التحديث عبر الهواء (OTA) على الأجهزة غير المزوّدة بميزة A/B، يجب أن تكون ملف إعادة الاسترداد مستقلاً عن الملفات الأخرى. أثناء تحديث OTA، في حالة حدوث مشكلة بعد تحديث صورة التراكب (ولكن قبل التحديث بالكامل)، فإن الجهاز يحاول تشغيل وضع الاسترداد إكمال تحديث OTA. ومع ذلك، نظرًا لأنه قد تم بالفعل استخدام قسم التراكب فقد يحدث عدم تطابق مع صورة الاسترداد (التي لم يتم تم تحديثه بعد).
لمنع الاسترداد من الاعتماد على قسم DTBO/ACPIO أثناء عملية أجهزة حديثة غير متوافقة مع A/B وتعمل بالإصدار 9 من نظام التشغيل Android أو الإصدارات الأحدث تحديد صورة DTBO/ACPIO لاسترداد الحساب تحتوي على معلومات من الصورة كقسم منفصل في تنسيق صورة التشغيل (يجب استخدام عنوان تشغيل الإصدار 1 أو 2).
تشغيل تغييرات الصورة
للسماح لصورة الاسترداد بتضمين DTBO أو ACPIO لميزة الاسترداد على الأجهزة غير المزوّدة بميزة A/B والتي تعمل بالإصدار 9 من نظام التشغيل Android أو إصدار أحدث، عليك تعديل بنية صورة التمهيد على النحو التالي.
قسم صورة تشغيل الجهاز | عدد الصفحات |
---|---|
رأس التمهيد (صفحة واحدة) | 1 |
النواة kernel (صفحات l) | l = (kernel_size + page_size -
1) / page_size |
Ramdisk (صفحات m) | م = (ramdisk_size + page_size -
1) / page_size |
برنامج إقلاع المرحلة الثانية (n صفحة) | n = (second_size + page_size -
1) / page_size |
استرداد DTBO أو ACPIO (للصفحات) | o = (recovery_[dtbo|acpio]_size + page_size -
1) / page_size |
للحصول على تفاصيل حول مَعلمات أداة mkbootimg
لتحديد إصدار عنوان
صورة التمهيد ومسارات الصور المتراكبة، يُرجى الاطّلاع على إصدار عنوان
صورة التمهيد.
تنفيذ DTBO
يمكن للأجهزة غير المزوّدة بميزة A/B التي تعمل بالإصدار 9 أو إصدار أحدث ملء القسم
recovery_dtbo
من صورة الاسترداد. لتضمين recovery_dtbo
الصورة في recovery.img
، في الجهاز BoardConfig.mk
:
اضبط الإعداد
BOARD_INCLUDE_RECOVERY_DTBO
علىtrue
:BOARD_INCLUDE_RECOVERY_DTBO := true
عليك تمديد المتغيّر
BOARD_MKBOOTIMG_ARGS
لتحديد عنوان صورة التشغيل. :الإصدار:BOARD_MKBOOTIMG_ARGS := --ramdisk_offset $(BOARD_RAMDISK_OFFSET) --tags_offset $(BOARD_KERNEL_TAGS_OFFSET) --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
تأكَّد من ضبط المتغيّر
BOARD_PREBUILT_DTBOIMAGE
على مسار ملف DTBO. يستخدِم نظام إصدار Android المتغيّر لضبط وسيطةrecovery_dtbo
للأداةmkbootimg
أثناء إنشاء صورة استرداد الإعدادات الأصلية.
في حال ضبط المتغيّرات BOARD_INCLUDE_RECOVERY_DTBO
وBOARD_MKBOOTIMG_ARGS
و
BOARD_PREBUILT_DTBOIMAGE
بشكلٍ صحيح، يتضمّن نظام إنشاء Android
ملف DTBO الذي يحدّده المتغيّر BOARD_PREBUILT_DTBOIMAGE
في
recovery.img
.
تنفيذ ACPIO
يمكن للأجهزة غير المزوّدة بميزة A/B والتي تعمل بنظام التشغيل Android 9 أو إصدار أحدث استخدام
صورة مركّبة لنظام التشغيل ACPIO (بدلاً من صورة DTBO) ويمكنها تعبئة
القسم recovery_acpio
(بدلاً من القسم recovery_dtbo
) من
صورة الاسترداد. لتضمين صورة recovery_acpio
في recovery.img
، في
الجهاز BoardConfig.mk
:
اضبط الإعدادات
BOARD_INCLUDE_RECOVERY_ACPIO
علىtrue
:BOARD_INCLUDE_RECOVERY_ACPIO := true
وسِّع المتغيّر
BOARD_MKBOOTIMG_ARGS
لتحديد إصدار عنوان صورة التمهيد. يجب أن يكون المتغير أكبر من أو يساوي 1 لدعم الاسترداد ACPIO.BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
تأكَّد من ضبط المتغيّر
BOARD_RECOVERY_ACPIO
على مسار ملف ACPIO. يستخدِم نظام إصدار Android المتغيّر لضبط الوسيطةrecovery_acpio
للأداةmkbootimg
أثناء إنشاء صورة استرداد الإعدادات الأصلية.
في حال ضبط المتغيّرات BOARD_INCLUDE_RECOVERY_ACPIO
وBOARD_MKBOOTIMG_ARGS
و
BOARD_RECOVERY_ACPIO
بشكل صحيح، يضمّ نظام إنشاء Android
ملف ACPIO الذي يحدّده المتغيّر BOARD_RECOVERY_ACPIO
في
recovery.img
.