पुनर्प्राप्ति छवियां

गैर-ए/बी उपकरणों पर, पुनर्प्राप्ति छवि में डिवाइस ट्री ब्लॉब (डीटीबी) या उन्नत कॉन्फ़िगरेशन और पावर इंटरफ़ेस (एसीपीआई) ओवरले छवि से जानकारी होनी चाहिए। जब ऐसे उपकरण पुनर्प्राप्ति में बूट होते हैं, तो बूटलोडर ओवरले छवि को लोड कर सकता है जो पुनर्प्राप्ति छवि के साथ संगत है। जो डिवाइस ए/बी (सीमलेस) अपडेट का समर्थन करते हैं, उन्हें अलग रिकवरी पार्टीशन के बजाय बूट के रूप में रिकवरी का उपयोग करना चाहिए (विवरण के लिए, ए/बी अपडेट लागू करना देखें)।

बूट/पुनर्प्राप्ति छवि के भाग के रूप में पुनर्प्राप्ति DTBO/ACPIO को शामिल करने के विकल्प एंड्रॉइड रिलीज़ के बीच भिन्न होते हैं।

मुक्त करना अद्यतन योजना जीकेआई अनुपालन बूट हेडर संस्करण (लॉन्चिंग डिवाइस) बूट हेडर संस्करण (डिवाइस को अपग्रेड करना) समर्पित पुनर्प्राप्ति छवि आवश्यक है
11 ए/बी,
वर्चुअल ए/बी
हाँ 3 * एन/ए नहीं
ए/बी,
वर्चुअल ए/बी
नहीं 2, 3 0, 1, 2, 3 नहीं
गैर-ए/बी हाँ 3 एन/ए हाँ
गैर-ए/बी नहीं 2, 3 0, 1, 2, 3 हाँ
10 (क्यू) ए/बी एन/ए 2 0, 1, 2 नहीं
गैर-ए/बी एन/ए 2 0, 1, 2 हाँ
9 (पी) ए/बी एन/ए 1 0, 1 नहीं
गैर-ए/बी एन/ए 1 0, 1 हाँ
8 (ओ) ए/बी एन/ए एन/ए (0 माना जाता है) एन/ए (0 माना जाता है) नहीं
गैर-ए/बी एन/ए एन/ए (0 माना जाता है) एन/ए (0 माना जाता है) हाँ

* एंड्रॉइड 11 या उच्चतर चलाने वाले ए/बी डिवाइस और जेनेरिक कर्नेल इमेज (जीकेआई) का उपयोग करने वाले को विक्रेता बूट विभाजन के साथ संगत होने के लिए 3 के प्राथमिक बूट हेडर संस्करण का उपयोग करना होगा।

प्रमुख बिंदु:

  • ए/बी उपकरणों को पुनर्प्राप्ति छवि निर्दिष्ट करने की आवश्यकता नहीं है क्योंकि ए/बी अपडेट विभाजन के दो सेट ( boot और dtbo सहित) का उपयोग करते हैं और अपडेट के दौरान उनके बीच स्विच करते हैं, जिससे पुनर्प्राप्ति छवि की आवश्यकता समाप्त हो जाती है। यदि वांछित है, तो ए/बी डिवाइस अभी भी एक समर्पित पुनर्प्राप्ति छवि का उपयोग कर सकते हैं।

  • एंड्रॉइड 11 या उच्चतर के साथ लॉन्च होने वाले और 3 के बूट हेडर संस्करण का उपयोग करने वाले गैर-ए/बी उपकरणों को पुनर्प्राप्ति छवि के लिए अलग से 2 के बूट हेडर संस्करण को स्पष्ट रूप से निर्दिष्ट करना होगा। उदाहरण के लिए:

    BOARD_RECOVERY_MKBOOTIMG_ARGS := --header_version 2
    
  • ऐसे आर्किटेक्चर के लिए जो डिवाइस ट्री का समर्थन नहीं करते हैं, पुनर्प्राप्ति छवि में DTBO छवि के बजाय ACPIO छवि शामिल हो सकती है।

ओटीए विफलताओं और पुनर्प्राप्ति छवियों के बारे में

गैर-ए/बी उपकरणों पर ओवर-द-एयर (ओटीए) विफलताओं को रोकने के लिए, पुनर्प्राप्ति छवि आत्मनिर्भर और अन्य छवियों से स्वतंत्र होनी चाहिए। ओटीए अपडेट के दौरान, यदि ओवरले छवि अपडेट होने के बाद (लेकिन पूर्ण अपडेट पूरा करने से पहले) कोई समस्या होती है, तो डिवाइस ओटीए अपडेट को पूरा करने के लिए रिकवरी मोड में बूट करने का प्रयास करता है। हालाँकि, क्योंकि ओवरले विभाजन पहले ही अद्यतन किया जा चुका है, पुनर्प्राप्ति छवि (जिसे अभी तक अद्यतन नहीं किया गया है) के साथ एक बेमेल हो सकता है।

अद्यतन के दौरान DTBO/ACPIO विभाजन पर निर्भरता से पुनर्प्राप्ति को रोकने के लिए, एंड्रॉइड 9 या उच्चतर चलाने वाले गैर-ए/बी डिवाइस एक पुनर्प्राप्ति DTBO/ACPIO छवि निर्दिष्ट कर सकते हैं जिसमें बूट छवि प्रारूप में एक अलग अनुभाग के रूप में ओवरले छवि से जानकारी शामिल है ( 1 या 2 के बूट हेडर संस्करण का उपयोग करना चाहिए)।

बूट छवि बदल जाती है

एंड्रॉइड 9 या उच्चतर पर चलने वाले गैर-ए/बी उपकरणों पर पुनर्प्राप्ति छवि को पुनर्प्राप्ति डीटीबीओ या एसीपीआईओ को शामिल करने की अनुमति देने के लिए, बूट छवि संरचना को निम्नानुसार अपडेट करें।

बूट छवि अनुभाग पृष्ठों की संख्या
बूट हेडर (1 पृष्ठ) 1
कर्नेल (एल पेज) एल = ( kernel_size + page_size - 1) / page_size
रैमडिस्क (एम पेज) एम = ( ramdisk_size + page_size - 1) / page_size
दूसरा चरण बूटलोडर (एन पेज) n = ( second_size + page_size - 1) / page_size
पुनर्प्राप्ति DTBO या ACPIO (ओ पेज) ओ = ( recovery_[dtbo|acpio]_size + page_size - 1) / page_size

बूट इमेज हेडर संस्करण और ओवरले इमेज पथ निर्दिष्ट करने के लिए mkbootimg टूल तर्कों के विवरण के लिए, बूट इमेज हेडर वर्जनिंग देखें।

डीटीबीओ का कार्यान्वयन

9 या उच्चतर पर चलने वाले गैर-ए/बी डिवाइस पुनर्प्राप्ति छवि के recovery_dtbo अनुभाग को पॉप्युलेट कर सकते हैं। recovery.img में recovery_dtbo छवि को शामिल करने के लिए, डिवाइस 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 छवि के पथ पर सेट है। एंड्रॉइड बिल्ड सिस्टम पुनर्प्राप्ति छवि के निर्माण के दौरान mkbootimg टूल के recovery_dtbo तर्क को सेट करने के लिए वेरिएबल का उपयोग करता है।

यदि BOARD_INCLUDE_RECOVERY_DTBO , BOARD_MKBOOTIMG_ARGS , और BOARD_PREBUILT_DTBOIMAGE वेरिएबल सही ढंग से सेट हैं, तो एंड्रॉइड बिल्ड सिस्टम में recovery.img में BOARD_PREBUILT_DTBOIMAGE वेरिएबल द्वारा निर्दिष्ट DTBO शामिल है।

ए.सी.पी.आई.ओ. का कार्यान्वयन

एंड्रॉइड 9 या उच्चतर पर चलने वाले गैर-ए/बी डिवाइस एक एसीपीआईओ ओवरले छवि (डीटीबीओ छवि के बजाय) का उपयोग कर सकते हैं और पुनर्प्राप्ति छवि के recovery_acpio अनुभाग ( recovery_dtbo अनुभाग के बजाय) को पॉप्युलेट कर सकते हैं। recovery.img में recovery_acpio छवि को शामिल करने के लिए, डिवाइस BoardConfig.mk में:

  • कॉन्फ़िगरेशन BOARD_INCLUDE_RECOVERY_ACPIO को true पर सेट करें:

    BOARD_INCLUDE_RECOVERY_ACPIO := true
    
  • बूट छवि हेडर संस्करण निर्दिष्ट करने के लिए BOARD_MKBOOTIMG_ARGS वैरिएबल बढ़ाएँ। पुनर्प्राप्ति ACPIO का समर्थन करने के लिए वेरिएबल 1 से बड़ा या उसके बराबर होना चाहिए।

    BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
    
  • सुनिश्चित करें कि BOARD_RECOVERY_ACPIO वैरिएबल ACPIO छवि के पथ पर सेट है। एंड्रॉइड बिल्ड सिस्टम पुनर्प्राप्ति छवि के निर्माण के दौरान mkbootimg टूल के recovery_acpio तर्क को सेट करने के लिए वेरिएबल का उपयोग करता है।

यदि BOARD_INCLUDE_RECOVERY_ACPIO , BOARD_MKBOOTIMG_ARGS , और BOARD_RECOVERY_ACPIO वेरिएबल सही ढंग से सेट हैं, तो एंड्रॉइड बिल्ड सिस्टम में recovery.img में BOARD_RECOVERY_ACPIO वेरिएबल द्वारा निर्दिष्ट ACPIO शामिल है।