विक्रेता/ओडीएम डीएलकेएम विभाजन

एंड्रॉइड 11 जेनेरिक कर्नेल इमेज और विक्रेता बूट विभाजन की अवधारणा पेश करता है। विक्रेता बूट विभाजन GKI के साथ संगत कर्नेल मॉड्यूल को संग्रहीत करता है, और पहले चरण init द्वारा लोड किया जाता है। एंड्रॉइड 11 की रिलीज़ से पहले कर्नेल मॉड्यूल भी विक्रेता और ODM विभाजन में संग्रहीत होते हैं, और विक्रेता प्रक्रियाओं द्वारा लोड किए जाते हैं।

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

विभाजन स्थान

vendor_dlkm और odm_dlkm विभाजन सुपर विभाजन में एक अन्य गतिशील विभाजन के रूप में स्थित हैं।

/vendor/lib/modules में वेंडर_dlkm सामग्री

  • विक्रेता कर्नेल मॉड्यूल
  • modprobe कॉन्फ़िग फ़ाइलें
  • एक modules.load फ़ाइल

/odm/lib/मॉड्यूल में odm_dlkm सामग्री

  • ODM कर्नेल मॉड्यूल
  • modprobe कॉन्फ़िग फ़ाइलें
  • एक modules.load फ़ाइल

कर्नेल मॉड्यूल कॉन्फ़िगरेशन फ़ाइलों पर अधिक जानकारी के लिए कर्नेल मॉड्यूल समर्थन देखें।

समर्थन बनाएँ

vendor_dlkm और odm_dlkm का निर्माण अन्य गतिशील विभाजनों के निर्माण के समान प्रक्रिया है।

विक्रेता_डीएलकेएम उदाहरण बनाएँ

जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है, vendor_dlkm बनाएं।

BoardConfig.mk

BOARD_USES_VENDOR_DLKMIMAGE := true
BOARD_VENDOR_DLKMIMAGE_FILE_SYSTEM_TYPE := ext4
TARGET_COPY_OUT_VENDOR_DLKM := vendor_dlkm
BOARD_<GROUP_NAME>_PARTITION_LIST += vendor_dlkm

<GROUP_NAME> को अद्यतन समूह के उचित नाम से बदलें। अद्यतन समूह वह समूह होना चाहिए जिसमें विक्रेता विभाजन है।

ए/बी और वर्चुअल ए/बी डिवाइस के लिए, device.mk

AB_OTA_PARTITIONS += vendor_dlkm

fstab

vendor_dlkm के लिए निम्नलिखित प्रविष्टि को fstab में जोड़ें। डिवाइस के अनुसार झंडे बदलें. उदाहरण के तौर पर CL vendor_dlkm to CF का उपयोग करें।

vendor_dlkm /vendor_dlkm ext4 noatime,ro,errors=panic wait,logical,first_stage_mount,slotselect,avb

odm_dlkm उदाहरण बनाएँ

जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है, odm_dlkm बनाएं।

BoardConfig.mk

BOARD_USES_ODM_DLKIMAGE := true
BOARD_ODM_DLKIMAGE_FILE_SYSTEM_TYPE := ext4
TARGET_COPY_OUT_ODM_DLKM := odm_dlkm
BOARD_<group_name>_PARTITION_LIST += odm_dlkm

ए/बी और वर्चुअल ए/बी डिवाइस के लिए, device.mk

AB_OTA_PARTITIONS += odm_dlkm

fstab

odm_dlkm के लिए निम्नलिखित प्रविष्टि को fstab में जोड़ें। डिवाइस के अनुसार झंडे बदलें. उदाहरण के तौर पर CL Add odm_dlkm to CF का उपयोग करें।

odm_dlkm /odm_dlkm ext4 noatime,ro,errors=panic wait,logical,first_stage_mount,slotselect,avb

कर्नेल मॉड्यूल को एक विभाजन में कॉपी करना

कर्नेल मॉड्यूल का चयन करने के लिए जिसे आप vendor_dlkm विभाजन में कॉपी करना चाहते हैं, उन्हें BOARD_VENDOR_KERNEL_MODULES में सूचीबद्ध करें।

यदि आप modules.load की सामग्री को ओवरराइड करना चाहते हैं, तो आप इसे BOARD_VENDOR_KERNEL_MODULES_LOAD में निर्दिष्ट कर सकते हैं।

निर्माण के समय, BOARD_VENDOR_KERNEL_MODULES में सूचीबद्ध मॉड्यूल $ANDROID_PRODUCT_OUT/vendor_dlkm/lib/modules में स्थापित किए जाते हैं। /vendor/lib/modules पर एक प्रतीकात्मक लिंक बनाया जाता है जो /vendor_dlkm/lib/modules की ओर ले जाता है।

इसी प्रकार, कर्नेल मॉड्यूल का चयन करने के लिए जिसे आप odm_dlkm विभाजन में कॉपी करना चाहते हैं, उन्हें BOARD_ODM_KERNEL_MODULES में सूचीबद्ध करें। प्लेटफ़ॉर्म बिल्ड मॉड्यूल पर depmod चलाता है और depmod आउटपुट फ़ाइलों को छवि में कॉपी करता है। बिल्ड एक modules.load फ़ाइल बनाता है और उसे छवि में संग्रहीत करता है। इस फ़ाइल में BOARD_ODM_KERNEL_MODULES में सूचीबद्ध सभी मॉड्यूल शामिल हैं।

यदि आप modules.load की सामग्री को ओवरराइड करना चाहते हैं, तो आप इसे BOARD_ODM_KERNEL_MODULES_LOAD में निर्दिष्ट कर सकते हैं।

निर्माण के समय, BOARD_ODM_KERNEL_MODULES में सूचीबद्ध मॉड्यूल $ANDROID_PRODUCT_OUT/odm_dlkm/lib/modules में स्थापित किए जाएंगे। /odm/lib/modules पर एक प्रतीकात्मक लिंक बनाया जाएगा जो /odm_dlkm/lib/modules की ओर ले जाएगा।

विक्रेता और ODM कर्नेल मॉड्यूल के लिए हमेशा /vendor/lib/modules और /odm/lib/modules का उपयोग करें।

कभी भी /vendor_dlkm/lib/मॉड्यूल का उपयोग न करें। vendor_dlkm विभाजन के बिना डिवाइस सीधे BOARD_VENDOR_KERNEL_MODULES को /vendor/lib/modules पर इंस्टॉल करते हैं। यह समस्याग्रस्त है क्योंकि /vendor_dlkm/lib/modules मौजूद नहीं है।

कभी भी /odm_dlkm/lib/मॉड्यूल का उपयोग न करें। बिना odm_dlkm विभाजन वाले डिवाइस BOARD_ODM_KERNEL_MODULES को सीधे /odm/lib/modules पर इंस्टॉल करते हैं। यह समस्याग्रस्त है क्योंकि /odm_dlkm/lib/modules मौजूद नहीं है।

विभाजन माउंटिंग और मॉड्यूल लोडिंग

first_stage_init के दौरान, vendor_dlkm और odm_dlkm विभाजन क्रमशः /vendor_dlkm और /odm_dlkm विभाजन में आरोहित होते हैं। जब ऐसा होता है, तो /vendor/lib/modules और /odm/lib/modules पर सिम्लिंक उपलब्ध हो जाते हैं।

एक विक्रेता प्रक्रिया ('.rc' स्क्रिप्ट की तरह) modules.load में निर्दिष्ट क्रम के आधार पर कर्नेल मॉड्यूल को लोड कर सकती है। यदि आवश्यक हो तो विक्रेता प्रक्रिया बाद में भी मॉड्यूल लोड कर सकती है।

विक्रेता-बूट विभाजन (जिसमें विक्रेता रैमडिस्क शामिल है) के निर्माण से संबंधित दस्तावेज़ के लिए, कर्नेल मॉड्यूल समर्थन देखें।