लोडेबल कर्नेल मॉड्यूल: 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|वीएक्स कार्य]] में  आंकड़े प्राप्त  करने योग्य कर्नेल  मापांक (  डीकेएम)। उन्हें कर्नेल  भारण करने योग्य  मापांक (या केएलएम) के रूप में भी जाना जाता है, और केवल कर्नेल  मापांक (केएमओडी) के रूप में जाना जाता है।


== श्रेष्ठता ==
== श्रेष्ठता ==
Line 8: Line 8:


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


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


=== लिनक्स ===
=== लिनक्स ===
लिनक्स में  भारण करने योग्य कर्नेल  मापांक किसके द्वारा भारण (और भार रहित) किए जाते हैं <code>[[modprobe|मॉडप्रोब]]</code> आज्ञा। वे में स्थित हैं <code>/lib/modules</code> या <code>/usr/lib/modules</code> और उनका विस्तार हो गया है <code>.ko</code> (कर्नेल  उद्देश्य ) संस्करण 2.6 के बाद से ( विगत  संस्करणों ने <code>.ko</code> विस्तार)।<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> और उनका विस्तार हो गया है <code>.ko</code> (कर्नेल  उद्देश्य ) संस्करण 2.6 के पश्चात् से ( विगत  संस्करणों ने <code>.ko</code> विस्तार)।<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>  एलकेएम प्रभावी रूप से  संचालन  कर्नेल का     खंड बन जाते हैं, इसलिए कर्नेल आंकड़े संरचनाओं को दूषित कर सकते हैं और ऐसे दोष या त्रुटि उत्पन्न कर सकते हैं जिनकी परीक्षण नहीं की जा सकती है यदि  मापांक वास्तव में  स्वत्वाधिकारी है।


==== लिनक्सेंट विवाद ====
==== लिनक्सेंट विवाद ====
Line 26: Line 26:
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>/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>/boot/loader.conf</code>) या हाथ से।


=== मैकोज़ ===
=== मैकोज़ ===
मैकओस में कुछ  भारण करने योग्य कर्नेल  मापांक स्वचालित रूप से  भारण किए जा सकते हैं।  भारण करने योग्य कर्नेल  मापांक को इसके द्वारा भी  भारण किया जा सकता है <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>  संचिका  नाम विस्तारण के रूप में।


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


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


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


अन्य  संचालन सिस्टम, जैसे Solaris (  संचालन सिस्टम), स्वतंत्र बीडीएस, मैकओस, और माइक्रोसॉफ्ट विंडोज़ कर्नेल API और एप्लिकेशन बाइनरी इंटरफ़ेस को अपेक्षाकृत स्थिर रखते हैं, इस प्रकार इस समस्या से बचते हैं। उदाहरण के लिए, कर्नेल संस्करण 6.0 के विरुद्ध संकलित स्वतंत्र बीडीएस कर्नेल  मापांक किसी अन्य स्वतंत्र बीडीएस 6.x संस्करण पर पुनर्संकलन के बिना काम करेगा, उदा। 6.4। हालांकि, वे अन्य प्रमुख संस्करणों के साथ संगत नहीं हैं और उन्हें स्वतंत्र बीडीएस 7.x के साथ उपयोग करने के लिए पुनः संकलित किया जाना चाहिए, क्योंकि API और ABI संगतता केवल एक शाखा के भीतर ही बनाए रखी जाती है।
अन्य  संचालन सिस्टम, जैसे सोलारिस (  संचालन सिस्टम), स्वतंत्र बीडीएस, मैकोज़, और माइक्रोसॉफ्ट विंडोज़ कर्नेल एपीआई और आवेदन द्विचर    अंतराफलक  को अपेक्षाकृत स्थिर रखते हैं, इस प्रकार इस समस्या से बचते हैं। उदाहरण के लिए, कर्नेल संस्करण 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 61: Line 61:
  | author = Kees Cook
  | author = Kees Cook
  | publisher = outflux.net
  | publisher = outflux.net
  }}</ref> एक [[प्रारंभिक रैमडिस्क]] सिस्टम सामानधानी पर मशीन के लिए आवश्यक विशिष्ट  मापांक को  भारण कर सकता है और फिर  मापांक लोडिंग को अक्षम कर सकता है। यह सुरक्षा को एक अखंड कर्नेल के समान बनाता है। यदि कोई हमलावर initramfs को बदल सकता है, तो वे कर्नेल बाइनरी को बदल सकते हैं।
  }}</ref> एक [[प्रारंभिक रैमडिस्क]] सिस्टम सामानधानी पर यंत्र के लिए आवश्यक विशिष्ट  मापांक को  भारण कर सकता है और फिर  मापांक भरण  को अक्षम कर सकता है। यह सुरक्षा को एक अखंड कर्नेल के समान बनाता है। यदि कोई हमलावर इनिटरैमफस को बदल सकता है, तो वे कर्नेल द्विचर  को बदल सकते हैं।  


=== मैकोज़ ===
=== मैकोज़ ===
[[OS X Yosemite]] और बाद के रिलीज में, एक कर्नेल विस्तारण को [[ कोड हस्ताक्षर |    सांकेतिक अंक हस्ताक्षर]] |    सांकेतिक अंक-हस्ताक्षरित [[एप्पल डेवलपर]] प्रमाणपत्र के साथ होना चाहिए जो इसके लिए एक विशेष पात्रता रखता है। ऐसा डेवलपर प्रमाणपत्र केवल अनुरोध पर Apple द्वारा प्रदान किया जाता है और स्वचालित रूप से Apple डेवलपर सदस्यों को नहीं दिया जाता है। यह सुविधा, जिसे kextsigning कहा जाता है, डिफ़ॉल्ट रूप से सक्षम है और यह कर्नेल को बूटिंग रोकने का निर्देश देती है यदि अहस्ताक्षरित कर्नेल विस्तारण मौजूद हैं।<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> OS X El Capitan|{{Nowrap|OS X}} El Capitan और बाद में रिलीज, यह [[सिस्टम इंटीग्रिटी प्रोटेक्शन]] का   भाग है।
[[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|ओएस एक्स}} एल  कैप्टन और पश्चात् में प्रकाशन, यह [[सिस्टम इंटीग्रिटी प्रोटेक्शन|सिस्टम  अखंडता  संरक्षण]] का     खंड है।


मैकओस के पुराने संस्करणों में, या यदि केईएक्सटी हस्ताक्षर अक्षम है, कर्नेल विस्तारण बंडल में  भारण करने योग्य कर्नेल  मापांक को गैर-रूट उपयोगकर्ताओं द्वारा भारण किया जा सकता है यदि OSBundleAllowUserLoad गुण बंडल की संपत्ति सूची में True पर सेट है।<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>
मैकोज़ के   पूर्वकालीन संस्करणों में, या यदि केईएक्सटी हस्ताक्षर अक्षम है, कर्नेल विस्तारण बंडल में  भारण करने योग्य कर्नेल  मापांक को निराधार उपयोगकर्ताओं के माध्यम से भारण किया जा सकता है यदि OSBundleAllowUserLoad गुण बंडल की संपत्ति सूची में True पर सेट है।<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>




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


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


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

Revision as of 21:29, 20 May 2023

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

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