जवाबों:
modprobe
मॉड्यूल से पढ़ता है /lib/modules/$(uname -r)/modules.dep.bin
(या .bin
प्रत्यय के बिना अगर अन्य फ़ाइल उपलब्ध नहीं है)। उसी फ़ाइल से, निर्भरताएँ भरी हुई हैं।
modprobe
(जैसे फ़ाइल के लिए ) और उपनाम ( ) के लिए .ko
फ़ाइल का नाम स्वीकार करता है । बिल्टइन ( ) को भी मान्यता प्राप्त है, लेकिन चूंकि ये मॉड्यूल डिफ़ॉल्ट रूप से लोड किए गए हैं, इसलिए इस तरह के मॉड्यूल को मोडप्रॉब करने का कोई मतलब नहीं है।/lib/modules/$(uname -r)
nvidia-current
dkms/nvidia-current.ko
modules.alias.bin
modules.alias.bin
insmod
दूसरी ओर फ़ाइलों को पथ स्वीकार करता है। मॉड्यूल में निवास करने के लिए नहीं है /lib/modules/$(uname -r)
, लेकिन निर्भरता स्वचालित रूप से लोड नहीं हैं। यह निचला कार्यक्रम है जिसका उपयोग modprobe
मॉड्यूल लोड करने के लिए किया जाता है ।
मॉड्यूल से संबंधित अन्य कार्यक्रम हैं rmmod
और modinfo
।
rmmod
से नाम के आधार पर कर्नेल नाम हटाता है /proc/modules
। यह नाम आवश्यक रूप से उसी के समान नहीं होना चाहिए जो किसी को दिया गया था modprobe
( nvidia-current
फ़ाइल के लिए, यह nvidia
उदाहरण के लिए है)।
modinfo
किसी फ़ाइल नाम या फ़ाइल नाम को बिना .ko
प्रत्यय के स्वीकार करता है /lib/modules/$(uname -r)
।
modprobe
एक बुद्धिमान कमांड है, यह मॉड्यूल लोड करते समय निर्भरता की तलाश करता है। मान लीजिए, अगर मैंने एक मॉड्यूल लोड किया है, जिसमें कुछ अन्य मॉड्यूल में परिभाषित प्रतीक हैं (यह मॉड्यूल पथ मुख्य मॉड्यूल के अंदर दिया गया है)। इसलिए, modprobe
मुख्य मॉड्यूल और आश्रित मॉड्यूल को लोड करता है।
लेकिन अगर insmod
इसका उपयोग किया जाता है, तो यह निर्भरता को लोड नहीं करेगा, और इसलिए यह संकलन त्रुटियों की तरह देगा Unresolved symbols
। इस मामले में, हमें मैन्युअल रूप से निर्भर मॉड्यूल की तलाश करनी होगी और त्रुटियों को हल करने के लिए उन्हें लोड करने की आवश्यकता होगी।
Modprobe उपयोगिता एक त्वरित उल्लेख के लायक है। modprobe, insmod की तरह, एक mod-ule को कर्नेल में लोड करता है। यह अलग है कि यह देखने के लिए लोड किए जाने वाले मॉड्यूल को देखेगा कि क्या यह उन प्रतीकों का संदर्भ देता है जो वर्तमान में कर्नेल में परिभाषित नहीं हैं। यदि ऐसा कोई संदर्भ मिलता है, तो modprobe वर्तमान मॉड्यूल खोज पथ में अन्य मॉड्यूल की तलाश करता है जो प्रासंगिक प्रतीकों को परिभाषित करते हैं। जब modprobe उन मॉड्यूल को ढूँढता है (जो लोड किए जा रहे मॉड्यूल द्वारा आवश्यक हैं), तो यह उन्हें कर्नेल में भी लोड करता है। यदि आप इसके बजाय इस स्थिति में insmod का उपयोग करते हैं, तो कमांड सिस्टम लॉगफ़ाइल में छोड़े गए "अनसुलझे प्रतीकों" संदेश के साथ विफल हो जाता है