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

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

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

रिहाई अद्यतन योजना जीकेआई अनुपालन बूट हेडर संस्करण (लॉन्चिंग डिवाइस) बूट हैडर संस्करण (उपकरणों का उन्नयन) समर्पित पुनर्प्राप्ति छवि आवश्यक
1 1 ए / बी,
आभासी ए/बी
हां 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 के प्राथमिक बूट हेडर संस्करण का उपयोग करना चाहिए।

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

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

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

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

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

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

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

बूट छवि में परिवर्तन

पुनर्प्राप्ति छवि को Android 9 या उच्चतर चलाने वाले गैर-A/B उपकरणों पर पुनर्प्राप्ति DTBO या ACPIO को शामिल करने की अनुमति देने के लिए, बूट छवि संरचना को निम्नानुसार अपडेट करें।

बूट छवि अनुभाग पृष्ठों की संख्या
बूट हेडर (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_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 बिल्ड सिस्टम पुनर्प्राप्ति छवि के निर्माण के दौरान mkbootimg टूल के recovery_dtbo dtbo तर्क को सेट करने के लिए चर का उपयोग करता है।

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

एसीपीआईओ लागू करना

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

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