systemd: automatizza il comando modprobe all'avvio


20

La mia distribuzione è Fedora 17 Gnome. Ogni volta che riavvio / riavvio del computer, devo eseguire questo comando come root:

modprobe rt2800usb

Come posso renderlo permanente?


1
Ciao, grazie per la tua prima domanda. Sarebbe bello se potessi menzionare a quale distribuzione di Linux ti riferisci :)
Bonsi Scott

1
@BonsiScott La distribuzione dovrebbe probabilmente essere aggiunta anche al testo della domanda, ma il tag dice Fedora.
depquid

(Inoltre, ho eliminato la mia risposta perché non è specifica per Fedora)
Bonsi Scott

@BonsiScott, la tua risposta potrebbe essere utile per gli altri ...
vonbrand

Risposte:


34

Su qualsiasi distribuzione usando systemdpuoi caricare automaticamente il modulo tramite modules-load.d:

  • crea il file di configurazione:

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

  • aprilo e modifica in questo modo (aggiungi il nome del modulo):

    rt2800usb

  • al successivo riavvio il modulo dovrebbe essere caricato automaticamente


Risoluzione dei problemi:

Verifica se il systemdservizio ha caricato il modulo:

systemctl status systemd-modules-load.service

L'output dovrebbe essere simile al seguente:

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)

L'ultima riga contiene PID(ID processo) e il codice di uscita. status=0/SUCCESSsignifica che il modulo è stato inserito correttamente, confermato da:

journalctl -b _PID=260

output essendo:

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

In caso di errore, l' systemctloutput è simile al seguente:

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)

con journalctl -bsegnalazione:

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

Quando il codice di uscita è 0/SUCCESSsignifica che il modulo è stato inserito correttamente; in esecuzione

lsmod | grep rt2800

dovrebbe confermare che:

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

Se l' lsmodoutput non conferma (nonostante il codice di uscita del servizio sia 0/SUCCESS) significa che qualcosa ha rimosso il modulo dopo essere stato caricato da modules-load.service. Una possibile causa è un altro *.conffile che ha inserito nella lista nera il modulo. Cerca una linea come:

blacklist rt2800usb

in /etc/modprobe.d/*.conf, /usr/lib/modprobe.d/*.confo /run/modprobe.d/*.confe commentare fuori / eliminarlo.


Ho fatto questo, ma il modulo non si è caricato al riavvio.
qualcosa di

È perché root è il proprietario del file?
qualcosa di

Al riavvio, devo ancora eseguire il comando modprbe. Non è elencato perché l'elenco è dopo che ho eseguito il comando modprobe?
qualcosa di

5

Per caricare un modulo all'avvio, si crea un file in /etc/modules-load.d/; questo file può avere qualsiasi nome, ma deve terminare con .conf. Nel caso del tuo driver wifi, potresti ad esempio creare il file /etc/modules-load.d/rt2800.conf.

Nel file, aggiungi una singola riga con il nome del modulo che desideri caricare in questo modo:

rt2800usb

La pagina Arch Wiki sui moduli del kernel contiene ulteriori informazioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.