Insmod और modprobe में क्या अंतर है?


जवाबों:


28

प्रति man insmod:

अधिकांश उपयोगकर्ता इसके बजाय modprobe का उपयोग करना चाहेंगे, जो अधिक चतुर है और मॉड्यूल निर्भरता को संभाल सकता है।


2
आह क्षमा करें, वह लाइन छूट गई।
NES

39

modprobeमॉड्यूल से पढ़ता है /lib/modules/$(uname -r)/modules.dep.bin(या .binप्रत्यय के बिना अगर अन्य फ़ाइल उपलब्ध नहीं है)। उसी फ़ाइल से, निर्भरताएँ भरी हुई हैं।

modprobe(जैसे फ़ाइल के लिए ) और उपनाम ( ) के लिए .koफ़ाइल का नाम स्वीकार करता है । बिल्टइन ( ) को भी मान्यता प्राप्त है, लेकिन चूंकि ये मॉड्यूल डिफ़ॉल्ट रूप से लोड किए गए हैं, इसलिए इस तरह के मॉड्यूल को मोडप्रॉब करने का कोई मतलब नहीं है।/lib/modules/$(uname -r)nvidia-currentdkms/nvidia-current.komodules.alias.binmodules.alias.bin

insmodदूसरी ओर फ़ाइलों को पथ स्वीकार करता है। मॉड्यूल में निवास करने के लिए नहीं है /lib/modules/$(uname -r), लेकिन निर्भरता स्वचालित रूप से लोड नहीं हैं। यह निचला कार्यक्रम है जिसका उपयोग modprobeमॉड्यूल लोड करने के लिए किया जाता है ।

मॉड्यूल से संबंधित अन्य कार्यक्रम हैं rmmodऔर modinfo

rmmodसे नाम के आधार पर कर्नेल नाम हटाता है /proc/modules। यह नाम आवश्यक रूप से उसी के समान नहीं होना चाहिए जो किसी को दिया गया था modprobe( nvidia-currentफ़ाइल के लिए, यह nvidiaउदाहरण के लिए है)।

modinfoकिसी फ़ाइल नाम या फ़ाइल नाम को बिना .koप्रत्यय के स्वीकार करता है /lib/modules/$(uname -r)


3

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

लेकिन अगर insmodइसका उपयोग किया जाता है, तो यह निर्भरता को लोड नहीं करेगा, और इसलिए यह संकलन त्रुटियों की तरह देगा Unresolved symbols। इस मामले में, हमें मैन्युअल रूप से निर्भर मॉड्यूल की तलाश करनी होगी और त्रुटियों को हल करने के लिए उन्हें लोड करने की आवश्यकता होगी।


0

Modprobe उपयोगिता एक त्वरित उल्लेख के लायक है। modprobe, insmod की तरह, एक mod-ule को कर्नेल में लोड करता है। यह अलग है कि यह देखने के लिए लोड किए जाने वाले मॉड्यूल को देखेगा कि क्या यह उन प्रतीकों का संदर्भ देता है जो वर्तमान में कर्नेल में परिभाषित नहीं हैं। यदि ऐसा कोई संदर्भ मिलता है, तो modprobe वर्तमान मॉड्यूल खोज पथ में अन्य मॉड्यूल की तलाश करता है जो प्रासंगिक प्रतीकों को परिभाषित करते हैं। जब modprobe उन मॉड्यूल को ढूँढता है (जो लोड किए जा रहे मॉड्यूल द्वारा आवश्यक हैं), तो यह उन्हें कर्नेल में भी लोड करता है। यदि आप इसके बजाय इस स्थिति में insmod का उपयोग करते हैं, तो कमांड सिस्टम लॉगफ़ाइल में छोड़े गए "अनसुलझे प्रतीकों" संदेश के साथ विफल हो जाता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.