Android 11 में पेश है जेनेरिक कर्नेल का सिद्धांत इमेज और वेंडर बूट का पार्टीशन. वेंडर के बूट के पार्टीशन में कर्नेल को स्टोर किया जाता है मॉड्यूल, GKI के साथ काम करते हों. साथ ही, इन्हें पहले स्टेज init से लोड किया जाता हो. कर्नेल मॉड्यूल Android 11 की रिलीज़ से पहले के वर्शन और वेंडर प्रोसेस के ज़रिए लोड किए जाते हैं.
Android 11 या उसके बाद वाले वर्शन के लिए, कर्नेल और सभी कर्नेल मॉड्यूल को बाकी सेगमेंट से अलग अपडेट किया जा सकता है. चालू करने के लिए वेंडर पार्टीशन में स्टोर किए गए कर्नेल मॉड्यूल के लिए अपडेट (वेंडर के बिना) विभाजन अपडेट), सभी वेंडर विभाजन मॉड्यूल को विक्रेता DLKM (डाइनैमिक रूप से लोड होने वाला कर्नेल मॉड्यूल). इसके बाद, इसे अपडेट किया जा सकता है अलग-अलग सेगमेंट में बांटा गया है. इसी तरह, आप ODM विभाजन को ODM DLKM नाम वाले नए हिस्से में किया गया. यह विभाजन उन्हें अलग-अलग अपडेट किया जा सकता है.
पार्टीशन की जगह
vendor_dlkm
और odm_dlkm
पार्टिशन, सुपर पार्टीशन में इस तरह मौजूद हैं
कोई दूसरा डाइनैमिक पार्टिशन.
/vendor/lib/modules में क्षेत्र_dlkm सामग्री
- वेंडर के कर्नेल मॉड्यूल
modprobe
कॉन्फ़िगरेशन फ़ाइलें- एक
modules.load
फ़ाइल
/odm/lib/modules में odm_dlkm सामग्री
- ODM कर्नेल मॉड्यूल
modprobe
कॉन्फ़िगरेशन फ़ाइलें- एक
modules.load
फ़ाइल
केर्नेल मॉड्यूल देखें आगे के लिए सहायता कर्नेल मॉड्यूल कॉन्फ़िगरेशन फ़ाइलों के बारे में जानकारी.
बिल्ड सपोर्ट
vendor_dlkm
और odm_dlkm
बनाना, अन्य प्लैटफ़ॉर्म को बनाने जैसा ही है
डाइनैमिक पार्टिशन.
sellers_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>
को अपडेट के सही नाम से बदलें
ग्रुप. अपडेट ग्रुप में वह ग्रुप होना चाहिए जिसमें वेंडर विभाजन है.
A/B और वर्चुअल A/B डिवाइसों के लिए, device.mk
AB_OTA_PARTITIONS += vendor_dlkm
एफ़एसटैब
fstab में vendor_dlkm
के लिए यह एंट्री जोड़ें. इसके हिसाब से फ़्लैग बदलें
डिवाइस. CL का इस्तेमाल करके इसमें vendor_dlkm
जोड़ें
सीएफ़
पर जाएं.
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
A/B और वर्चुअल A/B डिवाइसों के लिए, device.mk
AB_OTA_PARTITIONS += odm_dlkm
एफ़एसटैब
fstab में odm_dlkm
के लिए यह एंट्री जोड़ें. नीचे दी गई जानकारी के हिसाब से फ़्लैग बदलें
डिवाइस. CL का इस्तेमाल करके इसमें odm_dlkm
जोड़ें
सीएफ़
पर जाएं.
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_dlkm/lib/modules
तक ले जाने वाली /odm/lib/modules
.
वेंडर के लिए, /vendor/lib/modules
और /odm/lib/modules
का हमेशा इस्तेमाल करें
और ODM कर्नेल मॉड्यूल शामिल हैं.
कभी भी /vendor_dlkm/lib/modules का इस्तेमाल न करें. बिना vendor_dlkm
वाले डिवाइस
विभाजन से BOARD_VENDOR_KERNEL_MODULES
को /vendor/lib/modules
पर इंस्टॉल किया गया
सकता है. यह समस्या की वजह है, क्योंकि /vendor_dlkm/lib/modules
मौजूद नहीं है.
/odm_dlkm/lib/modules
का इस्तेमाल कभी न करें. बिना 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
में बताए गए ऑर्डर पर. वेंडर प्रोसेस,
अगर ज़रूरी हो, तो बाद में मॉड्यूल का इस्तेमाल करें.
इसी विषय से जुड़े अन्य दस्तावेज़
वेंडर-बूट पार्टीशन (जो में वेंडर RAMDisk शामिल है), तो Kernel मॉड्यूल देखें सहायता.