लिनक्स / युनिक्स कमाण्ड: इन्मोड

लिनक्स / युनिक्स कमांड इन्समोडले चलिरहेको कर्नेलमा लोड योग्य मोड्युल स्थापना गर्दछ। insmod ले कर्नेलको निर्यात चिन्ह तालिकाबाट सबै प्रतीकहरू समाधान गरेर चलिरहेको कर्नेलमा एक मोड्युल लिङ्क गर्ने प्रयास गर्दछ।

यदि मोड्युल फाइल नाम डाइरेक्टरी वा विस्तार बिना दिइएको छ भने, इन्मोड केही साधारण पूर्वनिर्धारित निर्देशिकामा मोड्युलको खोजी गर्नेछ। वातावरण चर MODPATH यो पूर्वनिर्धारित अधिलेखन गर्न प्रयोग गर्न सकिन्छ। यदि एक मोड्युल कन्फिगरेसन फाइल जस्तै /etet/modules.conf अवस्थित छ, यो MODPATH मा परिभाषित मार्गहरू ओवरराइड गर्नेछ।

वातावरण चर: MODULECONF लाई पूर्वनिर्धारित /etc/modules.conf (वा /etc/conf.modules ( डिसेन्ड गरिएको) बाट फरक कन्फिगरेसन फाइल चयन गर्न प्रयोग गर्न सकिन्छ। यो वातावरण चर माथि सबै परिभाषाहरू ओभरराइड हुनेछ।

जब वातावरण चर UNAME_MACHINE सेट गरिएको छ भने, मोड्युलले यन्त्र क्षेत्रको सट्टामा असम () syscall बाट यसको मूल्य प्रयोग गर्नेछ। यो मुख्य रूपमा प्रयोग गरिन्छ जब तपाईं 32-बिट प्रयोगकर्ता स्पेसमा 32-बिट प्रयोगकर्ता स्पेस संकलन गर्दै हुनुहुन्छ वा यसको विपरीत, UNAME_MACHINE लाई मोड्युलको प्रकारमा सेट गर्नुहोस् । हालको मोड्युलले मोडलका लागि पूर्ण क्रस बिल्ड मोडको समर्थन गर्दैन, यो होस्ट वास्तुकलाको 32- 64 र बिट संस्करणहरू छनौट गर्न सीमित छ।

विकल्पहरू

-e persist_name , - व्यक्तिवादी = persist_name

निर्दिष्ट गर्दछ कि मोड्युलका लागि कुनै पनि स्थिर डेटा लोड र लिखितमा पढ्न सकिन्छ जब मोड्युलको यो तत्काल लोड हुन्छ। यदि मोड्युलसँग कुनै स्थिर डेटा छैन भने यो विकल्प चुपचापलाई बेवास्ता गरिएको छ। लगातार डेटा इन्फोड द्वारा पढ्न यदि यो विकल्प उपस्थित हुन्छ, पूर्वनिर्धारित इन्फोडले लगातार डेटा प्रक्रिया गर्दैन।

एक आकृतिको रूप मा , "ई" " (खाली स्ट्रिङ " ) इन्मोडले रेजस्टर्डरको मानको रूपमा परिभाषित गरे जस्तै मोड्युल। कन्फमा परिभाषित गरिएको, यसको पछि फेला पर्यो मोड्युल खोजी पथको सापेक्ष मोड्युलको फाइलनाम द्वारा अनुगामी ".gz", ".o" वा ".mod"। यदि modules.conf " persistdir = " निर्दिष्ट गर्दछ (यानी persistdir खाली फिल्ड हो) यो आकृतिमा फारम चुपचाप उपेक्षित छ। (हेर्नुहोस् modules.conf (5)।)

-f , --force

मोड्युल लोड गर्दा पनि चलिरहेको कर्नेलको संस्करण र कर्नेलको संस्करण जसको लागि मोड्युल संकलन गरिएको छैन मेल खाँदैन। यो केवल कर्नेल संस्करण जाँच अधिलेखन गर्दछ, यसको प्रतीक नाम जाँचहरूमा कुनै प्रभाव छैन। यदि मोड्युलमा नामहरू नाम कर्नेलमा मेल खाँदैन भने मड्युल लोड गर्न इन्मोड बल गर्न कुनै तरिका छैन।

-h , --help

विकल्पहरूको सारांश प्रदर्शन गर्नुहोस् र तुरुन्तै निस्कनुहोस्।

--k , --हटोक

मोड्युलमा स्वत: सफा झण्डा सेट गर्नुहोस्। यो झण्डा मोडलहरू हटाउनका लागि कर्नेल (8) द्वारा प्रयोग गरिनेछ जुन केही अवधिमा प्रयोग गरिएको छैन - सामान्यतया एक मिनेट।

-L , -lock

एउटै मोड्युलको एक साथ लोड रोक्न बगाल (2) प्रयोग गर्नुहोस्।

-म , --म्याप

कर्नेल दबाइको घटनामा मोड्युल डिबग गर्न सजिलो बनाउन स्टडआउटमा लोड नक्सा लोड गर्नुहोस्।

-n , --noload

डमी रन, लोड केहि मोडलमा कर्नेलमा लोड गर्नुहोस्। यदि an -m वा -O द्वारा अनुरोध गरियो भने, रनले नक्सा वा ब्लॉब फाईल उत्पादन गर्नेछ। जब मोड्युल लोड भएन, वास्तविक कर्नेल लोड ठेगाना अज्ञात छैन त्यसैले नक्सा र ब्ल्लो फाइल 0x12340000 को एक मनमाने लोड लोडमा आधारित हुन्छ।

-o module_name , --name = module_name

स्पष्ट रूप देखि नाम वस्तु फाइल को आधार नाम देखि नाम को छोडेर को बजाय माड्यूल नाम।

-O blob_name , --बब्बा = blob_name

Blob_name मा बाइनरी वस्तु बचत गर्नुहोस्। परिणाम एक द्विआधारी ब्लू (कुनै ELF हेडरहरू) हो जुन वास्तवमा सेक्शन हेरफेर र स्थानान्तरण पछि कर्नेलमा लोड हुन्छ। विकल्प -m वस्तुको नक्सा प्राप्त गर्न सिफारिस गरिएको छ।

-p , --प्रोब

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

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

यो विकल्प SMP वा bigmem कर्नेलका लागि संस्करणित मोड्युलहरूसँग प्रयोग गर्न सकिन्छ, किनकि यस्तो मोड्युलमा आफ्नो उपनाममा अतिरिक्त उपसर्ग थपिएको छ। यदि कर्नेल प्रतीक संस्करणहरूसँग बनाइयो भने इन्फोड स्वचालित रूपमा "get_module_symbol" वा "inter_module_get" को परिभाषाबाट उपसर्ग हटाउनेछ, जसको मध्ये कुनै पनि कर्नेलमा मोड्युलहरू समर्थन गर्नुपर्दछ। यदि कर्नेलसँग कुनै प्रतीक संस्करण छैन तर मोड्युल प्रतीक संस्करणहरूसँग बनाइयो भने प्रयोगकर्ताले आपूर्ति गर्नुपर्छ - पी

-q , --quiet

कुनै अनसुलझे प्रतीकहरूको सूची छाप नगर्नुहोस्। संस्करण बेमेल बारे शिकायत नगर्नुहोस्। समस्या केवल insmod को बाहिर निकल स्थिति मा प्रतिबिंबित हुनेछ।

-r , - root

केही प्रयोगकर्ताहरूले गैर-रूट उपयोगकर्ताड्रिडमा मोड्युल संकलन गर्दछन् त्यसपछि मड्यूलहरू रूटको रूपमा स्थापना गर्नुहोस्। यो प्रक्रियाले मड्यूललाई ​​गैर-root userid द्वारा स्वामित्वमा छोड्न सक्छ, भले पनि मोड्युल डाइरेक्टरी रूटद्वारा स्वामित्व छ। यदि गैर-root userid सम्झौता गरिएको छ भने, एक घुसपैठकर्ता प्रयोगकर्ता प्रयोगकर्ता द्वारा स्वामित्व गरिएको अवस्थित मोड्युलहरू अधिलेखन गर्न सक्नुहुन्छ र यो पहुँचलाई बूट पहुँच माथि बूटस्ट्रैप गर्न प्रयोग गर्दछ।

पूर्वनिर्धारित रूपमा, मोड्युलहरू एक मोड्युल प्रयोग गर्ने प्रयास अस्वीकार गर्दछ जुन रूटमा स्वामित्व छैन। निर्दिष्ट गर्दै -r जाँच टगल गर्न र मूल मा लोड गर्न मिल्ने लोड अनुमति दिनुहोस् जुन मूलद्वारा स्वामित्व छैन। नोट: मोड चेकको लागि डिफल्ट मान मोड्युल कन्फिगर हुँदा परिवर्तन हुन सक्छ।

को प्रयोग रूट जाँच असक्षम गर्न वा कन्फिगरेसन समयमा "रूट जाँच नगर्नुहोस्" लाई पूर्वनिर्धारित सेटिङलाई एक प्रमुख सुरक्षा एक्सपोजर हो र सिफारिस गरिएको छैन।

-s , - syslog

टर्मिनलको सट्टा सबैलाई syslog (3) मा निर्गत गर्नुहोस्।

-S , --केल्लम्बाइज

लोड गरिएको मोड्युललाई क्यान्समेट्स डेटा राख्नका लागि बलियो गर्नुहोस्, भलेसम्म कर्नेलले समर्थन गर्दैन। यो विकल्प सानो प्रणालीको लागि हो जहाँ कर्नेल डेटाहरू बिना डेटा लोड हुन्छ तर चयन गरिएका मोड्युलहरू डिबगिङका लागि क्यालेन्डरहरू चाहिन्छ। यो विकल्प Red Hat Linux मा डिफल्ट छ।

-v , --भरबस

Verbose हुनुहोस्।

-V , --वर्णन

इन्मोडको संस्करण प्रदर्शन गर्नुहोस्।

-X , --export ; -x , --noexport

गर्नुहोस् र क्रमशः सबै मोड्युलको बाह्य प्रतीक निर्यात नगर्नुहोस्। पूर्वनिर्धारित प्रतीकहरूको निर्यात पूर्वनिर्धारित हो। यदि यो मोडले स्पष्ट रूपमा आफ्नो नियन्त्रित प्रतीक तालिका निर्यात गर्दैन भने यो विकल्प मात्र प्रभावकारी हुन्छ, र यसरी निराश हुन्छ।

-Y , --ksymoops ; -y , --noksymoops

केडीईएसएमप्प्स प्रतीकहरू ksyms मा जोड्नुहोस्। यदि यो मोड्युलमा ओप्स हो भने यो डिबगिङ राम्रो डिबग गर्न प्रदान गर्न केएसमुमुप्सद्वारा प्रयोग गरिन्छ। पूर्वनिर्धारित केएसमुमोप्स प्रतीकहरूको लागि पूर्वनिर्धारित हो। यो विकल्प -X / -x विकल्पहरूको स्वतन्त्र छ।

ksymoops प्रतीक प्रति लोड मोड्युल लगभग 260 बाइट्स जोड्छन्। जब सम्म तपाईं कर्नेल स्पेसमा साँच्चै छोटो भए तापनि यसको न्यूनतम साइजमा कमिशनहरू कम गर्न प्रयास गर्दै हुनुहुन्छ, डिफल्ट लिनुहोस् र अधिक सटीक उब डबगिङ प्राप्त गर्नुहोस्। ksymoops प्रतीकहरू लगातार मोड्युल डेटा बचत गर्न आवश्यक छ।

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

केवल कर्नेल संस्करणको विरुद्धमा मोडल संस्करणको संख्यात्मक भाग जाँच गर्नुहोस्, जस्तै यदि मोड्युल कुनै कर्नेलमा छ भने निर्णय गर्दा EXTRAVERSION लाई अनदेखा गर्नुहोस्। यो झण्डा स्वचालित रूपमा कर्नेल 2.5 को लागि सेट गरिएको छ, यो पहिलेको कर्नेलका लागि विकल्प हो।

मोड्युल परिमितिहरू

केहि मोड्युलले उनीहरूको अपरेसन अनुकूलन गर्न लोड-समय प्यारामिटरहरू स्वीकार गर्दछ। यी प्यारामिटरहरू प्रायः I / O पोर्ट र आईआरक्यू नम्बरहरू हुन् जुन मेशिन देखि मेशिनमा भिन्न हुन्छन् र हार्डवेयरबाट निर्धारण गर्न सक्दैन।

2.0 सीरीज कर्नेलहरूको लागि निर्मित मड्यूलहरूमा, कुनै पूर्णांक वा वर्ण सूचक प्रतीक प्यारामिटरको रूपमा व्यवहार गर्न सकिन्छ र परिमार्जन गरिएको हुन सक्छ। 2.1 सीरीज कर्नेलहरूमा सुरू गर्दै, प्रतीकहरू स्पष्ट रूपमा मानदण्डको रूपमा चिन्ह लगाइएका छन् जसले मात्र निर्दिष्ट मानहरू परिवर्तन हुन सक्छ। यसबाहेक, लोड समयमा प्रदान गरिएका मूल्यहरू जाँच गर्न जानकारी टाइप गर्नुहोस्।

पूर्णांक को मामला मा, सबै मान दशमलव, अल्ट्रा या हेक्साडेसिमल मा एक सी: 17, 021 या 0x11 मा हुन सक्छ। एरे तत्वहरू अल्पविराम द्वारा निर्दिष्ट अनुक्रम हुन्। तत्वहरू प्रशोधन गरेर तत्व छोड्न सकिन्छ।

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

GPL लाइसेन्स गरिएको मोड्युलहरू र संकेतहरू

कर्नेल 2.4.10 सँग सुरु हुँदै, मोड्युलहरू लाई इजाजतपत्र स्ट्रिङमा हुनुपर्छ, MODULE_LICENSE () प्रयोग गरी परिभाषित गरिएको। धेरै तारहरू GPL सँग मिल्ने रूपमा मान्यता प्राप्त हुन्छन्; कुनै पनि अन्य इजाजतपत्र स्ट्रिङ वा कुनै इजाजतपत्र मार्फत सबै माध्ययम स्वामित्वको रूपमा व्यवहार गरिएको छैन।

यदि कर्नेलले / proc / sys / kernel / tainted झण्डालाई समर्थन गर्दछ भने Insmod वा Tainted झण्डा GPL लाइसेन्स बिना एक मोड्युल लोड गर्दा '1' संग हुनेछ। यदि कर्नेलले मूर्ख समर्थन गर्दछ र एक मोड्युल लाइसेन्स बिना भरी हुन्छ भने चेतावनी दिइएको छ। एक चेतावनी सधैँ मोड्युलहरूका लागि जारी गरिएको छ जसमा MODULE_LICENSE () जुन GPL मिल्दो छैन, भित्री कर्नेलहरूमा पनि जसले मूर्ख समर्थन गर्दैन। जब नयाँ मोड्युलहरू पुरानो कर्नेलहरूमा प्रयोग गरिन्छ भने यसले चेतावनीहरूलाई कम गर्छ।

insmod -f (बल) मोड हुनेछ वा दाँत झण्डा कर्नेलहरूमा '2' सँग मेल खाने समर्थन गर्दछ। यो संधै एक चेतावनी मा समस्या छ।

केहि कर्नेल विकासकर्ताहरूलाई आवश्यक छ कि उनीहरूको कोडद्वारा निर्यात गरिएका प्रतीकहरू केवल GPL संगत इजाजतपत्रद्वारा मोडलहरूद्वारा प्रयोग गरिनुपर्दछ। यी प्रतीकहरू सामान्य EXPORT_SYMBOL को सट्टा EXPORT_SYMBOL_GPL द्वारा निर्यात गरिएको छ। कर्नेल द्वारा निर्यात गरिएको GPL-मात्र प्रतीकहरू र अन्य मोडलहरूले केवल GPL-compatible लाइसेन्ससँग मोड्युलका लागि मात्र देख्न सकिन्छ, यी प्रतीकहरू ' GPLONLY_ ' को उपसर्गको साथ / proc / ksyms मा देखा पर्दछ। इन्स्मोडले GPL लाइसेन्स मोडल लोड गर्दा प्रतीकहरूमा GPLONLY_ उपसर्गलाई बेवास्ता गर्छ त्यसैले मोड्युल केवल सामान्य प्रतीक नामलाई उपसर्गको बिना बुझाउँछ। GPL मात्र प्रतीकहरू GPL संगत इजाजतपत्र बिना मड्यूलहरू उपलब्ध छैनन्, यसमा सबैसँग कुनै पनि इजाजतपत्रसँग मोड्युलहरू समावेश छैनन्।

Ksymoops सहायता

केडीई ओप्सको डीबगिङको साथमा मोड्युलहरू प्रयोग गर्दा डिबग गर्नका लागि केहि चिन्ह थप्नका लागि इन्मोड डिफल्टहरू, -Y विकल्प हेर्नुहोस्। यी प्रतीकहरू __insmod_modulename_ सँग सुरु हुन्छ। प्रतीकहरू अनन्य बनाउन मोड्युलनाम आवश्यक छ। यो एक फरक भन्दा बढी मोड्युल नामहरू अन्तर्गत एकै पटक वस्तु लोड गर्न कानूनी छ। हाल, परिभाषित प्रतीकहरू निम्न हुन्:

__insmod_modulename_Oobjectfile_Mmtime_Vversion

objectfile फाइलको नाम हो जुन वस्तुबाट लोड गरिएको थियो। यसले यो सुनिश्चित गर्दछ कि ksymoops कोडसँग मेल खाने सही वस्तुमा मेल खान्छ। mtime ले त्यो फाइलमा हेक्स, शून्यमा अन्तिम संशोधित टाइमस्ट्याम्प हो भने यदि स्टेट असफल भयो। संस्करण कर्नेलमा संस्करण हो कि मोड्युलको लागि संकलित गरिएको थियो, -1 यदि संस्करण कुनै उपलब्ध छैन। मोडल हेडरको रूपमा _O प्रतीकको एउटै सुरूवात ठेगाना छ।

__insmod_modulename_Ssectionname_Llength

यो प्रतीक चयन गरिएको ELF खण्डहरूको सुरुमा देखिन्छ, हाल .text, .rodata, .data, .bss र .sbss। यो खण्डमा गैर-शून्य आकार छ भने यो मात्र देखिन्छ। सेक्शननाम ELF खण्डको नाम हो, लम्बाइ दशमलवको खण्डको लम्बाइ हो। यी प्रतीकहरू उपलब्ध छैनन् जब कुनै प्रतीक उपलब्ध छैनन् सेक्शनहरूमा ksymoops नक्सा ठेगानाहरू मद्दत गर्दछ।

__insmod_modulename_Ppersistent_filename

केवल इन्स्मोडद्वारा सिर्जना गरिएको यदि मोड्युलमा एक वा बढी प्यारामिटरहरू छन् जुन लगातार डेटा र फाईलनाममा लगातार डेटा बचत गर्नका लागि चिन्ह लगाइएको छ (हेर्नुहोस् - हेर्नुहोस्, माथि)।

कर्नेल ओप्स डिबग गर्नका साथ मोडलहरूमा अन्य समस्या यो हो कि ओप्स बीच / proc / kmsms/ proc / modules को सामग्री परिवर्तन गर्न सक्छ र तपाईले लग फाइल प्रशोधन गर्दा। यस समस्यालाई पराजित गर्न, यदि डाइरेक्ट्री / var / log / ksymoops अवस्थित छ भने इन्मोमोरमोडले स्वतः मिति / मिति /% Y% m को उपसर्गको साथ / proc / ksyms/ proc / modules मा / var / log / ksymoops लाई प्रतिलिपि गर्नेछ। % d% H% M% S`। प्रणाली व्यवस्थापकले ksymoops बताउन सक्छ जुन स्न्यापशट फाईलहरू प्रयोग गर्दा ओप डिबग गर्दा। यो स्वचालित प्रतिलिपि असक्षम गर्न कुनै स्विच छैन। यदि तपाईं यो हुन चाहनुहुन्न भने, सिर्जना / var / log / ksymoops नगर्नुहोस् । यदि त्यो डाइरेक्टरी अवस्थित छ भने, यो रूटमा स्वामित्व हुनुपर्छ र 644 वा 600 मोड हुनुपर्छ र तपाइँले यो स्क्रिप्ट हरेक दिन चलाउन वा त्यसो गर्नु पर्छ। तल लिपि Insmod_ksymoops_clean को रूपमा स्थापित गरिएको छ।

आधारभूत जानकारी जान्न

NAME

insmod - loadable कर्नेल मोड्युल स्थापना गर्नुहोस्

SYNOPSIS

insmod [-fhkLmnpqrsSvVxXyYN] [ई रेजिस्ट_नाम ] [ -मो module_name ] [-ओ blob_name ] [ -पी उपसर्ग ] मोड्युल [ प्रतीक = मूल्य ...]