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

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

تختلف خيارات تضمين DTBO/ACPIO للاسترداد كجزء من ملف التمهيد/ملف الاسترداد بين إصدارات Android.

الإصدار تعديل المخطّط الامتثال لمعايير GKI إصدار عنوان الإقلاع (أجهزة التشغيل) إصدار عنوان الإقلاع (ترقية الأجهزة) يجب توفُّر صورة استرداد مخصّصة
11 اختبار A/B،
اختبار A/B الافتراضي
نعم 3* لا ينطبق لا
اختبار A/B،
اختبار A/B الافتراضي
لا 2، 3 0 و1 و2 و3 لا
غير اختبار أ/ب نعم 3 لا ينطبق نعم
غير اختبار أ/ب لا 2، 3 0 و1 و2 و3 نعم
10 (Q) أ/ب لا ينطبق 2 0 و1 و2 لا
غير اختبار أ/ب لا ينطبق 2 0 و1 و2 نعم
9 (P) أ/ب لا ينطبق 1 0, 1 لا
غير اختبار أ/ب لا ينطبق 1 0, 1 نعم
8 (O) أ/ب لا ينطبق لا ينطبق (يتم اعتباره 0) لا ينطبق (يتم اعتباره 0) لا
غير اختبار أ/ب لا ينطبق لا ينطبق (يتم اعتباره 0) لا ينطبق (يتم اعتباره 0) نعم

* يجب أن تستخدم أجهزة A/B التي تعمل بالإصدار 11 من نظام التشغيل Android أو إصدارًا أحدث وتستخدم صورة Kernel Generic (GKI) إصدارًا أساسيًا من عنوان التمهيد هو 3 لتكون متوافقة مع قسم التمهيد الخاص بالمورّد.

النقاط الرئيسية:

  • لا تحتاج أجهزة A/B إلى تحديد صورة استرداد لأنّ تحديثات A/B تستخدم مجموعتَين من الأقسام (بما في ذلك boot وdtbo) وتتبدّل بينهما أثناء التحديثات، ما يزيل الحاجة إلى صورة الاسترداد. يمكن لأجهزة A/B استخدام صورة استرداد مخصّصة.

  • بالنسبة إلى الأجهزة غير المزوّدة بميزة A/B والتي تعمل بالإصدار 11 من نظام التشغيل Android أو الإصدارات الأحدث وتستخدم الإصدار 3 من ملف boot header، يجب تحديد الإصدار 2 من ملف boot header لصورة الاسترداد بشكل منفصل. مثلاً:

    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
النواة (الصفحات الطويلة) l = (kernel_size + page_size - 1) / page_size
ذاكرة الوصول العشوائي (m pages) 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 لتحديد إصدار عنوان صورة التمهيد ومسارات الصور المتراكبة، يُرجى الاطّلاع على إصدار عنوان صورة التمهيد.

تنفيذ ميزة "المعالجة المحدودة للبيانات"

يمكن للأجهزة غير المزوّدة بميزة 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.

تنفيذ ميزة "الإعلانات التي تستهدف الأطفال على الإنترنت"

يمكن للأجهزة غير المزوّدة بميزة 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.