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