लोडेबल कर्नेल मॉड्यूल

From Vigyanwiki
Revision as of 21:29, 20 May 2023 by alpha>Neetua08

संगणना में, एक भारण करने योग्य कर्नेल मापांक (एलकेएम) एक वस्तु संचिका है जिसमें एक संचालन सिस्टम के चलने वाले कर्नेल ( संचालन सिस्टम), या तथाकथित मूल कर्नेल के विस्तार के लिए सांकेतिक अंक होता है। एलकेएम आमतौर पर नए संगणक हार्डवेयर (उपकरण संचालक के रूप में) और/या संचिका सिस्टम के लिए या सिस्टम आह्वान जोड़ने के लिए समर्थन जोड़ने के लिए उपयोग किया जाता है। जब एलकेएम के माध्यम से प्रदान की जाने वाली कार्यक्षमता की आवश्यकता नहीं होती है, तो इसे संगणक भंडारण और अन्य संसाधनों को मुक्त करने के लिए भार रहित किया जा सकता है।

अधिकांश वर्तमान यूनिक्स प्रतिरूप प्रणालियाँ और माइक्रोसॉफ्ट विंडोज़ विभिन्न नामों के तहत भारण करने योग्य कर्नेल मापांक का समर्थन करते हैं, जैसे कि स्वतंत्र बीडीएस में कर्नेल भारण करने योग्य मापांक (केएलडी), मैकोज़ में कर्नेल विस्तारण (केईएक्सटी) (हालाँकि तृतीय-पक्ष मापांक के लिए समर्थन छोड़ा जा रहा है)[1]),[2] ऐक्स में कर्नेल विस्तारण मापांक, एचपी-यूएक्स में गतिशील रूप से भारण करने योग्य कर्नेल मापांक,[3] विंडोज़ एनटी में कर्नेल-प्रणाली संचालक[4] और वीएक्स कार्य में आंकड़े प्राप्त करने योग्य कर्नेल मापांक ( डीकेएम)। उन्हें कर्नेल भारण करने योग्य मापांक (या केएलएम) के रूप में भी जाना जाता है, और केवल कर्नेल मापांक (केएमओडी) के रूप में जाना जाता है।

श्रेष्ठता

भारण करने योग्य कर्नेल मापांक के बिना, एक संचालन सिस्टम को मूल कर्नेल में सीधे संकलित सभी संभावित प्रत्याशित कार्यक्षमता को शामिल करना होगा। उस कार्यक्षमता का अधिकांश उपयोग किए बिना स्मृति में रहता है, स्मृति को अपक्षय कर देता है, और इसके लिए आवश्यक होगा कि उपयोगकर्ता हर बार नवीन कार्यक्षमता की आवश्यकता होने पर मूल कर्नेल को पुनर्निर्माण और पुनःप्रारंभन करें।

असुविधा

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

विभिन्न संचालन सिस्टम में कार्यान्वयन

लिनक्स

लिनक्स में भारण करने योग्य कर्नेल मापांक किसके के माध्यम से भारण (और भार रहित) किए जाते हैं मॉडप्रोब आज्ञा। वे में स्थित हैं /lib/modules या /usr/lib/modules और उनका विस्तार हो गया है .ko (कर्नेल उद्देश्य ) संस्करण 2.6 के पश्चात् से ( विगत संस्करणों ने .ko विस्तार)।[5] इसमोड अधिकार भारित कर्नेल मापांक को सूचीबद्ध करता है। आपातकालीन मामलों में, जब सिस्टम सामानधानी करने में विफल रहता है उदा। टूटे हुए मापांक, विशिष्ट मापांक को कर्नेल सामानधानी मापदण्ड सूची को संशोधित करके सक्षम या अक्षम किया जा सकता है (उदाहरण के लिए, यदि ज़ीएनयू ज़ीआरयूबी का उपयोग करके, ज़ीआरयूबी प्रारंभ मेनू में 'ई' दबाकर, फिर कर्नेल मापदण्ड रेखा को संपादित करके)।

अनुज्ञप्ति मुद्दे

लिनक्स अनुरक्षकों की अनुमान में, एलकेएम कर्नेल का व्युत्पन्न कार्य है. लिनक्स अनुरक्षक स्वत्वाधिकारी सॉफ्टवेयर मापांक के वितरण को सहन करते हैं, लेकिन प्रतीकों को केवल जीएनयू सामान्य सार्वजनिक अनुज्ञप्ति ( ज़ीपीएल) मापांक के लिए उपलब्ध के रूप में चिह्नित करने की अनुमति दें।

स्वत्वाधिकारी या अ-जीपीएल-संगत मापांक भारण करने से ' अभिमिश्रण' चिन्हक स्थापित हो जाएगा[6][7] संचालन कर्नेल में - जिसका अर्थ है कि अनुभव की गई किसी भी समस्या या दोष या त्रुटि की अनुरक्षकों के माध्यम से परीक्षण किए जाने की संभावना कम होगी।[8][9] एलकेएम प्रभावी रूप से संचालन कर्नेल का खंड बन जाते हैं, इसलिए कर्नेल आंकड़े संरचनाओं को दूषित कर सकते हैं और ऐसे दोष या त्रुटि उत्पन्न कर सकते हैं जिनकी परीक्षण नहीं की जा सकती है यदि मापांक वास्तव में स्वत्वाधिकारी है।

लिनक्सेंट विवाद

2004 में, लिनक्सेंट, एक परामर्श संगठन जो भारण करने योग्य कर्नेल मापांक के रूप में स्वत्वाधिकारी उपकरण संचालक अवमुक्त करती है, ने अपने में एक शून्य वर्ण का दुरुपयोग करने का प्रयास किया। मापांक अनुज्ञप्ति, जैसा कि निम्नलिखित सांकेतिक अंक में दिखाई देता है:

MODULE_LICENSE("GPL\0for files in the \"GPL\" directory; for others, only LICENSE file applies");

कर्नेल के माध्यम से उपयोग किए गए श्रृंखला समानता सांकेतिक अंक ने उस समय यह निर्धारित करने का प्रयास किया कि क्या मापांक ज़ीपीएल संंवृत हो गया था जब यह एक शून्य वर्ण तक पहुंच गया था (\0), इसलिए यह सोचकर मूर्ख बनाया गया कि मापांक अपने अनुज्ञप्ति को मात्र ज़ीपीएल घोषित कर रहा है।[10]


स्वतंत्र बीएसडी

स्वतंत्र बीडीएस के लिए कर्नेल मापांक अंतर्गत संग्रहीत हैं /boot/kernel/ संचालन सिस्टम के साथ वितरित मापांक के लिए, या आमतौर पर /boot/modules/ स्वतंत्र बीडीएस पत्तन या स्वतंत्र बीडीएस पत्तन संगठन से स्थापित मापांक के लिए, या स्वत्वाधिकारी या अन्यथा द्विचर -एकमात्र मापांक के लिए। स्वतंत्र बीडीएस कर्नेल मापांक में आमतौर पर विस्तारण होता है .ko. एक बार यंत्र सामानधानी हो जाने के पश्चात्, उन्हें इसके साथ भारण किया जा सकता है kldload अधिकार , अभारित kldunload, और के साथ सूचीबद्ध है kldstat. कर्नेल शुरू होने से पहले मापांक को भारक से भी भारण किया जा सकता है, या तो स्वचालित रूप से (के माध्यम से /boot/loader.conf) या हाथ से।

मैकोज़

मैकोज़ में कुछ भारण करने योग्य कर्नेल मापांक स्वचालित रूप से भारण किए जा सकते हैं। भारण करने योग्य कर्नेल मापांक को इसके के माध्यम से भी भारण किया जा सकता है kextload आज्ञा। के माध्यम से सूचीबद्ध किया जा सकता है kextstat आज्ञा। भारण करने योग्य कर्नेल मापांक विस्तारण के साथ बंडल (मैकोज़) में स्थित हैं .केईएक्सटी. संचालन सिस्टम के साथ दिए गए अनुखंड को संग्रहित किया जाता है /System/Library/Extensions निर्देशिका; तीसरे पक्ष के माध्यम से आपूर्ति किए गए मापांक विभिन्न अन्य निर्देशिकाओं में हैं।

वास्तविक उत्पाद

वास्तविक उत्पाद कर्नेल मापांक को वास्तविक उत्पाद भारण करने योग्य मापांक (एनएलएम) कहा जाता है। एनएलएम को भारण अधिकार के माध्यम से वास्तविक उत्पाद कर्नेल में भारित किया जाता है, और भार रहित अधिकार के माध्यम से हटाया जाता है; modules अधिकार वर्तमान में भारण किए गए कर्नेल मापांक को सूचीबद्ध करता है। एनएलएम वास्तविक उत्पाद परिसेवक पर निर्दिष्ट किसी भी वैध अन्वेषक मार्ग में रह सकते हैं, और उनके पास है .NLM संचिका नाम विस्तारण के रूप में।

वीएक्स कार्य

एक आंकड़े प्राप्त करने योग्य कर्नेल मापांक ( डीकेएम) प्रकार की परियोजना एक निषिद्ध संचिका उत्पन्न करने के लिए बनाई जा सकती है जिसे पश्चात् में एलडी अधिकार का उपयोग करके कर्नेल स्थान पर भारण किया जा सकता है। यह आंकड़े प्राप्त करने योग्य कर्नेल मापांक अनएलडी अधिकार का उपयोग करके भार रहित किया जा सकता है।

सोलारिस

सोलारिस मे एक विन्यास योग्य कर्नेल मापांक भारण मार्ग है, जो इसके लिए अभाव है /platform/platform-name/kernel /kernel /usr/kernel. अधिकांश कर्नेल मापांक उपनिर्देशिकाओं के अंतर्गत रहते हैं /kernel; जिन्हें सिस्टम को उस बिंदु तक सामानधानी करने के लिए आवश्यक नहीं माना जाता है जो इसमे प्रारंभ कर सकते हैं प्रायः (लेकिन सदैव नहीं) में पाए जाते हैं /usr/kernel. दोषमार्जन कर्नेल निर्माण करते समय सिस्टम सक्रिय रूप से मापांक को भार रहित करने का प्रयास करता है।

द्विचर संगतता

लिनक्स कर्नेल मापांक के लिए एक स्थिर एपीआई या अनुप्रयोग द्विचर अंतराफलक प्रदान नहीं करता है। इसका अर्थ है कि विभिन्न कर्नेल संस्करणों के बीच आंतरिक संरचना और कार्य में अंतर हैं, जो संगतता समस्याओं का कारण बन सकता है। उन समस्याओं का मुकाबला करने के प्रयास में, प्रतीक संस्करण आंकड़े को .modinfo भारण करने योग्य निष्पादन योग्य और लिंक करने योग्य प्रारूप मापांक का खंड। मापांक भारण करने से पहले इस संस्करण जानकारी की समानता संचालन कर्नेल से की जा सकती है; यदि संस्करण असंगत हैं, तो मापांक भारण नहीं होगा।

अन्य संचालन सिस्टम, जैसे सोलारिस ( संचालन सिस्टम), स्वतंत्र बीडीएस, मैकोज़, और माइक्रोसॉफ्ट विंडोज़ कर्नेल एपीआई और आवेदन द्विचर अंतराफलक को अपेक्षाकृत स्थिर रखते हैं, इस प्रकार इस समस्या से बचते हैं। उदाहरण के लिए, कर्नेल संस्करण 6.0 के विरुद्ध संकलित स्वतंत्र बीडीएस कर्नेल मापांक किसी अन्य स्वतंत्र बीडीएस 6.एक्स संस्करण पर पुनर्संकलन के बिना काम करेगा, उदा। 6.4। हालांकि, वे अन्य प्रमुख संस्करणों के साथ संगत नहीं हैं और उन्हें स्वतंत्र बीडीएस 7.एक्स के साथ उपयोग करने के लिए पुनः संकलित किया जाना चाहिए, क्योंकि एपीआई और एबीआई संगतता केवल एक उपखंड के अंतर्गत ही बनाए रखी जाती है।

सुरक्षा

जबकि भारण करने योग्य कर्नेल मापांक संचालित कर्नेल को संशोधित करने का एक सुविधाजनक तरीका है, आक्षेपक के के माध्यम से उनकी प्रक्रिया ( संगणना ) या कम्प्यूटर संचिका का पता लगाने से रोकने के लिए एक अनुबंध प्रणाली पर इसका दुरुपयोग किया जा सकता है, जिससे उन्हें सिस्टम पर नियंत्रण बनाए रखने की अनुमति मिलती है। कई रूटकिट एलकेएम का इस तरह से उपयोग करते हैं। ध्यान दें कि, अधिकांश संचालन सिस्टम पर, मापांक किसी भी तरह से विशेषाधिकार उन्नयन में सहायता नहीं करते हैं, क्योंकि एलकेएम को भारण करने के लिए उन्नत विशेषाधिकार की आवश्यकता होती है; वे केवल आक्षेपक के लिए गुप्त रूप से प्रवेश को छुपाना आसान बनाते हैं।[11]


लिनक्स

लिनक्स सिससेटल विकल्प के माध्यम से मापांक भरण को अक्षम करने की अनुमति देता है /proc/sys/kernel/modules_disabled.[12][13] एक प्रारंभिक रैमडिस्क सिस्टम सामानधानी पर यंत्र के लिए आवश्यक विशिष्ट मापांक को भारण कर सकता है और फिर मापांक भरण को अक्षम कर सकता है। यह सुरक्षा को एक अखंड कर्नेल के समान बनाता है। यदि कोई हमलावर इनिटरैमफस को बदल सकता है, तो वे कर्नेल द्विचर को बदल सकते हैं।

मैकोज़

ओएस एक्स योसेमाइट और पश्चात् के प्रकाशन में, एक कर्नेल विस्तारण को सांकेतिक अंक हस्ताक्षर | सांकेतिक अंक-हस्ताक्षरित एप्पल विकासक प्रमाणपत्र के साथ होना चाहिए जो इसके लिए एक विशेष पात्रता रखता है। ऐसा विकासक प्रमाणपत्र केवल अनुरोध पर एप्पल के माध्यम से प्रदान किया जाता है और स्वचालित रूप से एप्पल विकासक सदस्यों को नहीं दिया जाता है। यह सुविधा, जिसे केक्स्त हस्ताक्षर कहा जाता है, अभाव रूप से सक्षम है और यह कर्नेल को स्वोत्थान रोकने का निर्देश देती है यदि अहस्ताक्षरित कर्नेल विस्तारण मौजूद हैं।[14] ओएस एक्स एल कैप्टन और पश्चात् में प्रकाशन, यह सिस्टम अखंडता संरक्षण का खंड है।

मैकोज़ के पूर्वकालीन संस्करणों में, या यदि केईएक्सटी हस्ताक्षर अक्षम है, कर्नेल विस्तारण बंडल में भारण करने योग्य कर्नेल मापांक को निराधार उपयोगकर्ताओं के माध्यम से भारण किया जा सकता है यदि OSBundleAllowUserLoad गुण बंडल की संपत्ति सूची में True पर सेट है।[15] हालाँकि, यदि निष्पादन योग्य सांकेतिक अंक संचिका सहित बंडल की कोई भी संचिका रूट और ग्रुप व्हील के स्वामित्व में नहीं है, या समूह या अन्य के माध्यम से लिखने योग्य है, तो कर्नेल भारण करने योग्य मापांक को भारण करने का प्रयास विफल हो जाएगा।[16]


सोलारिस

कर्नेल मापांक में वैकल्पिक रूप से एक क्रिप्टोग्राफ़िक हस्ताक्षर ELF अनुभाग हो सकता है जो सत्यापित सामानधानी नीति सेटिंग्स के आधार पर भारण पर सत्यापित होता है। कर्नेल यह लागू कर सकता है कि मापांक क्रिप्टोग्राफ़िक रूप से विश्वसनीय प्रमाणपत्रों के एक सेट के माध्यम से हस्ताक्षरित हैं; कुछ SPARC आधारित प्लेटफॉर्म पर ILOM में OS के बाहर विश्वसनीय प्रमाणपत्रों की सूची रखी जाती है। उपयोक्तास्थान के माध्यम से शुरू किया गया कर्नेल मापांक भरण विश्वसनीय मार्ग से तभी संभव है जब सिस्टम सक्षम अपरिवर्तनीय वैश्विक क्षेत्र सुविधा के साथ चल रहा हो।

यह भी देखें

  • वास्तविक उत्पाद भारण करने योग्य मापांक

संदर्भ

  1. "बहिष्कृत कर्नेल एक्सटेंशन और सिस्टम एक्सटेंशन विकल्प". Apple Inc. Retrieved 13 March 2021.
  2. "Kernel Extension Programming Topics: Introduction". Apple Inc. September 1, 2010. Archived from the original on May 4, 2013. Retrieved May 5, 2013.
  3. "गतिशील रूप से लोड करने योग्य कर्नेल मॉड्यूल का प्रबंधन और विकास करना". Hewlett-Packard. June 7, 2001.
  4. "ड्राइवर लोड होने पर क्या निर्धारित करता है". Microsoft Developer Network. Microsoft. November 21, 2012. Archived from the original on March 6, 2013. Retrieved May 5, 2013.
  5. "The Linux Kernel Module Programming Guide, section 2.2 "Compiling Kernel Modules"". Retrieved 2020-10-05.
  6. Linus Torvalds; et al. (2011-06-21). "Documentation/oops-tracing.txt". kernel.org. Archived from the original on 2011-10-02. Retrieved 2011-10-03.
  7. "दागी हुई गुठली". The Linux kernel user’s and administrator’s guide.
  8. Jonathan Corbet (2006-03-24). "यूजर स्पेस से टैनिंग". LWN.net. Archived from the original on 2011-11-16. Retrieved 2011-10-03.
  9. "Novell support documentation: Tainted kernel". 2007-07-26. Retrieved 2011-10-03.
  10. Jonathan Corbet (April 27, 2004). "Being honest with MODULE_LICENSE". LWN.net. Archived from the original on November 2, 2012. Retrieved October 30, 2012.
  11. Exploiting Loadable Kernel Modules Archived 2012-02-04 at the Wayback Machine
  12. "Sysctl/kernel.txt". Archived from the original on April 15, 2013. Retrieved January 4, 2013.
  13. Kees Cook (2012-11-28). "Clean module disabling". outflux.net. Retrieved 2020-10-05.
  14. "कर्नेल एक्सटेंशन". Mac Developer Library. Apple. September 16, 2015. Archived from the original on August 17, 2016. Retrieved September 29, 2016.
  15. "कर्नेल एक्सटेंशन के लिए Info.plist गुण". Apple Inc. Archived from the original on September 26, 2012. Retrieved September 27, 2012.
  16. kextload(8) – Darwin and macOS System Manager's Manual