في الأجهزة بخلاف A/B، يجب أن تحتوي صورة الاسترداد على معلومات من ملف ثنائي كبير (DTB) في شجرة الجهاز الإعداد المتقدم وواجهة التشغيل الصورة المركّبة (ACPI). عندما يتم ذلك يتم تشغيل الأجهزة في وضع الاسترداد، فيمكن لبرنامج الإقلاع تحميل صورة التراكب التي مع صورة الاسترداد. إنّ الأجهزة المتوافقة مع تحديثات A/B (سلسة) يجب أن تستخدم وضع الاسترداد لبدء التشغيل بدلاً من استخدام مشاركة ملف التمهيد المفصّلة (للاطّلاع على التفاصيل، يُرجى الاطّلاع على مقالة تنفيذ تحديثات A/B ).
خيارات تضمين DTBO/ACPIO للاستعادة كجزء من عملية التشغيل/الاسترداد الصورة بين إصدارات Android.
الإصدار | تعديل المخطّط | التوافق مع الإرشادات العامة للمفاتيح العامة (GKI) | إصدار عنوان الإقلاع (أجهزة التشغيل) | إصدار عنوان الإقلاع (ترقية الأجهزة) | مطلوب صورة مخصصة لاسترداد الحساب |
---|---|---|---|---|---|
11 | A/B وVirtual A/B |
نعم | 3* | لا ينطبق | لا |
اختبار أ/ب، اختبار أ/ب الافتراضي |
لا | 2، 3 | 0، 1، 2، 3 | لا | |
غير اختبار أ/ب | نعم | 3 | لا ينطبق | نعم | |
غير اختبار أ/ب | لا | 2، 3 | 0 و1 و2 و3 | نعم | |
10 (Q) | اختبار A/B | لا ينطبق | 2 | 0، 1، 2 | لا |
غير اختبار أ/ب | لا ينطبق | 2 | 0 و1 و2 | نعم | |
9 (P) | أ/ب | لا ينطبق | 1 | 0, 1 | لا |
غير اختبار أ/ب | لا ينطبق | 1 | 0, 1 | نعم | |
8 (O) | اختبار A/B | لا ينطبق | لا ينطبق (يتم اعتباره 0) | لا ينطبق (يُعتبَر 0) | لا |
غير اختبار أ/ب | لا ينطبق | لا ينطبق (يتم اعتباره 0) | لا ينطبق (يُعتبَر 0) | نعم |
* أجهزة A/B التي تعمل بنظام التشغيل Android 11 أو أعلى واستخدام صورة Kernel العامة (GKI) يجب أن يستخدم إصدار رأس التشغيل الأساسي 3 متوافق مع تمهيد المورد الأقسام.
النقاط الرئيسية:
لا تحتاج أجهزة A/B إلى تحديد صورة استرداد لأنّ تحديثات A/B تستخدم مجموعتين. الأقسام (بما في ذلك
boot
وdtbo
) والتبديل بينها أثناء التحديثات، دون الحاجة إلى صورة استرداد. يمكن لأجهزة A/B الاستمرار في استخدام صورة مخصصة لاسترداد الحساب.الأجهزة التي تعمل بنظام التشغيل Android 11 أو الإصدارات الأحدث التي تعمل بدون نظام A/B واستخدام إصدار رأس التشغيل 3 يجب أن يحدد بشكل صريح رأس بدء التشغيل الإصدار 2 لصورة الاسترداد بشكل منفصل. مثلاً:
BOARD_RECOVERY_MKBOOTIMG_ARGS := --header_version 2
بالنسبة إلى البُنى التي لا تتوافق مع أشجار الأجهزة، يمكن أن تضمين صورة ACPIO بدلاً من صورة DTBO.
لمحة عن حالات تعذُّر التحديث عبر شبكة غير سلكية (OTA) وصور الاسترداد
لمنع إخفاقات الاتصال عبر الهواء (OTA) على الأجهزة بخلاف A/B، يجب تحميل صورة مكتفي ذاتيًا ومستقلاً عن الصور الأخرى. أثناء عملية التحديث عبر الهواء، إذا حدثت مشكلة بعد تحديث الصورة المتراكبة (ولكن قبل إكمال التحديث الكامل)، يحاول الجهاز التمهيد إلى وضع الاسترداد لإكمال التحديث عبر الهواء. ومع ذلك، بما أنّه سبق أن تم تعديل القسم المتراكب، قد يحدث تعارض مع صورة الاسترداد (التي لم يتم تعديلها بعد).
لمنع الاعتماد على قسم DTBO/ACPIO أثناء التحديث، يمكن للأجهزة غير المزوّدة بميزة A/B التي تعمل بنظام التشغيل Android 9 أو إصدار أحدث تحديد صورة DTBO/ACPIO لميزة الاسترداد تحتوي على معلومات من الصورة المتراكبة كقسم منفصل في تنسيق صورة التمهيد (يجب استخدام الإصدار 1 أو 2 من عنوان التمهيد).
تغييرات صورة التشغيل
للسماح لصورة الاسترداد بتضمين DTBO أو ACPIO لميزة الاسترداد على الأجهزة غير المزوّدة بميزة A/B والتي تعمل بالإصدار 9 من نظام التشغيل Android أو إصدار أحدث، عليك تعديل بنية صورة التمهيد على النحو التالي.
قسم صورة التشغيل | عدد الصفحات |
---|---|
رأس التمهيد (صفحة واحدة) | 1 |
النواة kernel (صفحات l) | l = (kernel_size + page_size -
1) / page_size |
ذاكرة الوصول العشوائي (m pages) | م = (ramdisk_size + page_size -
1) / page_size |
برنامج الإقلاع من المرحلة الثانية (عدد الصفحات) | العدد = (second_size + page_size -
1) / page_size |
DTBO أو ACPIO لاسترداد البيانات (صفحات o) | o = (recovery_[dtbo|acpio]_size + page_size -
1) / page_size |
للحصول على تفاصيل حول وسيطات أداة mkbootimg
لتحديد صورة التشغيل
إصدار العنوان ومسارات صور التراكب، راجع تم تشغيل عنوان الصورة
جارٍ تحديد الإصدارات.
تنفيذ ميزة "المعالجة المحدودة للبيانات"
يمكن للأجهزة غير المزوّدة بميزة 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 التي تعمل بالإصدار 9 من نظام التشغيل Android أو الإصدارات الأحدث
صورة تراكب 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