लोडेबल कर्नेल मॉड्यूल: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{Short description|Dynamically loadable module that extends a running operating system kernel}}
{{Short description|Dynamically loadable module that extends a running operating system kernel}}
[[ कम्प्यूटिंग |संगणना]] में भारण करने योग्य कर्नेल मापांक (एलकेएम) एक [[वस्तु फ़ाइल|वस्तु संचिका]] है। जिसमें [[ऑपरेटिंग सिस्टम|संचालन]] पद्धति के संचालन वाले [[कर्नेल (ऑपरेटिंग सिस्टम)|कर्नेल (संचालन पद्धति)]], अथवा तथाकथित ''मुख्य कर्नेल'' के विस्तार के लिए सांकेतिक अंक होता है। एलकेएम सामान्यतः नवीनतम [[कंप्यूटर हार्डवेयर|संगणक यंत्र सामग्री]] ([[डिवाइस ड्राइवर|उपकरण संचालक]]) के रूप में अथवा [[फाइल सिस्टम|संचिका]] पद्धति के लिए अथवा [[सिस्टम कॉल|प्रणाली आह्वान]] समावेशन के समर्थन समावेशन के लिए प्रयोग किया जाता है। जब एलकेएम के माध्यम से प्रदान की जाने वाली कार्यक्षमता की आवश्यकता नहीं होती है, तो इसे [[ कंप्यूटर भंडारण |संगणक भंडारण]] और अन्य संसाधनों को मुक्त करने के लिए भार रहित किया जा सकता है।
[[ कम्प्यूटिंग |कम्प्यूटिंग]] में   संचयन करने योग्य कर्नेल   मॉड्यूल (एलकेएम) एक [[वस्तु फ़ाइल|वस्तु संचिका]] है। जिसमें   [[ऑपरेटिंग सिस्टम|ऑपरेटिंग]]   सिस्टम के   ऑपरेटिंग वाले [[कर्नेल (ऑपरेटिंग सिस्टम)|कर्नेल ( ऑपरेटिंग  सिस्टम)]], अथवा तथाकथित ''मुख्य कर्नेल'' के विस्तार के लिए सांकेतिक अंक होता है। एलकेएम सामान्यतः नवीनतम   [[कंप्यूटर   हार्डवेयर]] ([[डिवाइस ड्राइवर|उपकरण संचालक]]) के रूप में अथवा [[फाइल सिस्टम|संचिका]]   सिस्टम के लिए अथवा   [[सिस्टम कॉल|सिस्टम आह्वान]] समावेशन के समर्थन समावेशन के लिए प्रयोग किया जाता है। जब एलकेएम के माध्यम से प्रदान की जाने वाली कार्यक्षमता की आवश्यकता नहीं होती है, तो इसे   [[ कंप्यूटर भंडारण |कंप्यूटर  मेमोरी]] और अन्य संसाधनों को मुक्त करने के लिए   असंचयन  किया जा सकता है।


अधिकांश वर्तमान यूनिक्स प्रतिरूप प्रणालियाँ और [[Microsoft Windows|माइक्रोसॉफ्ट विंडोज़]] विभिन्न नामों के अनुसार भारण करने योग्य कर्नेल मापांक का समर्थन करते हैं, जैसे कि [[FreeBSD|स्वतंत्र बीडीएस]] में कर्नेल भारण करने योग्य मापांक (केएलडी), [[macOS|मैकोज़]] में कर्नेल विस्तारण (केईएक्सटी) (चूंकि तृतीय-पक्ष मापांक के लिए समर्थन छोड़ा जा रहा है)<ref>{{cite web |title=बहिष्कृत कर्नेल एक्सटेंशन और सिस्टम एक्सटेंशन विकल्प|url=https://developer.apple.com/support/kernel-extensions/ |publisher=Apple Inc. |access-date=13 March 2021}}</ref> है।<ref>{{cite web|url=https://developer.apple.com/library/mac/#documentation/Darwin/Conceptual/KEXTConcept/KEXTConceptIntro/introduction.html|title=Kernel Extension Programming Topics: Introduction|publisher=[[Apple Inc.]]|date=September 1, 2010|access-date=May 5, 2013|url-status=live|archive-url=https://web.archive.org/web/20130504142911/http://developer.apple.com/library/mac/#documentation/Darwin/Conceptual/KEXTConcept/KEXTConceptIntro/introduction.html|archive-date=May 4, 2013}}</ref> [[AIX|ऐक्स]] में कर्नेल विस्तारण मापांक, [[HP-UX|एचपी-यूएक्स]] में गतिशील रूप से भारण करने योग्य कर्नेल मापांक,<ref>{{cite web|url=https://support.hpe.com/hpesc/public/docDisplay?docId=emr_na-c01943990|title=गतिशील रूप से लोड करने योग्य कर्नेल मॉड्यूल का प्रबंधन और विकास करना|publisher=[[Hewlett-Packard]]|date=June 7, 2001}}</ref> [[Windows NT|विंडोज़ एनटी]] में कर्नेल-प्रणाली संचालक<ref>{{cite web|url=http://msdn.microsoft.com/en-us/library/windows/hardware/ff557272(v=vs.85).aspx|title=ड्राइवर लोड होने पर क्या निर्धारित करता है|work=[[Microsoft Developer Network]]|publisher=[[Microsoft]]|date=November 21, 2012|access-date=May 5, 2013|url-status=live|archive-url=https://web.archive.org/web/20130306121408/http://msdn.microsoft.com/en-us/library/windows/hardware/ff557272%28v%3Dvs.85%29.aspx|archive-date=March 6, 2013}}</ref> और [[VxWorks|वीएक्स कार्य]] में आंकड़े प्राप्त करने योग्य कर्नेल मापांक ( डीकेएम) को कर्नेल भारण करने योग्य मापांक ( अथवा केएलएम) के रूप में भी समझा जाता है, और मात्र कर्नेल मापांक (केएमओडी) के रूप में समझा जाता है।
अधिकांश वर्तमान यूनिक्स प्रतिरूप प्रणालियाँ और [[Microsoft Windows|माइक्रोसॉफ्ट विंडोज़]] विभिन्न नामों के अनुसार   संचयन करने योग्य कर्नेल   मॉड्यूल का समर्थन करते हैं, जैसे कि [[FreeBSD|स्वतंत्र बीडीएस]] में कर्नेल   संचयन करने योग्य   मॉड्यूल (केएलडी), [[macOS|मैकोज़]] में कर्नेल विस्तारण (केईएक्सटी) (चूंकि तृतीय-पक्ष   मॉड्यूल के लिए समर्थन छोड़ा जा रहा है)<ref>{{cite web |title=बहिष्कृत कर्नेल एक्सटेंशन और सिस्टम एक्सटेंशन विकल्प|url=https://developer.apple.com/support/kernel-extensions/ |publisher=Apple Inc. |access-date=13 March 2021}}</ref> है।<ref>{{cite web|url=https://developer.apple.com/library/mac/#documentation/Darwin/Conceptual/KEXTConcept/KEXTConceptIntro/introduction.html|title=Kernel Extension Programming Topics: Introduction|publisher=[[Apple Inc.]]|date=September 1, 2010|access-date=May 5, 2013|url-status=live|archive-url=https://web.archive.org/web/20130504142911/http://developer.apple.com/library/mac/#documentation/Darwin/Conceptual/KEXTConcept/KEXTConceptIntro/introduction.html|archive-date=May 4, 2013}}</ref> [[AIX|ऐक्स]] में कर्नेल विस्तारण   मॉड्यूल, [[HP-UX|एचपी-यूएक्स]] में गतिशील रूप से   संचयन करने योग्य कर्नेल   मॉड्यूल,<ref>{{cite web|url=https://support.hpe.com/hpesc/public/docDisplay?docId=emr_na-c01943990|title=गतिशील रूप से लोड करने योग्य कर्नेल मॉड्यूल का प्रबंधन और विकास करना|publisher=[[Hewlett-Packard]]|date=June 7, 2001}}</ref> [[Windows NT|विंडोज़ एनटी]] में कर्नेल- सिस्टम संचालक<ref>{{cite web|url=http://msdn.microsoft.com/en-us/library/windows/hardware/ff557272(v=vs.85).aspx|title=ड्राइवर लोड होने पर क्या निर्धारित करता है|work=[[Microsoft Developer Network]]|publisher=[[Microsoft]]|date=November 21, 2012|access-date=May 5, 2013|url-status=live|archive-url=https://web.archive.org/web/20130306121408/http://msdn.microsoft.com/en-us/library/windows/hardware/ff557272%28v%3Dvs.85%29.aspx|archive-date=March 6, 2013}}</ref> और [[VxWorks|वीएक्स कार्य]] में   डाटा  प्राप्त करने योग्य कर्नेल   मॉड्यूल ( डीकेएम) को कर्नेल   संचयन करने योग्य   मॉड्यूल ( अथवा केएलएम) के रूप में भी समझा जाता है, और मात्र कर्नेल   मॉड्यूल (केएमओडी) के रूप में समझा जाता है।


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


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


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


=== लिनक्स ===
=== लिनक्स ===
लिनक्स में भारण करने योग्य कर्नेल मापांक <code>[[modprobe|मॉडप्रोब]]</code> आदेश माध्यम से भारण (और भार रहित) किये जाते हैं। वह <code>/lib/modules</code> अथवा <code>/usr/lib/modules</code> में स्थित हैं और संस्करण 2.6 के पश्चात् से <code>.ko</code> (कर्नेल उद्देश्य ) उनका विस्तार हो गया है। विगत संस्करणों में .o वृद्धि का उपयोग किया गया था।<ref>{{cite web|title=The Linux Kernel Module Programming Guide, section 2.2 "Compiling Kernel Modules"|url=https://tldp.org/LDP/lkmpg/2.6/html/x181.html|access-date=2020-10-05}}</ref> <code>[[lsmod|इसमोड]]</code> अधिकार भारित कर्नेल मापांक को सूचीबद्ध करता है। आपातकालीन स्थितियों में जब पद्धति सामानधानी करने में विफल रहता है। उदाहरण के रूप मे टूटे हुए मापांक है। विशिष्ट मापांक को कर्नेल सामानधानी मापदण्ड सूची को संशोधित करके सक्षम अथवा अक्षम किया जा सकता है (उदाहरण के रूप मे कि [[GNU GRUB|ज़ीएनयू ज़ीआरयूबी]] का प्रयोग करके, ज़ीआरयूबी प्रारंभ प्रसूची में 'ई' दबाकर, इसके पश्चात् कर्नेल मापदण्ड रेखा को संपादित करके)।
लिनक्स में   संचयन करने योग्य कर्नेल   मॉड्यूल <code>[[modprobe|मॉडप्रोब]]</code> आदेश माध्यम से   संचयन (और   असंचयन ) किये जाते हैं। वह <code>/lib/modules</code> अथवा <code>/usr/lib/modules</code> में स्थित हैं और संस्करण 2.6 के पश्चात् से <code>.ko</code> (कर्नेल उद्देश्य ) मे उनका विस्तार हो गया है। विगत संस्करणों में .o वृद्धि का उपयोग किया गया था।<ref>{{cite web|title=The Linux Kernel Module Programming Guide, section 2.2 "Compiling Kernel Modules"|url=https://tldp.org/LDP/lkmpg/2.6/html/x181.html|access-date=2020-10-05}}</ref> <code>[[lsmod|इसमोड]]</code> अधिकार   संचयन  कर्नेल   मॉड्यूल को सूचीबद्ध करता है। आपातकालीन स्थितियों में जब   सिस्टम  बूट  करने में विफल रहता है। उदाहरण के रूप मे टूटे हुए   मॉड्यूल है। विशिष्ट   मॉड्यूल को कर्नेल   बूट    पैरामीटर  सूची को संशोधित करके सक्षम अथवा अक्षम किया जा सकता है (उदाहरण के रूप मे कि [[GNU GRUB|ज़ीएनयू ज़ीआरयूबी]] का प्रयोग करके, ज़ीआरयूबी प्रारंभ   मेनू  में 'ई' दबाकर, इसके पश्चात् कर्नेल   पैरामीटर  रेखा को संपादित करके)।


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


स्वत्वाधिकारी अथवा अ-जीपीएल-संगत मापांक भारण करने से संचालन कर्नेल में 'अभिमिश्रण' चिन्हक स्थापित हो जाएगा।<ref>{{cite web |date=2011-06-21 |author=Linus Torvalds |title=Documentation/oops-tracing.txt |publisher=kernel.org |url=http://repo.or.cz/w/linux-2.6.git/blob/HEAD:/Documentation/oops-tracing.txt#l222 |access-date=2011-10-03 |display-authors=etal |url-status=live |archive-url=https://web.archive.org/web/20111002110747/http://repo.or.cz/w/linux-2.6.git/blob/HEAD%3A/Documentation/oops-tracing.txt#l222 |archive-date=2011-10-02 }}</ref><ref>{{cite web|url=https://www.kernel.org/doc/html/latest/admin-guide/tainted-kernels.html|title=दागी हुई गुठली|work=The Linux kernel user’s and administrator’s guide}}</ref> जिसका अर्थ है कि अनुभव की गई किसी भी समस्या, दोष अथवा त्रुटि की अनुरक्षकों के माध्यम से परीक्षण किये जाने की संभावना कम होगी।<ref>{{cite web |date=2006-03-24 |author=Jonathan Corbet |title=यूजर स्पेस से टैनिंग|publisher=[[LWN.net]] |url=https://lwn.net/Articles/184879/ |access-date=2011-10-03 |url-status=live |archive-url=https://web.archive.org/web/20111116215244/http://lwn.net/Articles/184879/ |archive-date=2011-11-16 }}</ref><ref>{{cite web |date=2007-07-26 |title=Novell support documentation: Tainted kernel |url=http://www.novell.com/support/viewContent.do?externalId=3582750&sliceId=1 |access-date=2011-10-03 }}</ref> एलकेएम प्रभावी रूप से संचालन कर्नेल का खंड बन जाते हैं, इसलिए कर्नेल आंकड़े संरचनाओं को दूषित कर सकते हैं और ऐसे दोष अथवा त्रुटि उत्पन्न कर सकते हैं। जिनका परीक्षण नहीं की जा सकता है यदि मापांक वास्तव में स्वत्वाधिकारी है।
स्वत्वाधिकारी अथवा अ-जीपीएल-संगत   मॉड्यूल  संचयन करने से   ऑपरेटिंग कर्नेल में ' टेंट ' चिन्हक स्थापित हो जाएगा।<ref>{{cite web |date=2011-06-21 |author=Linus Torvalds |title=Documentation/oops-tracing.txt |publisher=kernel.org |url=http://repo.or.cz/w/linux-2.6.git/blob/HEAD:/Documentation/oops-tracing.txt#l222 |access-date=2011-10-03 |display-authors=etal |url-status=live |archive-url=https://web.archive.org/web/20111002110747/http://repo.or.cz/w/linux-2.6.git/blob/HEAD%3A/Documentation/oops-tracing.txt#l222 |archive-date=2011-10-02 }}</ref><ref>{{cite web|url=https://www.kernel.org/doc/html/latest/admin-guide/tainted-kernels.html|title=दागी हुई गुठली|work=The Linux kernel user’s and administrator’s guide}}</ref> जिसका अर्थ है कि अनुभव की गई किसी भी समस्या, दोष अथवा त्रुटि की अनुरक्षकों के माध्यम से परीक्षण किये जाने की संभावना कम होगी।<ref>{{cite web |date=2006-03-24 |author=Jonathan Corbet |title=यूजर स्पेस से टैनिंग|publisher=[[LWN.net]] |url=https://lwn.net/Articles/184879/ |access-date=2011-10-03 |url-status=live |archive-url=https://web.archive.org/web/20111116215244/http://lwn.net/Articles/184879/ |archive-date=2011-11-16 }}</ref><ref>{{cite web |date=2007-07-26 |title=Novell support documentation: Tainted kernel |url=http://www.novell.com/support/viewContent.do?externalId=3582750&sliceId=1 |access-date=2011-10-03 }}</ref> एलकेएम प्रभावी रूप से   ऑपरेटिंग कर्नेल का खंड बन जाते हैं, इसलिए कर्नेल   डाटा  संरचनाओं को दूषित कर सकते हैं और ऐसे दोष अथवा त्रुटि उत्पन्न कर सकते हैं। जिनका परीक्षण नहीं की जा सकता है यदि   मॉड्यूल वास्तव में स्वत्वाधिकारी है।


==== लिनक्सेंट विवाद ====
==== लिनक्सेंट विवाद ====
2004 में लिनक्सेंट एक परामर्श संगठन जो भारण करने योग्य कर्नेल मापांक के रूप में स्वत्वाधिकारी उपकरण संचालक अवमुक्त करती है, ने अपने <code>मापांक अनुज्ञप्ति</code> में एक [[शून्य वर्ण]] का दुरुपयोग करने का प्रयास किया। जैसा कि निम्नलिखित सांकेतिक अंक में दिखाई देता है-  
2004 में लिनक्सेंट एक परामर्श संगठन जो   संचयन करने योग्य कर्नेल   मॉड्यूल के रूप में स्वत्वाधिकारी उपकरण संचालक अवमुक्त करती है, ने अपने   <code>मॉड्यूल अनुज्ञप्ति</code> में एक [[शून्य वर्ण]] का दुरुपयोग करने का प्रयास किया। जैसा कि निम्नलिखित सांकेतिक अंक में दिखाई देता है-  


<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
MODULE_LICENSE("GPL\0for files in the \"GPL\" directory; for others, only LICENSE file applies");
MODULE_LICENSE("GPL\0for files in the \"GPL\" directory; for others, only LICENSE file applies");
</syntaxhighlight>
</syntaxhighlight>
कर्नेल के माध्यम से प्रयोग किये गए श्रृंखला समानता सांकेतिक अंक ने उस समय यह निर्धारित करने का प्रयास किया कि क्या मापांक ज़ीपीएल संंवृत हो गया था। जब यह एक शून्य वर्ण (<code>\0</code>) तक पहुंच गया था। इसलिए यह सोचकर मूर्ख बनाया गया कि मापांक अपने अनुज्ञप्ति को मात्र ज़ीपीएल घोषित कर रहा है।<ref>{{cite web|author=Jonathan Corbet|title=Being honest with MODULE_LICENSE|url=https://lwn.net/Articles/82305/|publisher=LWN.net|date=April 27, 2004|access-date=October 30, 2012|url-status=live|archive-url=https://web.archive.org/web/20121102095811/http://lwn.net/Articles/82305/|archive-date=November 2, 2012}}</ref>  
कर्नेल के माध्यम से प्रयोग किये गए श्रृंखला समानता सांकेतिक अंक ने उस समय यह निर्धारित करने का प्रयास किया कि क्या   मॉड्यूल ज़ीपीएल संंवृत हो गया था। जब यह एक शून्य वर्ण (<code>\0</code>) तक पहुंच गया था। इसलिए यह सोचकर मूर्ख बनाया गया कि   मॉड्यूल अपने अनुज्ञप्ति को मात्र ज़ीपीएल घोषित कर रहा है।<ref>{{cite web|author=Jonathan Corbet|title=Being honest with MODULE_LICENSE|url=https://lwn.net/Articles/82305/|publisher=LWN.net|date=April 27, 2004|access-date=October 30, 2012|url-status=live|archive-url=https://web.archive.org/web/20121102095811/http://lwn.net/Articles/82305/|archive-date=November 2, 2012}}</ref>  
=== स्वतंत्र बीएसडी ===
=== स्वतंत्र बीएसडी ===
स्वतंत्र बीडीएस के लिए कर्नेल मापांक <code>/boot/kernel/</code> संचालन पद्धति के साथ वितरित मापांक के लिए, अथवा सामान्यतः <code>/boot/modules/</code> स्वतंत्र बीडीएस पत्तन अथवा स्वतंत्र बीडीएस पत्तन संगठन से स्थापित मापांक के लिए, अथवा स्वत्वाधिकारी अथवा अन्यथा द्विचर -एकमात्र मापांक के लिए अंतर्गत संग्रहीत हैं। स्वतंत्र बीडीएस कर्नेल मापांक में सामान्यतः विस्तारण <code>.ko</code> होता है। एक बार यंत्र सामानधानी हो जाने के पश्चात्, उन्हें <code>kldload</code> के साथ भारण किया जा सकता है, और <code>kldunload</code> आदेश के साथ अभारित और <code>kldstat</code> के साथ सूचीबद्ध किया जा सकता है। <code>kldstat</code>. कर्नेल प्रारंभ होने से पहले मापांक को भारक से भी , अथवा तो स्वचालित रूप से (<code>/boot/loader.conf</code> के माध्यम से) अथवा हाथ से भारण किया जा सकता है।
स्वतंत्र बीडीएस के लिए कर्नेल   मॉड्यूल <code>/boot/kernel/</code>   ऑपरेटिंग  सिस्टम के साथ वितरित   मॉड्यूल के लिए, अथवा सामान्यतः <code>/boot/modules/</code> स्वतंत्र बीडीएस पत्तन अथवा स्वतंत्र बीडीएस पत्तन संगठन से स्थापित   मॉड्यूल के लिए, अथवा स्वत्वाधिकारी अथवा अन्यथा द्विचर -एकमात्र   मॉड्यूल के लिए अंतर्गत संग्रहीत हैं। स्वतंत्र बीडीएस कर्नेल   मॉड्यूल में सामान्यतः विस्तारण <code>.ko</code> होता है। एक बार यंत्र   बूट  हो जाने के पश्चात्, उन्हें <code>kldload</code> के साथ   संचयन किया जा सकता है, और <code>kldunload</code> आदेश के साथ अभारित और <code>kldstat</code> के साथ सूचीबद्ध किया जा सकता है। <code>kldstat</code>. कर्नेल प्रारंभ होने से पहले   मॉड्यूल को भारक से भी , अथवा तो स्वचालित रूप से (<code>/boot/loader.conf</code> के माध्यम से) अथवा हाथ से   संचयन किया जा सकता है।


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


=== मैकोज़ ===
=== मैकोज़ ===
मैकोज़ में कुछ भारण करने योग्य कर्नेल मापांक स्वचालित रूप से भारण किये जा सकते हैं। भारण करने योग्य कर्नेल मापांक को <code>kextload</code> के माध्यम से भी भारण किया जा सकता है। उन्हें <code>kextstat</code> आदेश के माध्यम से सूचीबद्ध किया जा सकता है। भारण करने योग्य कर्नेल मापांक विस्तारण के साथ [[बंडल (macOS)|बंडल (मैकोज़)]] में स्थित हैं <code>.केईएक्सटी</code>. संचालन पद्धति के साथ आपूर्ति दिए गए अनुखंड <code>/System/Library/Extensions</code> निर्देशिका मे संग्रहित किए जाते है। तीसरे पक्ष के माध्यम से आपूर्ति किये गए मापांक विभिन्न अन्य निर्देशिकाओं में हैं।
मैकोज़ में कुछ   संचयन करने योग्य कर्नेल   मॉड्यूल स्वचालित रूप से   संचयन किये जा सकते हैं।   संचयन करने योग्य कर्नेल   मॉड्यूल को <code>kextload</code> के माध्यम से भी   संचयन किया जा सकता है। उन्हें <code>kextstat</code> आदेश के माध्यम से सूचीबद्ध किया जा सकता है।   संचयन करने योग्य कर्नेल   मॉड्यूल विस्तारण के साथ [[बंडल (macOS)|बंडल (मैकोज़)]] में स्थित हैं <code>.केईएक्सटी</code>.   ऑपरेटिंग  सिस्टम के साथ आपूर्ति दिए गए अनुखंड <code>/System/Library/Extensions</code> निर्देशिका मे संग्रहित किए जाते है। तीसरे पक्ष के माध्यम से आपूर्ति किये गए   मॉड्यूल विभिन्न अन्य निर्देशिकाओं में हैं।


=== वास्तविक उत्पाद ===
=== वास्तविक उत्पाद ===
वास्तविक उत्पाद कर्नेल मापांक को [[ नेटवेयर लोड करने योग्य मॉड्यूल |वास्तविक उत्पाद भारण करने योग्य मापांक]] (एनएलएम) कहा जाता है। एनएलएम को भारण अधिकार के माध्यम से वास्तविक उत्पाद कर्नेल में भारित किया जाता है, और भार रहित अधिकार के माध्यम से हटाया जाता है। <code>modules</code> अधिकार वर्तमान में भारण किये गए कर्नेल मापांक को सूचीबद्ध करता है। एनएलएम वास्तविक उत्पाद परिसेवक पर निर्दिष्ट किसी भी वैध अन्वेषक मार्ग में रह सकते हैं, और उनके पास संचिका नाम विस्तारण के रूप में <code>.NLM</code> है।  
वास्तविक उत्पाद कर्नेल   मॉड्यूल को [[ नेटवेयर लोड करने योग्य मॉड्यूल |वास्तविक उत्पाद   संचयन करने योग्य   मॉड्यूल]] (एनएलएम) कहा जाता है। एनएलएम को   संचयन अधिकार के माध्यम से वास्तविक उत्पाद कर्नेल में   संचयन  किया जाता है, और   असंचयन  अधिकार के माध्यम से हटाया जाता है। <code>modules</code> अधिकार वर्तमान में   संचयन किये गए कर्नेल   मॉड्यूल को सूचीबद्ध करता है। एनएलएम वास्तविक उत्पाद परिसेवक पर निर्दिष्ट किसी भी वैध अन्वेषक मार्ग में रह सकते हैं, और उनके पास संचिका नाम विस्तारण के रूप में <code>.NLM</code> है।  


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


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


== द्विचर संगतता ==
== द्विचर संगतता ==
लिनक्स कर्नेल मापांक के लिए एक स्थिर [[एपीआई]] अथवा [[अनुप्रयोग बाइनरी इंटरफ़ेस|अनुप्रयोग द्विचर अंतराफलक]] प्रदान नहीं करता है। इसका अर्थ है कि विभिन्न कर्नेल संस्करणों के बीच आंतरिक संरचना और कार्य में अंतर हैं, जो संगतता समस्याओं का कारण बन सकता है। उन समस्याओं का मुकाबला करने के प्रयास में भारण करने योग्य [[निष्पादन योग्य और लिंक करने योग्य प्रारूप]] मापांक के <code>.modinfo</code> प्रतीक संस्करण आंकड़े को रखा गया है। मापांक भारण करने से पहले इस संस्करण जानकारी की समानता संचालन कर्नेल से की जा सकती है। यदि संस्करण असंगत हैं, तो मापांक भारण नहीं होगा।  
लिनक्स कर्नेल   मॉड्यूल के लिए एक स्थिर [[एपीआई]] अथवा [[अनुप्रयोग बाइनरी इंटरफ़ेस|अनुप्रयोग द्विचर अंतराफलक]] प्रदान नहीं करता है। इसका अर्थ है कि विभिन्न कर्नेल संस्करणों के बीच आंतरिक संरचना और कार्य में अंतर हैं, जो संगतता समस्याओं का कारण बन सकता है। उन समस्याओं का मुकाबला करने के प्रयास में   संचयन करने योग्य [[निष्पादन योग्य और लिंक करने योग्य प्रारूप]]   मॉड्यूल के <code>.modinfo</code> प्रतीक संस्करण   डाटा  को रखा गया है।   मॉड्यूल  संचयन करने से पहले इस संस्करण जानकारी की समानता   ऑपरेटिंग कर्नेल से की जा सकती है। यदि संस्करण असंगत हैं, तो   मॉड्यूल  संचयन नहीं होगा।  


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


== सुरक्षा ==
== सुरक्षा ==
जबकि भारण करने योग्य कर्नेल मापांक संचालित कर्नेल को संशोधित करने का एक सुविधाजनक प्रणाली है। आक्षेपक के माध्यम से उनकी [[प्रक्रिया (कंप्यूटिंग)|प्रक्रिया (संगणना)]] अथवा [[कम्प्यूटर फाइल|कम्प्यूटर संचिका]] का पता लगाने से रोकने के लिए एक अनुबंध प्रणाली पर इसका दुरुपयोग किया जा सकता है। जिससे उन्हें पद्धति पर नियंत्रण बनाए रखने की अनुमति मिलती है। अनेक [[ rootkit |रूटकिट]] एलकेएम का इस तरह से प्रयोग करते हैं। ध्यान दें कि, अधिकांश संचालन पद्धति पर मापांक किसी भी तरह से [[विशेषाधिकार उन्नयन]] में सहायता नहीं करते हैं, क्योंकि एलकेएम को भारण करने के लिए उन्नत विशेषाधिकार की आवश्यकता होती है। वे मात्र आक्षेपक के लिए गुप्त रूप से प्रवेश को छुपाना आसान बनाते हैं।<ref>[http://www.ouah.org/reiterlkm.htm Exploiting Loadable Kernel Modules ] {{webarchive|url=https://web.archive.org/web/20120204165532/http://www.ouah.org/reiterlkm.htm |date=2012-02-04 }}</ref>
जबकि   संचयन करने योग्य कर्नेल   मॉड्यूल संचालित कर्नेल को संशोधित करने का एक सुविधाजनक   सिस्टम है। आक्षेपक के माध्यम से उनकी [[प्रक्रिया (कंप्यूटिंग)|प्रक्रिया ( कम्प्यूटिंग)]] अथवा [[कम्प्यूटर फाइल|कम्प्यूटर संचिका]] का पता लगाने से रोकने के लिए एक अनुबंध   सिस्टम पर इसका दुरुपयोग किया जा सकता है। जिससे उन्हें   सिस्टम पर नियंत्रण बनाए रखने की अनुमति मिलती है। अनेक [[ rootkit |रूटकिट]] एलकेएम का इस तरह से प्रयोग करते हैं। ध्यान दें कि, अधिकांश   ऑपरेटिंग  सिस्टम पर   मॉड्यूल किसी भी तरह से [[विशेषाधिकार उन्नयन]] में सहायता नहीं करते हैं, क्योंकि एलकेएम को   संचयन करने के लिए उन्नत विशेषाधिकार की आवश्यकता होती है। वे मात्र आक्षेपक के लिए गुप्त रूप से प्रवेश को छुपाना आसान बनाते हैं।<ref>[http://www.ouah.org/reiterlkm.htm Exploiting Loadable Kernel Modules ] {{webarchive|url=https://web.archive.org/web/20120204165532/http://www.ouah.org/reiterlkm.htm |date=2012-02-04 }}</ref>
=== लिनक्स ===
=== लिनक्स ===
लिनक्स [[sysctl|सिससेटल]] विकल्प <code>/proc/sys/kernel/modules_disabled</code> के माध्यम से मापांक भरण को अक्षम करने की अनुमति देता है।<ref>{{cite web|title=Sysctl/kernel.txt|url=https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/sysctl/kernel.txt;hb=HEAD|archive-url=https://archive.today/20130415070311/http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/sysctl/kernel.txt;hb=HEAD|url-status=dead|archive-date=April 15, 2013|access-date=January 4, 2013}}</ref><ref>{{cite web
लिनक्स [[sysctl|सिससेटल]] विकल्प <code>/proc/sys/kernel/modules_disabled</code> के माध्यम से   मॉड्यूल भरण को अक्षम करने की अनुमति देता है।<ref>{{cite web|title=Sysctl/kernel.txt|url=https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/sysctl/kernel.txt;hb=HEAD|archive-url=https://archive.today/20130415070311/http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/sysctl/kernel.txt;hb=HEAD|url-status=dead|archive-date=April 15, 2013|access-date=January 4, 2013}}</ref><ref>{{cite web
  | url = https://outflux.net/blog/archives/2012/11/28/clean-module-disabling/
  | url = https://outflux.net/blog/archives/2012/11/28/clean-module-disabling/
  | title = Clean module disabling
  | title = Clean module disabling
Line 59: Line 59:
  | author = Kees Cook
  | author = Kees Cook
  | publisher = outflux.net
  | publisher = outflux.net
  }}</ref> एक [[प्रारंभिक रैमडिस्क]] पद्धति सामानधानी पर यंत्र के लिए आवश्यक विशिष्ट मापांक को भारण कर सकता है, और इसके पश्चात् मापांक भरण को अक्षम कर सकता है। यह सुरक्षा को एक अखंड कर्नेल के समान बनाता है। यदि कोई आक्षेपक इनिटरैमफस को बदल सकता है, तो वे कर्नेल द्विचर को बदल सकते हैं।     
  }}</ref> एक [[प्रारंभिक रैमडिस्क]]   सिस्टम  बूट  पर यंत्र के लिए आवश्यक विशिष्ट   मॉड्यूल को   संचयन कर सकता है, और इसके पश्चात्   मॉड्यूल भरण को अक्षम कर सकता है। यह सुरक्षा को एक अखंड कर्नेल के समान बनाता है। यदि कोई आक्षेपक इनिटरैमफस को बदल सकता है, तो वे कर्नेल द्विचर को बदल सकते हैं।     


=== मैकोज़ ===
=== मैकोज़ ===
[[OS X Yosemite|ओएस एक्स योसेमाइट]] और पश्चात् के प्रकाशन में एक कर्नेल विस्तारण को [[ कोड हस्ताक्षर |सांकेतिक अंक चिह्नक]] के साथ हस्ताक्षरित करना पड़ता है, जो इसके लिए एक विशेष "पात्रता" रखता है। ऐसा विकासक प्रमाणपत्र मात्र अनुरोध पर [[एप्पल डेवलपर|एप्पल विकासक]] माध्यम प्रदान किया जाता है, और स्वचालित रूप से एप्पल विकासक सदस्यों को नहीं दिया जाता है। यह सुविधा जिसे केक्स्त चिह्नक कहा जाता है, अभाव रूप से सक्षम है। यह कर्नेल को स्वोत्थान रोकने का निर्देश देती है, यदि अहस्ताक्षरित कर्नेल विस्तारण उपस्थित हैं।<ref>{{Cite web|url=https://developer.apple.com/library/content/documentation/Security/Conceptual/System_Integrity_Protection_Guide/KernelExtensions/KernelExtensions.html|title=कर्नेल एक्सटेंशन|date=September 16, 2015|website=Mac Developer Library|publisher=Apple|archive-url=https://web.archive.org/web/20160817085001/https://developer.apple.com/library/mac/documentation/Security/Conceptual/System_Integrity_Protection_Guide/KernelExtensions/KernelExtensions.html|archive-date=August 17, 2016|url-status=live|access-date=September 29, 2016}}</ref> {{Nowrap|ओएस एक्स}} एल कैप्टन और पश्चात् में प्रकाशन यह [[सिस्टम इंटीग्रिटी प्रोटेक्शन|प्रणाली अखंडता संरक्षण]] का खंड है।
[[OS X Yosemite|ओएस एक्स योसेमाइट]] और पश्चात् के प्रकाशन में एक कर्नेल विस्तारण को [[ कोड हस्ताक्षर |सांकेतिक अंक चिह्नक]] के साथ हस्ताक्षरित करना पड़ता है, जो इसके लिए एक विशेष "पात्रता" रखता है। ऐसा विकासक प्रमाणपत्र मात्र अनुरोध पर [[एप्पल डेवलपर|एप्पल विकासक]] माध्यम प्रदान किया जाता है, और स्वचालित रूप से एप्पल विकासक सदस्यों को नहीं दिया जाता है। यह सुविधा जिसे केक्स्त चिह्नक कहा जाता है, अभाव रूप से सक्षम है। यह कर्नेल को स्वोत्थान रोकने का निर्देश देती है, यदि अहस्ताक्षरित कर्नेल विस्तारण उपस्थित हैं।<ref>{{Cite web|url=https://developer.apple.com/library/content/documentation/Security/Conceptual/System_Integrity_Protection_Guide/KernelExtensions/KernelExtensions.html|title=कर्नेल एक्सटेंशन|date=September 16, 2015|website=Mac Developer Library|publisher=Apple|archive-url=https://web.archive.org/web/20160817085001/https://developer.apple.com/library/mac/documentation/Security/Conceptual/System_Integrity_Protection_Guide/KernelExtensions/KernelExtensions.html|archive-date=August 17, 2016|url-status=live|access-date=September 29, 2016}}</ref> {{Nowrap|ओएस एक्स}} एल कैप्टन और पश्चात् में प्रकाशन यह   [[सिस्टम इंटीग्रिटी प्रोटेक्शन|सिस्टम अखंडता संरक्षण]] का खंड है।


मैकोज़ के पूर्वकालीन संस्करणों में यदि केईएक्सटी चिह्नक अक्षम है तो, कर्नेल विस्तारण बंडल में भारण करने योग्य कर्नेल मापांक को निराधार उपयोगकर्ताओं के माध्यम से भारण किया जा सकता है। यदि बंडल की संपत्ति सूची मे ओएस बंडल उपयोगकर्ता भार गुण वास्तविक पर समुच्चय है।<ref>{{cite web|title=कर्नेल एक्सटेंशन के लिए Info.plist गुण|url=https://developer.apple.com/library/mac/#documentation/Darwin/Conceptual/KEXTConcept/Articles/infoplist_keys.html|publisher=[[Apple Inc.]]|access-date=September 27, 2012|url-status=live|archive-url=https://web.archive.org/web/20120926232217/http://developer.apple.com/library/mac/#documentation/Darwin/Conceptual/KEXTConcept/Articles/infoplist_keys.html|archive-date=September 26, 2012}}</ref> चूंकि यदि निष्पादन योग्य सांकेतिक अंक संचिका सहित बंडल की कोई भी संचिका, मार्ग और समूह चक्र के स्वामित्व में नहीं है, अथवा समूह अन्य के माध्यम से लिखने योग्य है, तो कर्नेल भारण करने योग्य मापांक को भारण करने का प्रयास विफल हो जाएगा।<ref>{{man|8|kextload|Darwin}}</ref>
मैकोज़ के पूर्वकालीन संस्करणों में यदि केईएक्सटी चिह्नक अक्षम है तो, कर्नेल विस्तारण बंडल में   संचयन करने योग्य कर्नेल   मॉड्यूल को निराधार उपयोगकर्ताओं के माध्यम से   संचयन किया जा सकता है। यदि बंडल की संपत्ति सूची मे ओएस बंडल उपयोगकर्ता भार गुण वास्तविक पर समुच्चय है।<ref>{{cite web|title=कर्नेल एक्सटेंशन के लिए Info.plist गुण|url=https://developer.apple.com/library/mac/#documentation/Darwin/Conceptual/KEXTConcept/Articles/infoplist_keys.html|publisher=[[Apple Inc.]]|access-date=September 27, 2012|url-status=live|archive-url=https://web.archive.org/web/20120926232217/http://developer.apple.com/library/mac/#documentation/Darwin/Conceptual/KEXTConcept/Articles/infoplist_keys.html|archive-date=September 26, 2012}}</ref> चूंकि यदि निष्पादन योग्य सांकेतिक अंक संचिका सहित बंडल की कोई भी संचिका, मार्ग और समूह चक्र के स्वामित्व में नहीं है, अथवा समूह अन्य के माध्यम से लिखने योग्य है, तो कर्नेल   संचयन करने योग्य   मॉड्यूल को   संचयन करने का प्रयास विफल हो जाएगा।<ref>{{man|8|kextload|Darwin}}</ref>
=== सोलारिस ===
=== सोलारिस ===
कर्नेल मापांक में वैकल्पिक रूप से एक गुप्‍तलेखीय चिह्नक ईएलएफ अनुभाग हो सकता है, जो सत्यापित सामानधानी नीति समायोजन के आधार पर भारण पर सत्यापित होता है। कर्नेल यह प्रयुक्त कर सकता है कि मापांक गुप्‍तलेखीय रूप से विश्वसनीय प्रमाणपत्रों के एक समुच्चय के माध्यम से सांकेतिक हैं। कुछ तत्परता आधारित पटल पर आईएलओएम में ओएस के बाह्य विश्वसनीय प्रमाणपत्रों की सूची रखी जाती है। उपयोक्तास्थान के माध्यम से प्रारंभ किया गया कर्नेल मापांक भरण विश्वसनीय मार्ग से तभी संभव है, जब पद्धति सक्षम अपरिवर्तनीय वैश्विक क्षेत्र सुविधा के साथ संचालन कर रहा हो।
कर्नेल   मॉड्यूल में वैकल्पिक रूप से एक गुप्‍तलेखीय चिह्नक ईएलएफ अनुभाग हो सकता है, जो सत्यापित   बूट  नीति समायोजन के आधार पर   संचयन पर सत्यापित होता है। कर्नेल यह प्रयुक्त कर सकता है कि   मॉड्यूल गुप्‍तलेखीय रूप से विश्वसनीय प्रमाणपत्रों के एक समुच्चय के माध्यम से सांकेतिक हैं। कुछ तत्परता आधारित पटल पर आईएलओएम में ओएस के बाह्य विश्वसनीय प्रमाणपत्रों की सूची रखी जाती है। उपयोक्तास्थान के माध्यम से प्रारंभ किया गया कर्नेल   मॉड्यूल भरण विश्वसनीय मार्ग से तभी संभव है, जब   सिस्टम सक्षम अपरिवर्तनीय वैश्विक क्षेत्र सुविधा के साथ   ऑपरेटिंग कर रहा हो।


== यह भी देखें ==
== यह भी देखें ==
* वास्तविक उत्पाद भारण करने योग्य मापांक
* वास्तविक उत्पाद   संचयन करने योग्य   मॉड्यूल


== संदर्भ ==
== संदर्भ ==

Revision as of 16:35, 25 May 2023

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

अधिकांश वर्तमान यूनिक्स प्रतिरूप प्रणालियाँ और माइक्रोसॉफ्ट विंडोज़ विभिन्न नामों के अनुसार संचयन करने योग्य कर्नेल मॉड्यूल का समर्थन करते हैं, जैसे कि स्वतंत्र बीडीएस में कर्नेल संचयन करने योग्य मॉड्यूल (केएलडी), मैकोज़ में कर्नेल विस्तारण (केईएक्सटी) (चूंकि तृतीय-पक्ष मॉड्यूल के लिए समर्थन छोड़ा जा रहा है)[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