रिकवरी इमेज

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

बूट/रिकवरी के हिस्से के तौर पर रिकवरी डीटीबीओ/एसीपीआईओ को शामिल करने के विकल्प Android वर्शन के हिसाब से इमेज अलग-अलग होती हैं.

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

* Android पर चलने वाले A/B डिवाइस 11 या उससे बड़ी इमेज और जेनेरिक कर्नेल इमेज के लिए (जीकेआई) को इसका प्राइमरी बूट हेडर वर्शन 3 बाकी हैं वेंडर बूट के साथ काम करता है विभाजन.

खास बातें:

  • A/B डिवाइसों को रिकवरी इमेज तय करने की ज़रूरत नहीं है, क्योंकि A/B अपडेट में दो सेट का इस्तेमाल किया जाता है (boot और dtbo सहित) सेगमेंट का इस्तेमाल करके, सेगमेंट के बीच स्विच किया जा सकता है अपडेट करता है, ताकि रिकवरी इमेज की ज़रूरत न पड़े. A/B डिवाइस ये काम कर सकते हैं अब भी खाता वापस पाने के लिए खास तौर पर बनाई गई इमेज का इस्तेमाल करता है.

  • Android 11 या इसके बाद के वर्शन के साथ लॉन्च होने वाले नॉन-A/B डिवाइस और 3 के बूट हेडर वर्शन का इस्तेमाल करने से खास तौर पर बूट हेडर वर्शन 2 अलग करें. उदाहरण के लिए:

    BOARD_RECOVERY_MKBOOTIMG_ARGS := --header_version 2
    
  • डिवाइस ट्री का समर्थन न करने वाले आर्किटेक्चर के लिए, रिकवरी इमेज DTBO इमेज की जगह ACPIO इमेज शामिल करें.

ओटीए (OTA) की गड़बड़ी और रिकवरी इमेज के बारे में जानकारी

नॉन-A/B डिवाइसों पर ओवर-द-एयर (ओटीए) की गड़बड़ियों को रोकने के लिए, रिकवरी इमेज इमेज अपने-आप पूरी होनी चाहिए और उनमें अन्य इमेज शामिल नहीं होनी चाहिए. ओटीए अपडेट के दौरान, अगर कोई समस्या ओवरले इमेज के अपडेट होने के बाद होती है (लेकिन समय को पूरा अपडेट पूरा करने के बाद भी, तो डिवाइस रिकवरी मोड में चालू करने की कोशिश करता है ओटीए अपडेट को पूरा करें. हालांकि, ओवरले पार्टीशन पहले से ही अपडेट किया गया है, तो हो सकता है कि रिकवरी इमेज (जो अभी तक अपडेट नहीं हुआ).

किसी अपडेट, Android 9 या इसके बाद के वर्शन पर काम करने वाले नॉन-A/B डिवाइस ओवरले से जानकारी वाली रिकवरी DTBO/Aसीपीआईओ इमेज तय कर सकता है बूट इमेज फ़ॉर्मैट में अलग सेक्शन के तौर पर इमेज (बूट हेडर का इस्तेमाल करना ज़रूरी है) वर्शन 1 या 2) है.

बूट चित्र में बदलाव

रिकवरी इमेज में गैर-A/B जगह पर वापस आने वाले डीटीबीओ या एसीपीआईओ को शामिल करने की अनुमति देने के लिए Android 9 या इसके बाद के वर्शन वाले डिवाइसों के लिए, बूट अपडेट करने की सुविधा किया गया है.

बूट इमेज सेक्शन पेजों की संख्या
बूट हेडर (1 पेज) 1
कर्नेल (l पेज) l = (kernel_size + page_size - 1) / page_size
रैमडिस्क (मी पेज) m = (ramdisk_size + page_size - 1) / page_size
दूसरे चरण का बूटलोडर (n पेज) n = (second_size + page_size - 1) / page_size
रिकवरी DTBO या ACPIO (o पेज) o = (recovery_[dtbo|acpio]_size + page_size - 1) / page_size

बूट इमेज की जानकारी देने के लिए, mkbootimg टूल के आर्ग्युमेंट के बारे में जानकारी हेडर वर्शन और ओवरले इमेज पाथ, देखें बूट इमेज हेडर वर्शन.

डीटीबीओ लागू करें

अगर नॉन-A/B डिवाइस, 9 या उससे बाद के लेवल पर चल रहे हैं, तो रिकवरी इमेज का recovery_dtbo सेक्शन. recovery_dtbo को शामिल करने के लिए डिवाइस BoardConfig.mk में recovery.img की इमेज:

  • कॉन्फ़िगरेशन 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 आर्ग्युमेंट रिकवरी इमेज.

अगर BOARD_INCLUDE_RECOVERY_DTBO, BOARD_MKBOOTIMG_ARGS, और BOARD_PREBUILT_DTBOIMAGE वैरिएबल सही तरीके से सेट किए गए हैं. Android बिल्ड सिस्टम इसमें BOARD_PREBUILT_DTBOIMAGE वैरिएबल से तय किया गया DTBO शामिल है recovery.img.

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

Android 9 या इसके बाद के वर्शन पर काम करने वाले बिना A/B डिवाइस, इन डिवाइसों का इस्तेमाल कर सकते हैं DTBO इमेज की जगह एक ACPIO ओवरले इमेज होती है और recovery_dtbo सेक्शन के बजाय, recovery_acpio सेक्शन रिकवरी इमेज. recovery_acpio इमेज को recovery.img में शामिल करने के लिए, डिवाइस BoardConfig.mk:

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

    BOARD_INCLUDE_RECOVERY_ACPIO := true
    
  • बूट इमेज के हेडर को तय करने के लिए, BOARD_MKBOOTIMG_ARGS वैरिएबल को बढ़ाएं वर्शन है. रिकवरी की सुविधा को इस्तेमाल करने के लिए, वैरिएबल की वैल्यू 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 बिल्ड सिस्टम इसमें BOARD_RECOVERY_ACPIO वैरिएबल के ज़रिए तय किया गया एसीपीआईओ शामिल है recovery.img.