लोडेबल कर्नेल मॉड्यूल: Difference between revisions
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> | अधिकांश वर्तमान यूनिक्स प्रतिरूप प्रणालियाँ और [[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|ज़ीएनयू ज़ीआरयूबी]] का प्रयोग करके, ज़ीआरयूबी प्रारंभ प्रसूची में 'ई' दबाकर, फिर कर्नेल मापदण्ड रेखा को संपादित करके)। | ||
==== अनुज्ञप्ति | ==== अनुज्ञप्ति उद्देश्यों ==== | ||
लिनक्स अनुरक्षकों | लिनक्स अनुरक्षकों के अनुमान में एलकेएम कर्नेल का [[व्युत्पन्न कार्य]] है। लिनक्स अनुरक्षक [[मालिकाना सॉफ्टवेयर|स्वत्वाधिकारी सॉफ्टवेयर]] मापांक के वितरण को सहन करते हैं, किन्तु प्रतीकों को मात्र [[जीएनयू जनरल पब्लिक लाइसेंस|जीएनयू सामान्य सार्वजनिक अनुज्ञप्ति]] ( ज़ीपीएल) मापांक के लिए उपलब्ध के रूप में चिह्नित करने की अनुमति देते है। | ||
स्वत्वाधिकारी | स्वत्वाधिकारी अथवा अ-जीपीएल-संगत मापांक भारण करने से संचालन कर्नेल में 'अभिमिश्रण' चिन्हक स्थापित हो जाएगा<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 में | 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>/boot/kernel/</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>modules</code> अधिकार वर्तमान में भारण | वास्तविक उत्पाद कर्नेल मापांक को [[ नेटवेयर लोड करने योग्य मॉड्यूल | वास्तविक उत्पाद भारण करने योग्य मापांक]] (एनएलएम) कहा जाता है। एनएलएम को भारण अधिकार के माध्यम से वास्तविक उत्पाद कर्नेल में भारित किया जाता है, और भार रहित अधिकार के माध्यम से हटाया जाता है; <code>modules</code> अधिकार वर्तमान में भारण किये गए कर्नेल मापांक को सूचीबद्ध करता है। एनएलएम वास्तविक उत्पाद परिसेवक पर निर्दिष्ट किसी भी वैध अन्वेषक मार्ग में रह सकते हैं, और उनके पास है <code>.NLM</code> संचिका नाम विस्तारण के रूप में। | ||
=== वीएक्स कार्य === | === वीएक्स कार्य === | ||
एक आंकड़े प्राप्त करने योग्य कर्नेल मापांक ( डीकेएम) प्रकार की परियोजना एक निषिद्ध संचिका उत्पन्न करने के लिए बनाई जा सकती है जिसे पश्चात् में एलडी अधिकार का | एक आंकड़े प्राप्त करने योग्य कर्नेल मापांक ( डीकेएम) प्रकार की परियोजना एक निषिद्ध संचिका उत्पन्न करने के लिए बनाई जा सकती है जिसे पश्चात् में एलडी अधिकार का प्रयोग करके कर्नेल स्थान पर भारण किया जा सकता है। यह आंकड़े प्राप्त करने योग्य कर्नेल मापांक अनएलडी अधिकार का प्रयोग करके भार रहित किया जा सकता है। | ||
=== सोलारिस === | === सोलारिस === | ||
Line 45: | Line 43: | ||
== द्विचर संगतता == | == द्विचर संगतता == | ||
लिनक्स कर्नेल मापांक के लिए एक स्थिर [[एपीआई]] | लिनक्स कर्नेल मापांक के लिए एक स्थिर [[एपीआई]] अथवा [[अनुप्रयोग बाइनरी इंटरफ़ेस|अनुप्रयोग द्विचर अंतराफलक]] प्रदान नहीं करता है। इसका अर्थ है कि विभिन्न कर्नेल संस्करणों के बीच आंतरिक संरचना और कार्य में अंतर हैं, जो संगतता समस्याओं का कारण बन सकता है। उन समस्याओं का मुकाबला करने के प्रयास में, प्रतीक संस्करण आंकड़े को <code>.modinfo</code> भारण करने योग्य [[निष्पादन योग्य और लिंक करने योग्य प्रारूप]] मापांक का खंड। मापांक भारण करने से पहले इस संस्करण जानकारी की समानता संचालन कर्नेल से की जा सकती है; यदि संस्करण असंगत हैं, तो मापांक भारण नहीं होगा। | ||
अन्य संचालन | अन्य संचालन प्रणाली , जैसे सोलारिस ( संचालन प्रणाली ), स्वतंत्र बीडीएस, मैकोज़, और माइक्रोसॉफ्ट विंडोज़ कर्नेल एपीआई और आवेदन द्विचर अंतराफलक को अपेक्षाकृत स्थिर रखते हैं, इस प्रकार इस समस्या से बचते हैं। उदाहरण के लिए, कर्नेल संस्करण 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> | ||
Line 64: | Line 62: | ||
=== मैकोज़ === | === मैकोज़ === | ||
[[OS X Yosemite|ओएस एक्स योसेमाइट]] और पश्चात् के प्रकाशन में, एक कर्नेल विस्तारण को [[ कोड हस्ताक्षर | सांकेतिक अंक चिह्नक]] | सांकेतिक अंक- सांकेतिक [[एप्पल डेवलपर|एप्पल विकासक]] प्रमाणपत्र के साथ होना चाहिए जो इसके लिए एक विशेष पात्रता रखता है। ऐसा विकासक प्रमाणपत्र | [[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> | ||
Revision as of 20:02, 21 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
. कर्नेल प्रारंभ होने से पहले मापांक को भारक से भी भारण किया जा सकता है, अथवा तो स्वचालित रूप से (के माध्यम से /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] ओएस एक्स एल कैप्टन और पश्चात् में प्रकाशन, यह प्रणाली अखंडता संरक्षण का खंड है।
मैकोज़ के पूर्वकालीन संस्करणों में, अथवा यदि केईएक्सटी चिह्नक अक्षम है, कर्नेल विस्तारण बंडल में भारण करने योग्य कर्नेल मापांक को निराधार उपयोगकर्ताओं के माध्यम से भारण किया जा सकता है यदि ओएस बंडल उपयोगकर्ता भार की अनुमति देता है गुण बंडल की संपत्ति सूची में वास्तविक पर समुच्चय है।[15] चूंकि , यदि निष्पादन योग्य सांकेतिक अंक संचिका सहित बंडल की कोई भी संचिका मार्ग और समूह चक्र के स्वामित्व में नहीं है, अथवा समूह अथवा अन्य के माध्यम से लिखने योग्य है, तो कर्नेल भारण करने योग्य मापांक को भारण करने का प्रयास विफल हो जाएगा।[16]
सोलारिस
कर्नेल मापांक में वैकल्पिक रूप से एक गुप्तलेखीय चिह्नक ईएलएफ अनुभाग हो सकता है जो सत्यापित सामानधानी नीति समायोजन के आधार पर भारण पर सत्यापित होता है। कर्नेल यह प्रयुक्त कर सकता है कि मापांक गुप्तलेखीय रूप से विश्वसनीय प्रमाणपत्रों के एक समुच्चय के माध्यम से सांकेतिक हैं; कुछ तत्परता आधारित पटल पर आईएलओएम में ओएस के बाहर विश्वसनीय प्रमाणपत्रों की सूची रखी जाती है। उपयोक्तास्थान के माध्यम से प्रारंभ किया गया कर्नेल मापांक भरण विश्वसनीय मार्ग से तभी संभव है जब पद्धतिसक्षम अपरिवर्तनीय वैश्विक क्षेत्र सुविधा के साथ चल रहा हो।
यह भी देखें
- वास्तविक उत्पाद भारण करने योग्य मापांक
संदर्भ
- ↑ "बहिष्कृत कर्नेल एक्सटेंशन और सिस्टम एक्सटेंशन विकल्प". Apple Inc. Retrieved 13 March 2021.
- ↑ "Kernel Extension Programming Topics: Introduction". Apple Inc. September 1, 2010. Archived from the original on May 4, 2013. Retrieved May 5, 2013.
- ↑ "गतिशील रूप से लोड करने योग्य कर्नेल मॉड्यूल का प्रबंधन और विकास करना". Hewlett-Packard. June 7, 2001.
- ↑ "ड्राइवर लोड होने पर क्या निर्धारित करता है". Microsoft Developer Network. Microsoft. November 21, 2012. Archived from the original on March 6, 2013. Retrieved May 5, 2013.
- ↑ "The Linux Kernel Module Programming Guide, section 2.2 "Compiling Kernel Modules"". Retrieved 2020-10-05.
- ↑ 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.
- ↑ "दागी हुई गुठली". The Linux kernel user’s and administrator’s guide.
- ↑ Jonathan Corbet (2006-03-24). "यूजर स्पेस से टैनिंग". LWN.net. Archived from the original on 2011-11-16. Retrieved 2011-10-03.
- ↑ "Novell support documentation: Tainted kernel". 2007-07-26. Retrieved 2011-10-03.
- ↑ Jonathan Corbet (April 27, 2004). "Being honest with MODULE_LICENSE". LWN.net. Archived from the original on November 2, 2012. Retrieved October 30, 2012.
- ↑ Exploiting Loadable Kernel Modules Archived 2012-02-04 at the Wayback Machine
- ↑ "Sysctl/kernel.txt". Archived from the original on April 15, 2013. Retrieved January 4, 2013.
- ↑ Kees Cook (2012-11-28). "Clean module disabling". outflux.net. Retrieved 2020-10-05.
- ↑ "कर्नेल एक्सटेंशन". Mac Developer Library. Apple. September 16, 2015. Archived from the original on August 17, 2016. Retrieved September 29, 2016.
- ↑ "कर्नेल एक्सटेंशन के लिए Info.plist गुण". Apple Inc. Archived from the original on September 26, 2012. Retrieved September 27, 2012.
- ↑ Darwin and macOS System Manager's Manual –