कर्नेल मॉड्यूल सिंहावलोकन

कर्नेल मॉड्यूल दो प्रकार के होते हैं: हार्डवेयर अज्ञेयवादी जीकेआई मॉड्यूल और हार्डवेयर-विशिष्ट विक्रेता मॉड्यूल । यह पृष्ठ दोनों प्रकार के मॉड्यूल का अवलोकन प्रदान करता है।

जीकेआई मॉड्यूल

जेनेरिक कर्नेल इमेज (जीकेआई) मॉड्यूल का उपयोग जेनेरिक कोर कर्नेल से अलग गैरबूट-आवश्यक कर्नेल कार्यक्षमता प्रदान करने के लिए किया जाता है। जीकेआई मॉड्यूल के साथ, आप उपयोग करने के लिए विशिष्ट कर्नेल कार्यक्षमता चुन सकते हैं, जिससे अक्सर कर्नेल छवि आकार और रनटाइम मेमोरी खपत कम हो जाती है। आकार में कमी GKI को Android Go उपकरणों और अन्य संसाधन-प्रतिबंधित फॉर्म कारकों के लिए उपयुक्त बनाती है।

GKI मॉड्यूल विक्रेताओं को KMI फ़्रीज़ मील के पत्थर के बाद नई अपस्ट्रीम सुविधाएँ शामिल करने की सुविधा भी प्रदान करता है। अंतर्निहित कोड को किसी अन्य छवि के निर्माण के बिना प्रतिस्थापित नहीं किया जा सकता है, जबकि एक मॉड्यूल के रूप में वितरित कोड को दूसरे मॉड्यूल द्वारा प्रतिस्थापित किया जा सकता है।

जीकेआई मॉड्यूल रन टाइम पर जीकेआई और अन्य मॉड्यूल के बीच अंतर करने के लिए कर्नेल के बिल्ड टाइम साइनिंग इंफ्रास्ट्रक्चर का उपयोग करते हैं। अहस्ताक्षरित मॉड्यूल को तब तक लोड करने की अनुमति है जब तक वे केवल अनुमति सूची पर दिखने वाले या अन्य अहस्ताक्षरित मॉड्यूल द्वारा प्रदान किए गए प्रतीकों का उपयोग करते हैं।

GKI मॉड्यूल के दो तार्किक प्रकार हैं: संरक्षित GKI मॉड्यूल और असुरक्षित GKI मॉड्यूल

संरक्षित जीकेआई मॉड्यूल

एक संरक्षित GKI मॉड्यूल Google द्वारा वितरित किया जाता है, यह किसी भी तरह से प्रतिबंधित नहीं है, और ऐसा व्यवहार करता है मानो इसे लोड करने के बाद कर्नेल के साथ बनाया गया हो। इसके अतिरिक्त, संरक्षित GKI मॉड्यूल में निम्नलिखित विशेषताएं हैं:

  • संरक्षित जीकेआई मॉड्यूल के पास गैर-केएमआई कर्नेल प्रतीकों तक पहुंच है जो विक्रेता मॉड्यूल या असुरक्षित जीकेआई मॉड्यूल के लिए उपलब्ध नहीं हैं।
  • संरक्षित जीकेआई मॉड्यूल उन प्रतीकों को निर्यात कर सकते हैं जो केएमआई सतह का हिस्सा बन जाते हैं, जब तक कि उन प्रतीकों को प्रतीक सूची में उद्धृत किया जाता है।
  • संरक्षित GKI मॉड्यूल को विक्रेता मॉड्यूल द्वारा ओवरराइड नहीं किया जा सकता है।

एक संरक्षित GKI मॉड्यूल GKI मॉड्यूल का डिफ़ॉल्ट वर्ग है। KMI फ़्रीज़ के समय सभी GKI मॉड्यूल को सुरक्षित माना जाता है।

असुरक्षित जीकेआई मॉड्यूल

एक असुरक्षित GKI मॉड्यूल को विक्रेता मॉड्यूल द्वारा ओवरराइड किया जा सकता है। KMI फ़्रीज़ होने के बाद, एक संरक्षित GKI मॉड्यूल को असुरक्षित के रूप में पुनः वर्गीकृत किया जा सकता है यदि GKI टीम निर्णय लेती है कि विक्रेताओं को एक ऐसे संस्करण के साथ डिफ़ॉल्ट कार्यान्वयन को ओवरराइड करने की आवश्यकता है जिसमें अपस्ट्रीम लिनक्स से नई सुविधाएँ शामिल हैं। अगले GKI रिलीज़ पर, एंड्रॉइड कॉमन कर्नेल (ACK) में अपस्ट्रीम कोड लैंड होने के बाद असुरक्षित मॉड्यूल को संरक्षित के रूप में पुनः वर्गीकृत किया जाता है। असुरक्षित GKI मॉड्यूल में निम्नलिखित विशेषताएं हैं:

  • असुरक्षित जीकेआई मॉड्यूल के पास विक्रेता मॉड्यूल के समान निर्यात किए गए प्रतीकों तक पहुंच होती है।
  • असुरक्षित GKI मॉड्यूल संरक्षित GKI मॉड्यूल द्वारा निर्यात किए गए प्रतीकों को निर्यात नहीं कर सकते।
  • असुरक्षित GKI मॉड्यूल को किसी भी KMI इंटरफ़ेस को कोर कर्नेल के भाग के रूप में संरक्षित करना चाहिए।
  • असुरक्षित GKI मॉड्यूल को विक्रेता मॉड्यूल द्वारा ओवरराइड किया जा सकता है।

विक्रेता मॉड्यूल

एसओसी और डिवाइस-विशिष्ट कार्यक्षमता को लागू करने के लिए भागीदारों द्वारा एक विक्रेता मॉड्यूल वितरित किया जाता है। कोई भी मौजूदा कर्नेल मॉड्यूल जो GKI कर्नेल के भाग के रूप में वितरित नहीं किया जाता है, उसे विक्रेता मॉड्यूल के रूप में वितरित किया जा सकता है।

चूंकि GKI प्रोजेक्ट का प्राथमिक लक्ष्य कोर कर्नेल में हार्डवेयर-विशिष्ट कोड को कम करना है, विक्रेता उम्मीद कर सकते हैं कि GKI कर्नेल में ऐसे मॉड्यूल शामिल नहीं होंगे जो स्पष्ट रूप से अपने स्वयं के हार्डवेयर का प्रबंधन कर रहे हैं। उदाहरण के लिए, विक्रेता एबीसी इंक, उम्मीद कर सकता है कि CONFIG_ABC_SOC_SUPPORT जैसे कॉन्फ़िगरेशन को उनके समर्थन के बिना अंतर्निहित या लोड करने योग्य GKI मॉड्यूल के रूप में सक्षम नहीं किया जाएगा।

यदि कोई कर्नेल ड्राइवर या फ्रेमवर्क ACK में मौजूद है, लेकिन GKI कर्नेल के हिस्से के रूप में वितरित नहीं किया गया है, तो विक्रेता ड्राइवर को संशोधित कर सकते हैं और इसे विक्रेता मॉड्यूल के रूप में वितरित कर सकते हैं। गैर-विक्रेता-विशिष्ट मॉड्यूल के लिए ऐसे संशोधनों को हतोत्साहित किया जाता है क्योंकि भविष्य में रिलीज़ में GKI कर्नेल के साथ समान कार्यक्षमता प्रदान की जा सकती है। जब GKI कर्नेल में विक्रेता मॉड्यूल द्वारा प्रदान की गई कार्यक्षमता शामिल होती है, तो विक्रेता मॉड्यूल लोड नहीं होगा। उदाहरण के लिए, CONFIG_GREYBUS एंड्रॉइड 11 में GKI के लिए सेट नहीं है, इसलिए विक्रेता ग्रेबस विक्रेता मॉड्यूल वितरित कर सकते हैं। हालाँकि, CONFIG_GREYBUS Android 12 में GKI बिल्ट-इन या मॉड्यूल के रूप में सक्षम किया जा सकता है, ऐसी स्थिति में ग्रेबस विक्रेता मॉड्यूल लोड नहीं किए जाएंगे। गैर-विक्रेता-विशिष्ट ड्राइवरों के अपस्ट्रीम संस्करण का उपयोग करना सबसे अच्छा अभ्यास है यदि उन्हें विक्रेता मॉड्यूल के रूप में वितरित किया जाता है।

आप vendor या vendor_boot छवि में विक्रेता मॉड्यूल वितरित कर सकते हैं। बूट प्रक्रिया के आरंभ में आवश्यक मॉड्यूल vendor_boot में होने चाहिए। vendor_boot से मॉड्यूल लोड करने के साथ बूट-टाइम लागत जुड़ी हुई है।