Linux / Unix कमांड: insmod

Linux / Unix आदेश insmod कार्यरत कर्नलमध्ये लोड करण्यायोग्य मॉड्यूल स्थापित करते . insmod कर्नलच्या एक्सपोर्ट केलेल्या सिंबिल टेबलपासून सर्व चिन्हांचे निर्धारण करून कार्यरत कर्नलमध्ये मॉड्यूलला जोडण्याचा प्रयत्न करतो

निर्देशिक किंवा एक्सटेन्शनशिवाय मॉड्युल फाइल नाव दिले असल्यास insmod काही सामान्य डिफॉल्ट डिरेक्टरीत मॉड्यूल शोधेल. हे डीफॉल्ट अधिलिखित करण्यासाठी पर्यावरण चर MODPATH वापरले जाऊ शकते. /etc/modules.conf मॉड्यूल संरचना फाइल जसे की /etc/modules.conf अस्तित्वात असल्यास, तो MODPATH मध्ये निर्धारित मार्ग अधिलिखित करेल

पर्यावरण वेरियेबल MODULECONF /etc/modules.conf (किंवा /etc/conf.modules (deprecated)) पासून वेगळ्या संरचना फाइल निवडण्यासाठी वापरली जाऊ शकते. हे पर्यावरण व्हेरिएबल वरील सर्व व्याख्या अधिलिखित करेल.

जेव्हा पर्यावरण परिवर्तनाचा UNAME_MACHINE सेट केला जातो, तेव्हा modutils uname () syscall पासून मशीनच्या क्षेत्राऐवजी त्याचा मूल्य वापरेल हे मुख्यतः 32-बिट वापरकर्ता स्पेस किंवा उलट 64-बिट मॉड्यूल्स संकलित करत असताना, UDU_MACHINE ला मॉड्यूल्सच्या प्रकारावर सेट केल्यावर असते. सध्याचे मोड्यूल्स मॉड्युड्ससाठी पूर्ण क्रॉस बिल्ड मोडचे समर्थन करत नाहीत, होस्ट आर्किटेक्चरच्या 32- आणि 64-बिट आवृत्त्यांमध्ये ते निवडणे मर्यादित आहे.

पर्याय

-e persist_name , --persist = persist_name

मॉड्यूलसाठी कुठलीही सक्तीची माहिती लोड वर वाचली जाते आणि मॉड्यूलचा तत्काल बंद असताना त्यात लिहीले जाते. मॉड्यूलकडे सक्तीचे डाटा नसल्यास हा पर्याय शांतपणे दुर्लक्ष करतो. हा पर्याय उपस्थित असल्यास insmod द्वारे सतत डेटा वाचला जातो, डिफॉल्ट द्वारे insmod सद्य डेटावर प्रक्रिया करत नाही.

लघुलिपीच्या रूपात , -e (एक रिक्त स्ट्रिंग) insmod द्वारे modules.conf मध्ये परिभाषित केल्याप्रमाणे persistdir ची व्हॅल्यू म्हणून निर्देशित केले जाते, मॉड्यूल शोध पथच्या तुलनेत मॉडेलचे फाईलचेनाव ते सापडले होते, ते कोणतेही ".gz", ".o" किंवा ".mod" Modules.conf " persistdir = " (म्हणजे persistdir एक रिक्त फिल्ड आहे) निर्दिष्ट करते, तर हे लघुलिपी फॉर्म शांतपणे दुर्लक्षीत केले जाते. ( Modules.conf (5) पहा.)

-f , --force

कार्यरत कर्नलची आवृत्ती आणि कर्नलच्या आवृत्ती ज्यासाठी मॉड्यूल संकलित केले होते, ती जुळत नसली तरीही मॉड्यूल लोड करण्याचा प्रयत्न करा. हे केवळ कर्नल आवृत्ती तपासणी अधिलिखित करते, त्याचा चिन्हाचे नाव तपासण्यावर काहीही परिणाम नाही. मॉड्यूलमधील चिन्ह नावे कर्नलशी जुळत नसल्यास मॉड्यूल लोड करण्यासाठी insmod ला वाढविण्याचा कोणताही मार्ग नाही.

-हा , - मदत

पर्यायांचा सारांश प्रदर्शित करा आणि लगेच बाहेर पडा

-के , --ऑटोक्लेयन

मॉड्यूलवर स्वयं-साफ ध्वज सेट करा. या ध्वजाचा वापर कार्नल्ड (8) द्वारा केला जाईल जे काही कालावधीमध्ये वापरले गेले नसलेले मॉड्यूल काढून टाकेल - साधारणत: एक मिनिट.

-एल , --लॉक

त्याच मॉड्यूलचे एकाचवेळी लोड टाळण्यासाठी झडपा (2) वापरा.

-एम , --मॅप

Stdout वरील लोड नकाशा आउटपुट करा, कर्नल पॅनीकच्या घटनेत मॉड्यूल डीबग करणे सोपे करते.

-n , --noload

डमी चालवा, मॉड्यूल कर्नलमध्ये लोड केल्याशिवाय सर्व काही करा. एखादा -एम किंवा -ओ द्वारे विनंती केल्यास, रन एक नकाशा किंवा ब्लॉब फाइल तयार करेल. मॉड्यूल भारित नसल्यामुळे, वास्तविक कर्नेल लोड पत्ता अज्ञात आहे म्हणून नकाशा आणि ब्लॉब फाइल 0x12340000 च्या एखादा वैध पत्ता वर आधारित आहेत.

-o मॉड्यूल_नाव , --name = module_name

स्रोत ऑब्जेक्ट फाईलच्या मूळ नावावरून नाव प्राप्त करण्याऐवजी मॉड्यूलचे नाव द्या.

-ओ ब्लॉब_नाव , --ब्लॉब = ब्लॉब_नाव

Blob_name मध्ये बायनरी ऑब्जेक्ट जतन करा. परिणाम म्हणजे बायनरी ब्लॉब (नाही एएलएफ हेडर्स) जे कळफलक मध्ये लोड केले आहे आणि ते नंतर फेरबदल केल्यानंतर पुनर्रचना. ऑब्जेक्टचा नकाशा मिळविण्याकरिता पर्याय- m ची शिफारस आहे.

-p , --probe

तो यशस्वीरित्या लोड केला गेला आहे का हे पाहण्यासाठी मॉड्यूल तपासा . यात ऑब्जेक्ट फाईल मॉड्यूल पाथमध्ये शोधणे, वर्जनची संख्या तपासणे आणि चिन्हे सोडवणे यामध्ये समावेश आहे. हे पुनर्स्थापना तपासत नाही किंवा नकाशा किंवा ब्लॉब फाईल देखील तयार करत नाही.

-P उपसर्ग , --prefix = उपसर्ग

हा पर्याय एसएमपी किंवा बीएमएमएम कर्नलसाठी आवृत्तीत केलेल्या मॉड्यूल्ससह वापरला जाऊ शकतो, कारण अशा मॉड्यूल्सच्या त्यांच्या प्रतीके नावांमध्ये अतिरिक्त उपसर्ग जोडला जातो. जर कर्नल प्रतीक आवृत्त्यांसह तयार केले गेले तर insmod आपोआप "get_module_symbol" किंवा "inter_module_get" ची परिभाषा पासून उपसर्ग काढेल, ज्यापैकी एक मॉड्यूलसाठी समर्थन करणारा कोणत्याही कर्नलमध्ये अस्तित्वात असणे आवश्यक आहे. जर कर्नेलमध्ये कोणतेही चिन्ह आवृत्त नसतील परंतु मॉड्यूल चिन्हांच्या आवृत्तींसह तयार केले गेले तर वापरकर्त्याला -पी आवश्यक आहे.

-q , --क्विट

कोणत्याही निराकरण केलेल्या चिन्हेंची यादी मुद्रित करू नका. आवृत्ती जुळण्याबद्दल तक्रार करू नका. समस्या केवळ insmod च्या बाहेर पडण्याच्या स्थितीत प्रतिबिंबित होईल.

-r , - root

काही वापरकर्ते विना-रूट userid अंतर्गत मॉड्यूल संकलित करतात आणि नंतर रूट म्हणून मोड्यूल्स स्थापित करतात. ही प्रक्रिया गैर-रूट userid मालकीचे मॉड्यूल्स सोडू शकते, जरी मोड्यूल्स निर्देशिका रूट द्वारे मालकीची असली तरी गैर-रूट userid सह तडजोड केल्यास, घुसखोर त्या userid मालकीचे विद्यमान मॉड्यूल्स अधिलिखित करेल आणि रूट प्रवेश पर्यंत या एक्सपोजरचा वापर करा.

पूर्वनिर्धारितपणे, modutils रूट द्वारे नियंत्रीत केलेली मॉडयूल वापरण्यासाठीचे प्रयत्न नाकारतील निर्दिष्ट करणे -r चेक टॉगल करेल व root द्वारे स्वतःच्या मालकीचे नसलेल्या मोड्यूल्स लोड करण्यास परवानगी देईल. टिप: modutils कॉन्फिगर केल्यावर रूट चेकसाठी डीफॉल्ट मूल्य बदलले जाऊ शकते.

-r मुळे रूट तपासणी बंद करण्यास किंवा कॉन्फिगरेशन वेळी "मूळ रीत तपासणीकरिता" डीफॉल्ट सेट करणे हा एक मोठा सुरक्षा एक्सपोजर आहे आणि त्याची शिफारस केलेली नाही.

-s , - syslog

सर्वप्रथम टर्मिनलवर सिस्टींगमध्ये (3) आउटपुट करा.

-S , --काळे शब्द

लोड केलेले मॉड्यूलला कॉलसेस्मेन्ट डेटा असा सक्ती करा, जरी कर्नल त्याच्यास समर्थन देत नसला तरीही हा पर्याय लहान प्रणाल्यांसाठी आहे जेथे कर्नल कोल्सेझ डेटाशिवाय लोड केला जातो परंतु निवडलेल्या मॉड्यूल्सना डिबगिंगसाठी कॉलसेल्सची आवश्यकता असते . Red Hat Linux वरील हा पर्याय पूर्वनिर्धारित आहे.

-v , --verbose

शब्दशः व्हा.

-व्ही , - व्ह्यूशन

Insmod चे आवृत्ती प्रदर्शित करा

-एक्स , - निर्यात ; -x , --noexport

अनुक्रमे अनुक्रमे सर्व बाह्य चिन्हांची निर्यात करू नका. निर्यात करण्याजोगी चिन्हेंसाठी मूलनिर्धारित आहे हा पर्याय केवळ प्रभावी आहे जर मॉड्यूल विशिष्टपणे त्याच्या स्वत: च्या नियंत्रित सिंबल टेबलची निर्यात करत नाही, आणि त्यामुळे त्याचे नापसंत केले जाते.

-Y , --कुसीओप्स ; -y , --noksymoops

Ksyms करण्यासाठी ksymoops प्रतीक जोडू नका या चिन्हास ksymoops द्वारे या मॉड्यूलमध्ये अरेरे असल्यास चांगले डिबगिंग पुरवण्यासाठी वापरले जाते. Ksymoops चिन्हे परिभाषित करण्यासाठी मुलभूत आहे. हा पर्याय -X / -x पर्यायांपासून स्वतंत्र आहे.

ksymoops चिन्ह लोड मॉडेल सुमारे अंदाजे 260 बाइट जोडा. आपण खरोखर कर्नेल जागेत लहान नसल्यास आणि त्याच्या कमीत कमी आकारात ksyms कमी करण्याचा प्रयत्न करीत असल्यास, डीफॉल्ट घ्या आणि अधिक अचूक ओह डिबगिंग मिळवा ksymoops चिन्हांना सतत मोड्यूल डेटा सेव्ह करणे आवश्यक आहे.

-एन , - संख्यात्मक-फक्त

फक्त मॉडेल आवृत्तीचा कर्नल आवृत्ती विरूद्ध तपासा, म्हणजेच मॉड्यूल कर्नलशी संबंधित आहे काय हे ठरविताना EXTRAVERSION दुर्लक्ष करा. हे फ्लॅग कर्नलसाठी पुढे सेट केले जाते 2.5 पुढे, पूर्वीचे कर्नल करीता वैकल्पिक आहे

मॉड्यूल घटक

काही मॉड्यूल त्यांचे ऑपरेशन सानुकूल करण्यासाठी लोड-वेळ मापदंड स्वीकारतात. हे मापदंड अनेकदा I / O पोर्ट व IRQ नंबर असतात जे मशीन टू मशीनमध्ये बदलतात आणि हार्डवेअरवरून निर्धारित केले जाऊ शकत नाहीत.

2.0 श्रृंखला कार्बनसाठी तयार केलेल्या मॉड्यूल्समध्ये, कोणतेही पूर्णांक किंवा अक्षर पॉइंटर चिन्ह पॅरामीटर मानले जाऊ शकते आणि सुधारित केले जाऊ शकते. 2.1 मालिका कर्नलच्या प्रारंभी, चिन्हे स्पष्टपणे मापदंड म्हणून चिन्हांकित केली जातात ज्यायोगे फक्त विशिष्ट मूल्ये बदलता येतील. शिवाय, लोड वेळेत प्रदान केलेल्या मूल्यांची तपासणी करण्यासाठी प्रकार माहिती प्रदान केली आहे.

पूर्णांकाच्या बाबतीत, सर्व मूल्ये डेसिमल, ऑक्टल किंवा हेक्झाडेसीमल ला ला सी: 17, 021 किंवा 0x11 मध्ये असू शकतात. अॅरे घटक कॉमा द्वारे विभक्त केलेले क्रम निर्दिष्ट केलेले आहेत. घटक गमावुन घटक वगळले जाऊ शकतात.

2.0 मालिका मॉड्यूल्समध्ये, एका संख्येसह सुरू न केलेल्या मूल्यांना स्ट्रिंग मानले जाते. 2.1 मध्ये सुरुवात करताना, पॅरामीटर प्रकाराची माहिती स्ट्रिंग म्हणून मूल्य अर्थातांची व्याख्या करते की नाही हे दर्शविते. मूल्य दुहेरी अवतरण ( " ) ने सुरू होत असल्यास, स्ट्रिंग C, escape sequences आणि सर्व प्रमाणेच लावले जाते. लक्षात ठेवा की शेल प्रॉमप्ट वरून, कोट्सना स्वतःला शेल अर्थ लावण्यापासून संरक्षित करण्याची आवश्यकता असू शकते.

GPL परवानाकृत मॉड्यूल आणि प्रतीक

कर्नल 2.4.10 सह सुरू होणाऱ्या, मॉड्यूल्सला लायसन्स स्ट्रिंग असावी, परिभाषित केलेली MODULE_LICENSE () . अनेक स्ट्रिंग जीपीएल सुसंगत म्हणून ओळखले जातात; कोणतीही इतर परवाना स्ट्रिंग किंवा सर्व प्रकारचे परवाना असे नाही की मॉड्यूलला मालकी हक्क म्हणून मानले जाते

जर कर्नल / proc / sys / kernel / tainted flag चे समर्थन करेल तर insmod किंवा GPL लायसन्सशिवाय मॉड्यूल लोड करताना '1' सह दूषित ध्वज असेल. जर कार्ननचे समर्थन टायचेंग असेल आणि लायसन्सशिवाय मॉड्यूल लोड केले तर चेतावणी दिलेले आहे. मॉडिअल्ससाठी नेहमीच चेतावणी जारी केली जाते ज्यात जी मॉडेल्स आहेत (जी) जीपीएल सुसंगत नाही, अगदी जुन्या कर्नलवर जो टाइटिंगला समर्थन देत नाहीत. यामुळे जुन्या कर्नलवर नवीन modutils वापरल्यास इशारे कमी करते.

insmod -f (force) मोड किंवा tainting समर्थन की कर्नल वर '2' सह दूषित ध्वज किंवा होईल. नेहमी एक चेतावणी जारी करते.

काही कर्नेल विकासकांना आवश्यक आहे की त्यांच्या कोडद्वारे निर्यात केलेले चिन्ह फक्त जीपीएल सुसंगत परवाना असलेल्या मॉड्यूल्सद्वारे वापरले जाणे आवश्यक आहे. हे प्रतीक सामान्य EXPORT_SYMBOL ऐवजी EXPORT_SYMBOL_GPL द्वारे निर्यात केले जातात. कर्नलद्वारे आणि इतर मॉड्यूल्सद्वारे निर्यात केलेल्या जीपीएल- फक्तच चिन्हे फक्त जीपीएल-संगत परवाना असलेल्या मोड्यूल्सवर दृश्यमान असतात, हे प्रतीक ' GPLONLY_ ' च्या प्रिफिक्ससह / proc / ksyms मध्ये दिसून येतात. insmod GPLONLY_ प्रिफिक्सकडे GPLON लायसेंस मॉड्यूल लोड करत असताना प्रतीक्षेत आहे म्हणून मॉड्यूल फक्त प्रत्ययविना सामान्य चिन्हाचे नाव घेते. GPL फक्त प्रतीके जीपीएल सुसंगत परवानाशिवाय मोड्यूल्सकरिता उपलब्ध नाहीत, यात कोणतेही परवाने नसलेले मॉड्यूल समाविष्ट आहेत.

केसमयो सहायता

कर्नल डिबगिंग सह मदत करण्यासाठी अरेरे मॉड्यूल वापरताना, insmod डीफॉल्ट ksyms काही चिन्हे जोडण्यासाठी, -Y पर्याय पहा. हे प्रतीक __insmod_modulename_ ने सुरू होतात . चिन्हांचे अनन्य बनवण्यासाठी मॉड्युलिन आवश्यक आहे. वेगवेगळे मॉड्यूल नावांखाली एकापेक्षा अधिक ऑब्जेक्ट लोड करणे हे कायदेशीर आहे. सध्या परिभाषित केलेले चिन्ह आहेत:

__insmod_modulename_Oobjectfile_Mmtime_Vversion

ऑब्जेक्टाइल फाईलचे नाव आहे जी ऑब्जेक्ट ने लोड केली होती. हे सुनिश्चित करते की ksymoops योग्य ऑब्जेक्ट कोड जुळवू शकतात. mtime हे त्या फाइलवरील शेवटचे बदल केलेले टाइमस्टॅम्प हेक्समध्ये आहे, शून्य असल्यास stat अयशस्वी झाले. आवृत्ती कर्नल आवृत्ती आहे ज्यासाठी मॉड्यूल संकलित केले गेले, -1 असल्यास आवृत्ती उपलब्ध नाही _O प्रतीक हे मॉड्यूल शीर्षलेखावर समान प्रारंभ पत्ता आहे.

__insmod_modulename_Ssectionname_Llength

हे प्रतीक निवडलेल्या ELF विभागांच्या सुरूवातीस, सध्या. मजकूर, .rodata, .data, .bss आणि .sbss हे केवळ तेव्हाच दिसते जेव्हा विभागात शून्य-शून्य आकार आहे. sectionname हे ELF विभागाचे नाव आहे, लांबी ही दशांश विभागातील लांबी आहे. हे चिन्हे कुठलेही चिन्ह उपलब्ध नसताना विभागांना ksymoops मॅप पत्ते मदत करतात.

__insmod_modulename_Ppersistent_filename

Insmod द्वारे निर्मीत केले असल्यास मॉड्यूलमध्ये एक किंवा अधिक मापदंड आहेत जे निरंतर डेटा म्हणून चिन्हांकित केले जातात आणि सक्तीचे डेटा (उपरोक्त -e पहा) जतन करण्यासाठी फाईलनाव उपलब्ध आहे.

डीबगींग कर्नलसह दुसरी समस्या मॉड्यूलमधील अरेरे म्हणजे / proc / ksyms आणि / proc / modules ची सामग्री ओहोच्या दरम्यान बदलू शकते आणि जेव्हा आपण लॉग फाइलवर प्रक्रिया करता ही समस्या दूर करण्यास मदत करण्यासाठी, जर / var / log / ksymoops डिरेक्ट्री विद्यमान असेल तर insmod आणि rmmod आपोआप / proc / ksyms आणि / proc / modules / var / log / ksymoops मध्ये ` DATE +% Y% m च्या उपसर्गसह कॉपी करेल. % d% H% M% S` सिस्टम प्रशासक कस्योमोप्स सांगू शकतो जे उर्फ डीबग करतेवेळी वापरण्यासाठी स्नॅपशॉट फाइल्स असतात. ही स्वयंचलित प्रत अक्षम करण्यासाठी कोणतेही स्विच नाही. जर तुम्हाला नको असेल तर / var / log / ksymoops बनवू नका . ती निर्देशिका अस्तित्वात असल्यास, ती आपल्या मालकीची असावी आणि मोड 644 किंवा 600 असली पाहिजे आणि आपण दररोज किंवा ते ही स्क्रिप्ट चालवू शकता. खालील स्क्रिप्ट insmod_ksymoops_clean म्हणून स्थापित केले आहे.

मूलभूत माहिती जाणून घेणे

NAME

insmod - लोड करण्यायोग्य कर्नल मॉड्युल प्रतिष्ठापित करा

सुप्रसिद्ध

insmod [-fhkLmnpqrsSvVxXyYN] [-e persist_name ] [-o module_name ] [-O blob_name ] [ -पी उपसर्ग ] मॉड्यूल [ प्रतीक = मूल्य ...]