पार्टीशन के बारे में खास जानकारी

Android डिवाइसों में कई पार्टिशन या स्टोरेज स्पेस के खास सेक्शन होते हैं. इनका इस्तेमाल, डिवाइस के सॉफ़्टवेयर के खास हिस्सों को सेव करने के लिए किया जाता है. हर पार्टिशन में एक पार्टिशन इमेज (आईएमजी फ़ाइल) या पार्टिशन के सभी सॉफ़्टवेयर का स्नैपशॉट होता है. पहली इमेज में, डिवाइस पर मौजूद मुख्य पार्टिशन का लेआउट दिखाया गया है:

कोर पार्टीशन का लेआउट.

पहली इमेज. मुख्य पार्टिशन का लेआउट.

पार्टिशन को तीन कैटगरी में बांटा गया है:

  • सिस्टम पार्टिशन वे पार्टिशन होते हैं जो ओएस और अन्य सुविधाओं को अपडेट करने पर अपडेट होते हैं. system, boot, और init_boot मुख्य सिस्टम पार्टिशन होते हैं.

  • वेंडर पार्टिशन में डिवाइस और हार्डवेयर से जुड़ा ऐसा कोड होता है जिसे शुरुआती रिलीज़ के बाद कभी अपडेट नहीं किया जा सकता. vendor, vendor_boot, और odm पार्टिशन, मुख्य वेंडर पार्टिशन होते हैं.

  • अपडेट न किए जा सकने वाले पार्टिशन वे पार्टिशन होते हैं जिनका कॉन्टेंट अपडेट नहीं किया जाता या उपयोगकर्ता के डेटा के साथ अपडेट किया जाता है.

सिस्टम और वेंडर पार्टिशन में मौजूद कोड, वेंडर इंटरफ़ेस (वीआईएनटीएफ) नाम के एक स्टेबल इंटरफ़ेस का इस्तेमाल करके इंटरैक्ट कर सकते हैं.

सिस्टम पार्टिशन

यहां सभी सिस्टम पार्टिशन और उनके इस्तेमाल की सूची दी गई है:

  • boot पार्टिशन. इस पार्टिशन में, जेनेरिक कर्नल इमेज (जीकेआई) होती है. इस पार्टिशन में, Android 12 और इससे पहले के वर्शन में लॉन्च किए गए डिवाइसों में, जेनेरिक रैमडिस्क भी होती है. जेनेरिक रैमडिस्क के बारे में ज़्यादा जानने के लिए, जेनेरिक रैमडिस्क इमेज का कॉन्टेंट देखें.

  • init_boot पार्टिशन (Android 13 और इसके बाद के वर्शन). इस पार्टिशन में, जेनेरिक रैमडिस्क होती है. Android 11 और 12 में, जेनेरिक रैमडिस्क boot पार्टिशन में होती है.

  • system पार्टिशन. इस पार्टिशन में, ओईएम प्रॉडक्ट के लिए इस्तेमाल की जाने वाली सिस्टम इमेज होती है.

  • system_ext पार्टिशन. इस पार्टिशन में, सिस्टम के संसाधन और मालिकाना हक वाले सिस्टम मॉड्यूल होते हैं. ये मॉड्यूल, system पार्टिशन में मौजूद सामान्य सिस्टम इमेज को बढ़ाते हैं.

  • system_dlkm पार्टिशन. इस पार्टिशन में, जीकेआई मॉड्यूल होते हैं. इस पार्टिशन के बारे में ज़्यादा जानने के लिए, जीकेआई मॉड्यूल पार्टिशन लागू करना लेख पढ़ें.

  • product पार्टिशन. इस पार्टिशन में, प्रॉडक्ट से जुड़े ऐसे मॉड्यूल हो सकते हैं जो किसी अन्य पार्टिशन के साथ बंडल नहीं किए जाते.

  • pvmfw पार्टिशन. इस पार्टिशन में, प्रोटेक्टेड वर्चुअल मशीन फ़र्मवेयर (पीवीएमएफ़डब्ल्यू) सेव होता है. यह प्रोटेक्टेड वीएम में चलने वाला पहला कोड होता है. ज़्यादा जानकारी के लिए, प्रोटेक्टेड वर्चुअल मशीन फ़र्मवेयर देखें.

  • generic_bootloader पार्टिशन. इस पार्टिशन में, जेनेरिक बूटलोडर होता है.

वेंडर पार्टिशन

यहां सभी वेंडर पार्टिशन और उनके इस्तेमाल की सूची दी गई है:

  • vendor_boot पार्टिशन. इस पार्टिशन में, वेंडर से जुड़ा बूट कोड होता है. ज़्यादा जानकारी के लिए, वेंडर बूट पार्टिशन देखें.

  • recovery पार्टिशन. इस पार्टिशन में, रिकवरी इमेज सेव होती है. इसे ओवर-द-एयर (OTA) अपडेट की प्रोसेस के दौरान बूट किया जाता है. बिना किसी रुकावट के अपडेट की सुविधा वाले डिवाइस, रिकवरी इमेज को रैमडिस्क के तौर पर सेव कर सकते हैं. यह रैमडिस्क, boot या init_boot इमेज में शामिल होती है. बिना किसी रुकावट के अपडेट की सुविधा के बारे में ज़्यादा जानने के लिए, देखें A/B (बिना किसी रुकावट के) अपडेट.

  • misc पार्टिशन. इस पार्टिशन का इस्तेमाल, रिकवरी पार्टिशन करता है. इसका साइज़ 4 केबी या इससे ज़्यादा होता है.

  • vbmeta पार्टिशन. इस पार्टिशन में, सभी पार्टिशन के लिए वेरिफ़ाइड बूट की जानकारी होती है. इस जानकारी से यह पुष्टि होती है कि हर पार्टिशन में इंस्टॉल की गई इमेज भरोसेमंद हैं. वेरिफ़ाइड बूट के बारे में ज़्यादा जानने के लिए, वेरिफ़ाइड बूट देखें वेरिफ़ाइड बूट.

  • vendor पार्टिशन. इस पार्टिशन में, वेंडर से जुड़ी कोई भी बाइनरी होती है. साथ ही, यह बाइनरी इतनी सामान्य नहीं होती कि इसे AOSP पर डिस्ट्रिब्यूट किया जा सके.

  • vendor_dlkm पार्टिशन. इस पार्टिशन में, वेंडर कर्नल मॉड्यूल होते हैं. vendor पार्टिशन के बजाय, वेंडर कर्नल मॉड्यूल को इस पार्टिशन में सेव करके, vendor पार्टिशन को अपडेट किए बिना कर्नल मॉड्यूल को अपडेट किया जा सकता है. ज़्यादा जानकारी के लिए, वेंडर और ओडीएम डीएलकेएम पार्टिशन देखें.

  • odm पार्टिशन. इस पार्टिशन में, ओरिजनल डिज़ाइन मैन्युफ़ैक्चरर (ओडीएम) की ओर से, सिस्टम-ऑन-चिप (एसओसी) वेंडर बोर्ड-सपोर्ट पैकेज (बीएसपी) में किए गए बदलाव होते हैं. इन बदलावों की मदद से, ओडीएम, एसओसी कॉम्पोनेंट को बदल सकते हैं या उनमें बदलाव कर सकते हैं. साथ ही, हार्डवेयर ऐब्स्ट्रैक्शन लेयर (एचएएल) पर बोर्ड से जुड़े कॉम्पोनेंट, डीमन, और ओडीएम से जुड़ी सुविधाओं के लिए कर्नल मॉड्यूल लागू कर सकते हैं. यह पार्टिशन ज़रूरी नहीं है. आम तौर पर, इस पार्टिशन का इस्तेमाल बदलावों को सेव करने के लिए किया जाता है, ताकि डिवाइस, कई हार्डवेयर एसकेयू के लिए एक ही वेंडर इमेज का इस्तेमाल कर सकें. ज़्यादा जानकारी के लिए, देखें ओडीएम पार्टिशन.

  • odm_dlkm पार्टिशन. यह पार्टिशन, ओडीएम कर्नल मॉड्यूल को सेव करने के लिए होता है. odm पार्टिशन के बजाय, ओडीएम कर्नल मॉड्यूल को इस पार्टिशन में सेव करके, odm पार्टिशन को अपडेट किए बिना ओडीएम कर्नल मॉड्यूल को अपडेट किया जा सकता है. ज़्यादा जानकारी के लिए, वेंडर और ओडीएम डीएलकेएम पार्टिशन देखें.

  • radio पार्टिशन. इस पार्टिशन में, रेडियो इमेज होती है. इसकी ज़रूरत सिर्फ़ उन डिवाइसों के लिए होती है जिनमें रेडियो से जुड़ा सॉफ़्टवेयर, किसी अलग पार्टिशन में मौजूद रेडियो के साथ शामिल होता है.

अपडेट न किए जा सकने वाले पार्टिशन

यहां सभी अपडेट न किए जा सकने वाले पार्टिशन और उनके इस्तेमाल की सूची दी गई है:

  • cache पार्टिशन. इस पार्टिशन में, अस्थायी डेटा होता है. अगर आपका डिवाइस, बिना किसी रुकावट के अपडेट की सुविधा का इस्तेमाल करता है, तो यह पार्टिशन ज़रूरी नहीं है. इस पार्टिशन को बूटलोडर से लिखा नहीं जा सकता, लेकिन इसे मिटाया जा सकता है. पार्टिशन का साइज़, डिवाइस के टाइप और userdata पर उपलब्ध जगह के हिसाब से तय होता है. आम तौर पर, 50 से 100 एमबी का साइज़ काफ़ी होता है.

  • userdata पार्टिशन. इस पार्टिशन में, उपयोगकर्ता के इंस्टॉल किए गए ऐप्लिकेशन और डेटा होता है. इसमें, पसंद के मुताबिक बनाए गए डेटा भी शामिल होता है.

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

पार्टिशन अपडेट करने के नियम और सुझाव

हमारा सुझाव है कि सभी सिस्टम पार्टिशन को एक साथ और सभी वेंडर पार्टिशन को एक साथ अपडेट करें. पार्टिशन के सेट को एक साथ अपडेट करके, यह जांच की जा सकती है कि हर पार्टिशन में मौजूद इमेज के बीच के इंटरफ़ेस स्टेबल हैं या नहीं.

पार्टिशन को अपडेट करने के तरीके के बावजूद, इन पार्टिशन को अपडेट करना ज़रूरी है. इसकी वजह यह है कि ये पार्टिशन, एक-दूसरे पर निर्भर होते हैं और इनके लिए स्टेबल एपीआई उपलब्ध नहीं हैं:

  • boot और system_dlkm पार्टिशन
  • init_boot, system, system_ext, और product पार्टिशन

डाइनैमिक पार्टिशन

Android 11 और इसके बाद के वर्शन पर चलने वाले डिवाइस, डाइनैमिक पार्टिशन की सुविधा के साथ काम कर सकते हैं. यह Android के लिए, यूज़रस्पेस पार्टिशनिंग सिस्टम है. इसकी मदद से, ओवर-द-एयर (OTA) अपडेट के दौरान पार्टिशन बनाए, उनका साइज़ बदला या उन्हें मिटाया जा सकता है. ज़्यादा जानकारी के लिए, डाइनैमिक पार्टिशन देखें.

Soong प्रॉडक्ट वैरिएंट

Soong बिल्ड सिस्टम, बिल्ड डिपेंडेंसी को अलग-अलग करने के लिए इमेज वैरिएंट का इस्तेमाल करता है. नेटिव मॉड्यूल (/build/soong/cc), सिस्टम प्रोसेस मॉड्यूल को कोर वैरिएंट और वेंडर प्रोसेस मॉड्यूल को वेंडर वैरिएंट में बदल सकते हैं. एक इमेज वैरिएंट में मौजूद मॉड्यूल, किसी दूसरी इमेज वैरिएंट में मौजूद अन्य मॉड्यूल से लिंक नहीं हो सकता.

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