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

From Vigyanwiki
Revision as of 23:14, 21 May 2023 by alpha>Neetua08

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

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

श्रेष्ठता

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

असुविधा

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

विभिन्न संचालन पद्धति में कार्यान्वयन

लिनक्स

लिनक्स में भारण करने योग्य कर्नेल मापांक मॉडप्रोब आदेश माध्यम से भारण (और भार रहित) किये जाते हैं। वह /lib/modules अथवा /usr/lib/modules में स्थित हैं और संस्करण 2.6 के पश्चात् से .ko (कर्नेल उद्देश्य ) उनका विस्तार हो गया है। विगत संस्करणों में .o वृद्धि का उपयोग किया गया था।[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 के साथ सूचीबद्ध किया जा सकता है। kldstat. कर्नेल प्रारंभ होने से पहले मापांक को भारक से भी , अथवा तो स्वचालित रूप से (/boot/loader.conf के माध्यम से) अथवा हाथ से भारण किया जा सकता है।

लोड करने योग्य कर्नेल मॉड्यूल एक्सटेंशन .kext के साथ बंडलों में स्थित हैं। ऑपरेटिंग सिस्टम के साथ आपूर्ति किए गए मॉड्यूल /सिस्टम/लाइब्रेरी/एक्सटेंशन निर्देशिका में संग्रहीत किए जाते हैं; तीसरे पक्ष माध्यम आपूर्ति किए गए मॉड्यूल विभिन्न अन्य निर्देशिकाओं में हैं।

मैकोज़

मैकोज़ में कुछ भारण करने योग्य कर्नेल मापांक स्वचालित रूप से भारण किये जा सकते हैं। भारण करने योग्य कर्नेल मापांक को 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] ओएस एक्स एल कैप्टन और पश्चात् में प्रकाशन यह प्रणाली अखंडता संरक्षण का खंड है।

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

सोलारिस

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

यह भी देखें

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

संदर्भ

  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