systemd: zautomatyzuj polecenie modprobe w czasie uruchamiania


20

Moja dystrybucja to Fedora 17 Gnome. Za każdym razem, gdy ponownie uruchamiam / restartuję komputer, muszę uruchomić tę komendę jako root:

modprobe rt2800usb

Jak mogę to zrobić na stałe?


1
Cześć, dziękuję za pierwsze pytanie. Byłoby miło, gdybyś mógł wspomnieć, do której dystrybucji linux się odwołujesz :)
— Bonsi Scott

1
@BonsiScott Dystrybucja powinna być prawdopodobnie również dodana do tekstu pytania, ale tag mówi Fedora.
— depquid

(Również
— usunąłem

@BonsiScott, twoja odpowiedź może być przydatna dla innych ...
— vonbrand,

Odpowiedzi:


34

Przy każdej dystrybucji systemdmożesz automatycznie załadować moduł poprzez modules-load.d:

  • utwórz plik konfiguracyjny:

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

  • otwórz i edytuj w ten sposób (dodaj nazwę modułu):

    rt2800usb

  • przy następnym uruchomieniu moduł powinien zostać automatycznie załadowany


Rozwiązywanie problemów:

Sprawdź, czy systemdusługa załadowała moduł:

systemctl status systemd-modules-load.service

Dane wyjściowe powinny wyglądać następująco:

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)

Ostatni wiersz zawiera PID(identyfikator procesu) i kod wyjścia. status=0/SUCCESSoznacza, że ​​moduł został pomyślnie wstawiony, potwierdzony przez:

journalctl -b _PID=260

wyjście jest:

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

W przypadku awarii systemctldane wyjściowe wyglądają następująco:

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)

z journalctl -braportowaniem:

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

Gdy kod zakończenia 0/SUCCESSoznacza, że ​​moduł został pomyślnie wstawiony; bieganie

lsmod | grep rt2800

powinien potwierdzić, że:

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

Jeśli lsmoddane wyjściowe nie potwierdzają (pomimo tego, że jest to kod wyjścia usługi 0/SUCCESS), oznacza to, że moduł został usunięty po załadowaniu modules-load.service. Jedną z możliwych przyczyn jest inny *.confplik, który umieścił moduł na czarnej liście. Poszukaj linii takiej jak:

blacklist rt2800usb

w /etc/modprobe.d/*.conf, /usr/lib/modprobe.d/*.conflub /run/modprobe.d/*.confi skomentuj / usuń.


Zrobiłem to, ale moduł nie załadował się przy ponownym uruchomieniu.
— coś Coś

Czy to dlatego, że root jest właścicielem pliku?
— somethingSomething

Po ponownym uruchomieniu nadal muszę wykonać polecenie modprbe. Nie ma go na liście, ponieważ lista jest po uruchomieniu komendy modprobe?
— coś Coś

5

Aby załadować moduł podczas rozruchu, należy utworzyć plik w /etc/modules-load.d/; ten plik może mieć dowolną nazwę, ale musi kończyć się na .conf. W przypadku sterownika Wi-Fi możesz na przykład utworzyć plik /etc/modules-load.d/rt2800.conf.

W pliku dodaj pojedynczy wiersz z nazwą modułu, który chcesz załadować:

rt2800usb

Strona Arch Wiki na temat modułów jądra zawiera więcej informacji.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.