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

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

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

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

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

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

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

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

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

सिस्टम के सेगमेंट

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

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

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

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

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

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

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

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

  • generic_bootloader पार्टीशन. इस पार्टीशन में सामान्य बूटलोडर होता है.

वेंडर के सेगमेंट

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • tos पार्टीशन. इस पार्टीशन में Trusty OS की बाइनरी इमेज होती है और इसका इस्तेमाल सिर्फ़ तब किया जाता है, जब डिवाइस में Trusty हो. ज़्यादा जानकारी के लिए, Trusty OS (TOS) के पार्टीशन देखें.

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

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

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