खास जानकारी

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

मानक विभाजन

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

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

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

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

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

  • system विभाजन. इस विभाजन में Android फ़्रेमवर्क शामिल है.

  • odm विभाजन. इस विभाजन में सिस्टम-ऑन-चिप (SoC) विक्रेता बोर्ड-सपोर्ट पैकेज (BSPs) के लिए मूल डिज़ाइन निर्माता (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 विभाजन. यह विभाजन ट्रस्टी ओएस की बाइनरी छवि को संग्रहीत करता है और इसका उपयोग केवल तभी किया जाता है जब डिवाइस में ट्रस्टी शामिल हो। विवरण के लिए, टीओएस विभाजन देखें।

  • pvmfw विभाजन. यह विभाजन संरक्षित वर्चुअल मशीन फ़र्मवेयर (pvmfw) को संग्रहीत करता है जो संरक्षित VMs में चलने वाला पहला कोड है। अधिक विवरण के लिए संरक्षित वर्चुअल मशीन फ़र्मवेयर देखें।

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

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

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

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

एंड्रॉइड 11 में बदलाव

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

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

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

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

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

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

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

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

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

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

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

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

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

जल्द ही उत्पाद वेरिएंट

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

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

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

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