صور استرداد الحساب

في الأجهزة بخلاف 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.