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

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