खास जानकारी

एंड्रॉइड डिवाइस में कई विभाजन शामिल होते हैं जो बूट प्रक्रिया में विभिन्न कार्यों को पूरा करते हैं।

मानक विभाजन

  • boot विभाजन। इस विभाजन में एक कर्नेल छवि है और इसे mkbootimg का उपयोग करके बनाया गया है। आप किसी नए बूट पार्टीशन को फ्लैश किए बिना किसी भी छवि को सीधे फ्लैश करने के लिए वर्चुअल पार्टीशन का उपयोग कर सकते हैं। इस विभाजन में Android 13 से पहले लॉन्च किए गए उपकरणों में सामान्य रैमडिस्क भी शामिल है।

    • गिरी वर्चुअल kernel विभाजन पुराने कर्नेल छवि पर नई कर्नेल छवि लिखकर कर्नेल ( zImage , zImage-dtb , Image.gz-dtb ) को अधिलेखित कर देता है। यदि आपूर्ति किया गया विकास कर्नेल असंगत है, तो आपको संबंधित कर्नेल मॉड्यूल के साथ vendor , system , या dtb विभाजन (यदि मौजूद है) को अद्यतन करने की आवश्यकता हो सकती है।

    • रैमडिस्क वर्चुअल ramdisk विभाजन पुराने रैमडिस्क छवि पर नई रैमडिस्क छवि लिखकर रैमडिस्क को अधिलेखित कर देता है।

    ओवरराइट ऑपरेशन ईएमएमसी में मौजूदा छवि के प्रारंभ स्थान को निर्धारित करता है और नई छवि को उस स्थान पर कॉपी करता है। नई छवि (कर्नेल या रैमडिस्क) मौजूदा छवि से बड़ी हो सकती है; जगह बनाने के लिए, बूटलोडर छवि के बाद डेटा को स्थानांतरित कर सकता है या एक त्रुटि के साथ ऑपरेशन को छोड़ सकता है।

  • init_boot विभाजन। इस विभाजन में Android 13 और उसके बाद के उपकरणों के लिए सामान्य रैमडिस्क शामिल है।

  • system विभाजन। इस विभाजन में Android ढांचा शामिल है।

  • odm विभाजन। इस विभाजन में सिस्टम-ऑन-चिप (SoC) विक्रेता बोर्ड-समर्थन पैकेज (BSP) के लिए मूल डिज़ाइन निर्माता (ODM) अनुकूलन शामिल हैं। इस तरह के अनुकूलन ODM को SoC घटकों को बदलने या अनुकूलित करने में सक्षम बनाते हैं, और हार्डवेयर एब्स्ट्रैक्शन लेयर्स (HALs) पर बोर्ड-विशिष्ट घटकों, डेमॉन और ODM-विशिष्ट सुविधाओं के लिए कर्नेल मॉड्यूल को लागू करते हैं। यह विभाजन वैकल्पिक है; आमतौर पर, इसका उपयोग अनुकूलन को शामिल करने के लिए किया जाता है ताकि डिवाइस एकाधिक हार्डवेयर SKU के लिए एकल विक्रेता छवि का उपयोग कर सकें। विवरण के लिए, ODM विभाजन देखें।

  • odm_dlkm विभाजन। यह विभाजन ODM कर्नेल मॉड्यूल को संग्रहीत करने के लिए समर्पित है। odm_dlkm पार्टीशन में ODM कर्नेल मॉड्यूल को स्टोर करना ( odm पार्टीशन के विपरीत) odm पार्टीशन को अपडेट किए बिना ODM कर्नेल मॉड्यूल को अपडेट करना संभव बनाता है।

  • recovery विभाजन। यह विभाजन पुनर्प्राप्ति छवि को संग्रहीत करता है, जिसे OTA प्रक्रिया के दौरान बूट किया जाता है। निर्बाध अद्यतन का समर्थन करने वाले उपकरण पुनर्प्राप्ति छवियों को boot या init_boot छवि (एक अलग छवि के बजाय) में निहित रैमडिस्क के रूप में संग्रहीत कर सकते हैं।

  • cache विभाजन। यह विभाजन अस्थायी डेटा संग्रहीत करता है और वैकल्पिक है यदि कोई उपकरण निर्बाध अद्यतन का उपयोग करता है। कैश विभाजन को बूटलोडर से लिखने योग्य होने की आवश्यकता नहीं है, लेकिन इसे मिटाने योग्य होने की आवश्यकता है। विभाजन का आकार डिवाइस के प्रकार और userdata पर स्थान की उपलब्धता पर निर्भर करता है; आमतौर पर, 50 एमबी–100 एमबी पर्याप्त है।

  • misc विभाजन। यह विभाजन पुनर्प्राप्ति विभाजन द्वारा उपयोग किया जाता है और यह 4 KB या उससे बड़ा है।

  • userdata विभाजन। इस विभाजन में अनुकूलन डेटा सहित उपयोगकर्ता द्वारा इंस्टॉल किए गए ऐप्स और डेटा शामिल हैं।

  • metadata विभाजन। जब डिवाइस मेटाडेटा एन्क्रिप्शन का उपयोग करता है तो इस विभाजन का उपयोग मेटाडेटा एन्क्रिप्शन कुंजी को संग्रहीत करने के लिए किया जाता है। आकार 16 एमबी या उससे बड़ा है। यह एन्क्रिप्टेड नहीं है और इसका डेटा स्नैपशॉट नहीं है। डिवाइस के फ़ैक्टरी रीसेट होने पर इसे मिटा दिया जाता है। इस विभाजन का उपयोग सख्ती से सीमित है।

  • vendor विभाजन। इस विभाजन में कोई भी बाइनरी है जो AOSP को वितरण योग्य नहीं है। यदि डिवाइस में मालिकाना जानकारी नहीं है, तो आप इस विभाजन को छोड़ सकते हैं।

  • vendor_dlkm विभाजन। यह विभाजन विक्रेता कर्नेल मॉड्यूल को संग्रहीत करने के लिए समर्पित है। विक्रेता कर्नेल मॉड्यूल को विक्रेता_ vendor_dlkm विभाजन में संग्रहीत करना ( vendor विभाजन के विपरीत) vendor विभाजन को अद्यतन किए बिना कर्नेल मॉड्यूल को अद्यतन करना संभव बनाता है।

  • radio विभाजन। इस विभाजन में रेडियो छवि है और केवल उन उपकरणों के लिए आवश्यक है जिनमें एक समर्पित विभाजन में रेडियो-विशिष्ट सॉफ़्टवेयर वाला रेडियो शामिल है।

  • tos विभाजन। यह विभाजन ट्रस्टी ओएस की बाइनरी छवि को संग्रहीत करता है और इसका उपयोग केवल तभी किया जाता है जब डिवाइस में ट्रस्टी शामिल हो। विवरण के लिए, टीओएस विभाजन देखें।

गतिशील विभाजन

एंड्रॉइड 11 और उच्चतर चलाने वाले डिवाइस गतिशील विभाजन का समर्थन कर सकते हैं, जो एंड्रॉइड के लिए एक उपयोगकर्ता स्थान विभाजन प्रणाली है जो ओवर-द-एयर (ओटीए) अपडेट के दौरान विभाजन बनाने, आकार बदलने या नष्ट करने में सक्षम बनाता है। विवरण के लिए, गतिशील विभाजन देखें।

महत्वपूर्ण विभाजन नामित करना

यदि डिवाइस को चलाने के लिए विशिष्ट विभाजन या डेटा की आवश्यकता होती है, तो आपको उन विभाजनों/डेटा को या तो पूरी तरह से संरक्षित या फिर से फ्लैश करने योग्य के रूप में नामित करना होगा, जिसका अर्थ है कि वे fastboot oem कमांड का उपयोग करके पुन: निर्माण योग्य, प्रदान किए गए या निकालने योग्य हैं। इसमें प्रति-डिवाइस फ़ैक्टरी-विशिष्ट सेटिंग्स, सीरियल नंबर, कैलिब्रेशन डेटा, और बहुत कुछ जैसे डेटा शामिल हैं।

Android 11 में बदलाव

एंड्रॉइड 11 में विभाजन में कई बदलाव शामिल हैं, जिसमें पुस्तकालयों को जोड़ने पर प्रतिबंध और नए सूंग छवि संस्करण शामिल हैं।

Android विभाजन लेआउट

चित्र 1. Android 11 में विभाजन लेआउट

  • सिंगल सिस्टम इमेज (एसएसआई)। एक नई, वैचारिक छवि जिसमें system और system_ext छवियां शामिल हैं। जब ये विभाजन लक्ष्य उपकरणों के एक सेट के लिए सामान्य होते हैं, तो वे उपकरण SSI को साझा कर सकते हैं और system और system_ext छवियों का निर्माण छोड़ सकते हैं।

  • system_ext विभाजन। एक नया विभाजन जो system संसाधनों का उपयोग कर सकता है और इसमें सिस्टम मॉड्यूल शामिल हो सकते हैं:

    • system विभाजन में AOSP सिस्टम मॉड्यूल बढ़ाएँ। हम ऐसे मॉड्यूल को AOSP में अपस्ट्रीमिंग करने की अनुशंसा करते हैं ताकि बाद में उन्हें system विभाजन में स्थापित किया जा सके।

    • बंडल OEM या SoC- विशिष्ट मॉड्यूल। हम ऐसे मॉड्यूल को अनबंडल करने की सलाह देते हैं ताकि उन्हें product या vendor विभाजन में स्थापित किया जा सके।

  • system विभाजन। OEM उत्पादों के लिए उपयोग की जाने वाली सामान्य सिस्टम छवि। हम मालिकाना मॉड्यूल को system विभाजन से बाहर ले जाने की सलाह देते हैं, या तो उन्हें AOSP में अपस्ट्रीम करके या उन्हें system_ext पार्टीशन में ले जाकर।

  • product विभाजन। यह विभाजन अब उत्पाद-विशिष्ट मॉड्यूल को स्थापित करने के लिए अनुमत इंटरफेस का उपयोग कर सकता है जो किसी अन्य विभाजन के साथ बंडल नहीं हैं।

वीएनडीके परिवर्तन

वेंडर नेटिव डेवलपमेंट किट (वीएनडीके) system विभाजन में स्थापित पुस्तकालयों का एक सेट है और विशेष रूप से विक्रेताओं के लिए उनके एचएएल को लागू करने के लिए डिज़ाइन किया गया है।

  • Android 10 और उसके बाद के संस्करण में, vendor विभाजन सिस्टम विभाजन में VNDK पुस्तकालयों से लिंक कर सकता है, लेकिन system विभाजन में अन्य पुस्तकालयों से लिंक नहीं कर सकता systemproduct विभाजन में मूल मॉड्यूल system विभाजन में किसी भी पुस्तकालय से जुड़ सकते हैं।

  • एंड्रॉइड 11 और उच्चतर में, product और vendor विभाजन सिस्टम विभाजन में वीएनडीके पुस्तकालयों से लिंक कर सकते हैं, लेकिन system विभाजन में अन्य पुस्तकालयों से लिंक नहीं कर सकते system

जल्द ही उत्पाद के प्रकार

सूंग बिल्ड सिस्टम बिल्ड निर्भरता को विभाजित करने के लिए इमेज वेरिएंट का उपयोग करता है। नेटिव मॉड्यूल ( /build/soong/cc ) सिस्टम प्रोसेस मॉड्यूल को कोर वेरिएंट में और वेंडर प्रोसेस मॉड्यूल को वेंडर वेरिएंट में बदल सकते हैं; एक छवि संस्करण में एक मॉड्यूल एक अलग छवि संस्करण में अन्य मॉड्यूल से लिंक नहीं हो सकता है।

  • एंड्रॉइड 10 या उससे कम में, एक सिस्टम मॉड्यूल स्वचालित रूप से कोर वेरिएंट बनाता है। यह अपनी Android.bp फ़ाइलों में vendor_available: true को परिभाषित करके वेंडर वेरिएंट भी बना सकता है; यह विक्रेता मॉड्यूल को सिस्टम मॉड्यूल से लिंक करने में सक्षम बनाता है। VNDK लाइब्रेरी, जो system लाइब्रेरी के वेंडर वेरिएंट हैं, वेंडर मॉड्यूल के लिए वेंडर वेरिएंट भी बना सकते हैं, vendor_available: true को अपनी Android.bp फाइलों में परिभाषित करके ( उदाहरण देखें)।

  • एंड्रॉइड 11 में, एक सिस्टम मॉड्यूल vendor_available: true को परिभाषित करके एक उत्पाद संस्करण (कोर और वेंडर वेरिएंट के अलावा) भी बना सकता है।

  • एंड्रॉइड 12 या उच्चतर में, विक्रेता_उपलब्ध के साथ एक सिस्टम मॉड्यूल vendor_available: true कोर संस्करण के अलावा एक विक्रेता संस्करण बनाता है। उत्पाद प्रकार बनाने के लिए, product_available: true परिभाषित किया जाना चाहिए। उत्पाद_उपलब्ध के बिना कुछ वीएनडीके पुस्तकालय product_available: true उत्पाद मॉड्यूल के लिए उपलब्ध नहीं हैं।