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