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

في الأجهزة بخلاف A/B، يجب أن تحتوي صورة الاسترداد على معلومات من ملف ثنائي كبير (DTB) في شجرة الجهاز الإعداد المتقدم وواجهة التشغيل الصورة المركّبة (ACPI). عندما يتم ذلك يتم تشغيل الأجهزة في وضع الاسترداد، فيمكن لبرنامج الإقلاع تحميل صورة التراكب التي مع صورة الاسترداد. الأجهزة التي تتيح استخدام أسلوب A/B (سلس) يجب أن تستخدم التحديثات الاسترداد كتشغيل بدلاً من قسم استرداد منفصل (لمزيد من التفاصيل، يُرجى الرجوع إلى تنفيذ اختبار A/B) التعديلات).

خيارات تضمين DTBO/ACPIO للاستعادة كجزء من عملية التشغيل/الاسترداد الصورة بين إصدارات Android.

الإصدار تعديل المخطّط التوافق مع الإرشادات العامة للمفاتيح العامة (GKI) إصدار عنوان التشغيل (الأجهزة التي يتم تشغيلها) إصدار رأس التشغيل (ترقية الأجهزة) مطلوب صورة مخصصة لاسترداد الحساب
11 A/B
وVirtual A/B
نعم 3* لا ينطبق لا
A/B
وVirtual A/B
لا 2، 3 0، 1، 2، 3 لا
ليس A/B نعم 3 لا ينطبق نعم
ليس A/B لا 2، 3 0، 1، 2، 3 نعم
10 (Q) اختبار A/B لا ينطبق 2 0، 1، 2 لا
ليس A/B لا ينطبق 2 0، 1، 2 نعم
9 (P) اختبار A/B لا ينطبق 1 0، 1 لا
ليس A/B لا ينطبق 1 0، 1 نعم
8 (O) اختبار A/B لا ينطبق لا ينطبق (يعتبر 0) لا ينطبق (يعتبر 0) لا
ليس A/B لا ينطبق لا ينطبق (يعتبر 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) على الأجهزة بخلاف A/B، يجب تحميل صورة مكتفيًا ذاتيًا ومستقلاً عن الصور الأخرى. أثناء تحديث OTA، في حالة حدوث مشكلة بعد تحديث صورة التراكب (ولكن قبل التحديث بالكامل)، فإن الجهاز يحاول تشغيل وضع الاسترداد إكمال تحديث OTA. ومع ذلك، نظرًا لأنه قد تم بالفعل استخدام قسم التراكب فقد يحدث عدم تطابق مع صورة الاسترداد (التي لم يتم تم تحديثه بعد).

لمنع الاسترداد من الاعتماد على قسم DTBO/ACPIO أثناء عملية أجهزة حديثة غير متوافقة مع A/B وتعمل بالإصدار 9 من نظام التشغيل Android أو الإصدارات الأحدث تحديد صورة DTBO/ACPIO لاسترداد الحساب تحتوي على معلومات من الصورة كقسم منفصل في تنسيق صورة التشغيل (يجب استخدام عنوان تشغيل الإصدار 1 أو 2).

تشغيل تغييرات الصورة

للسماح بصورة الاسترداد بأن تحتوي على ملفي DTBO أو ACPIO للاستعادة على صفحات غير A/B الأجهزة التي تعمل بنظام التشغيل Android 9 أو الإصدارات الأحدث، ينبغي تحديث نظام التشغيل بنية الصورة على النحو التالي.

قسم صورة تشغيل الجهاز عدد الصفحات
عنوان التشغيل (صفحة واحدة) 1
النواة kernel (صفحات l) l = (kernel_size + page_size - 1) / page_size
Ramdisk (صفحات m) م = (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 لتحديد صورة التشغيل إصدار العنوان ومسارات صور التراكب، راجع تم تشغيل عنوان الصورة جارٍ تحديد الإصدارات.

تنفيذ DTBO

يمكن للأجهزة التي تعمل بالإصدار 9 من نظام A/B أو الإصدارات الأحدث تعبئة القسم 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