एंड्रॉइड 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
में निर्दिष्ट क्रम के आधार पर कर्नेल मॉड्यूल को लोड कर सकती है। यदि आवश्यक हो तो विक्रेता प्रक्रिया बाद में भी मॉड्यूल लोड कर सकती है।
संबंधित दस्तावेज
विक्रेता-बूट विभाजन (जिसमें विक्रेता रैमडिस्क शामिल है) के निर्माण से संबंधित दस्तावेज़ के लिए, कर्नेल मॉड्यूल समर्थन देखें।