रिकवरी इमेज

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

बूट/रिकवरी इमेज के हिस्से के तौर पर रिकवरी DTBO/ACPIO को शामिल करने के विकल्प, 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 (Q) ए/बी लागू नहीं 2 0, 1, 2 के बराबर नहीं
नॉन-A/B लागू नहीं 2 0, 1, 2 हां
9 (P) A/B लागू नहीं 1 0, 1 नहीं
नॉन-A/B लागू नहीं 1 0, 1 हां
8 (O) ए/बी लागू नहीं लागू नहीं (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 इमेज की जगह Aसीपीआईओ इमेज शामिल करें.

ओटीए (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
Ramdisk (m पेज) 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 सेक्शन. डिवाइस BoardConfig.mk में, recovery.img में recovery_dtbo इमेज शामिल करने के लिए:

  • कॉन्फ़िगरेशन 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.

ACPIO लागू करना

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

  • कॉन्फ़िगरेशन 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.