systemd: बूट समय पर modprobe कमांड को स्वचालित करें


20

मेरा वितरण फेडोरा 17 सूक्ति है। हर बार जब मैं अपने कंप्यूटर को रीबूट / रीस्टार्ट करता हूं तो मुझे इस कमांड को रूट के रूप में चलाने की आवश्यकता होती है:

modprobe rt2800usb

मैं इसे स्थायी कैसे बना सकता हूं?


1
नमस्ते, आपके लिए पहला सवाल धन्यवाद। यह अच्छा होगा यदि आप उल्लेख कर सकते हैं कि आप किस लिनक्स वितरण का उल्लेख कर रहे हैं :)
बोन्सी स्कॉट

1
@BonsiScott वितरण को संभवतः प्रश्न पाठ में जोड़ा जाना चाहिए, लेकिन टैग फेडोरा का कहना है।
पदावनत करें

(इसके अलावा, अपने स्वयं के उत्तर को हटा दिया क्योंकि यह फेडोरा-विशिष्ट नहीं है)
बोन्सी स्कॉट

@ बोंसीकॉट, आपका जवाब दूसरों के लिए अच्छी तरह से उपयोगी हो सकता है ...
वॉनब्रांड

जवाबों:


34

किसी भी डिस्ट्रो पर systemdआपके द्वारा मॉड्यूल को स्वचालित रूप से लोड किया जा सकता है modules-load.d:

  • विन्यास फाइल बनाएँ:

    /etc/modules-load.d/rt2800usb.conf

  • इसे खोलें और इस तरह संपादित करें (मॉड्यूल नाम जोड़ें):

    rt2800usb

  • अगली बार जब आप रिबूट करते हैं तो मॉड्यूल को स्वचालित रूप से लोड किया जाना चाहिए


समस्या निवारण:

जांचें कि क्या systemdसेवा ने मॉड्यूल लोड किया है:

systemctl status systemd-modules-load.service

आउटपुट इस तरह दिखना चाहिए:

systemd-modules-load.service - Load Kernel Modules
  Loaded: loaded (/usr/lib/systemd/system/systemd-modules-load.service; static)
  Active: active (exited) since Wed, 03 Apr 2013 22:50:57 +0000; 46s ago
        Docs: man:systemd-modules-load.service(8)
              man:modules-load.d(5)
 Process: 260 ExecStart=/usr/lib/systemd/systemd-modules-load (code=exited, status=0/SUCCESS)

अंतिम पंक्ति में PID(प्रक्रिया आईडी) और निकास कोड होता है। status=0/SUCCESSइसका मतलब है कि मॉड्यूल सफलतापूर्वक डाला गया था, इसकी पुष्टि:

journalctl -b _PID=260

उत्पादन किया जा रहा है:

Apr 03 22:50:57 mxhst systemd-modules-load[260]: Inserted module 'rt2800usb'

विफलता के मामले में, systemctlआउटपुट इस तरह दिखता है:

systemd-modules-load.service - Load Kernel Modules
  Loaded: loaded (/usr/lib/systemd/system/systemd-modules-load.service; static)
  Active: failed (Result: exit-code) since Wed, 03 Apr 2013 22:50:59 +0000; 43s ago
        Docs: man:systemd-modules-load.service(8)
              man:modules-load.d(5)
 Process: 260 ExecStart=/usr/lib/systemd/systemd-modules-load (code=exited, status=1/FAILURE)

journalctl -bरिपोर्टिंग के साथ :

Apr 03 22:50:59 mxhst systemd-modules-load[260]: Failed to find module 'fakert2800usb'

जब निकास कोड होता है 0/SUCCESSतो इसका मतलब है कि आपका मॉड्यूल सफलतापूर्वक डाला गया है; चल रहा है

lsmod | grep rt2800

पुष्टि करनी चाहिए कि:

rt2800usb              26854  0 
rt2x00usb              19757  1 rt2800usb
rt2800lib              64762  1 rt2800usb
rt2x00lib              66520  3 rt2x00usb,rt2800lib,rt2800usb
mac80211              578735  3 rt2x00lib,rt2x00usb,rt2800lib

यदि lsmodआउटपुट पुष्टि नहीं करता है (सेवा निकास कोड होने के बावजूद 0/SUCCESS) इसका मतलब है कि लोड किए जाने के बाद मॉड्यूल को हटा दिया गया है modules-load.service। एक संभावित कारण एक और *.confफाइल है जो मॉड्यूल को ब्लैकलिस्टेड करती है। एक पंक्ति की तरह देखें:

blacklist rt2800usb

में /etc/modprobe.d/*.conf, /usr/lib/modprobe.d/*.confया /run/modprobe.d/*.confइसे टिप्पणी / इसे हटा दें।


मैंने ऐसा किया है, लेकिन मॉड्यूल रिबूट पर लोड नहीं हुआ।
कुछ

क्या ऐसा इसलिए है क्योंकि रूट फ़ाइल का स्वामी है?
कुछ '

जब मैं रिबूट करता हूं, तब भी मुझे मॉडपब कमांड करना पड़ता है। क्या यह सूचीबद्ध नहीं है क्योंकि लिस्टिंग के बाद मैं modprobe कमांड भागा है?
कुछ '

5

बूट पर मॉड्यूल लोड करने के लिए, आप एक फ़ाइल बनाते हैं /etc/modules-load.d/; इस फ़ाइल का कोई भी नाम हो सकता है, लेकिन इसमें अंत होना चाहिए .conf। अपने वाईफाई ड्राइवर के मामले में, आप उदाहरण के लिए फ़ाइल बना सकते हैं /etc/modules-load.d/rt2800.conf

फ़ाइल में, मॉड्यूल के नाम के साथ एक एकल पंक्ति जोड़ें जिसे आप लोड करना चाहते हैं:

rt2800usb

कर्नेल मॉड्यूल पर आर्क विकी पृष्ठ में अधिक जानकारी है।

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