systemd: automatiser la commande modprobe au démarrage

20

Ma distribution est Fedora 17 Gnome. Chaque fois que je redémarre / redémarre mon ordinateur, je dois exécuter cette commande en tant que root:

modprobe rt2800usb

Comment puis-je le rendre permanent?

quelque chose
la source
1
Salut, merci pour ta première question. Ce serait bien si vous pouviez mentionner à quelle distribution Linux vous faites référence :)
Bonsi Scott
1
@BonsiScott La distribution devrait probablement être ajoutée au texte de la question également, mais la balise indique Fedora.
depquid
(Aussi, j'ai supprimé ma propre réponse car elle n'est pas spécifique à Fedora)
Bonsi Scott
@BonsiScott, votre réponse pourrait bien être utile aux autres ...
vonbrand

Réponses:

34

Sur n'importe quelle distribution, systemdvous pouvez charger automatiquement le module via modules-load.d:

  • créez le fichier de configuration:

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

  • ouvrez-le et éditez comme ceci (ajoutez le nom du module):

    rt2800usb

  • la prochaine fois que vous redémarrerez, le module devrait être automatiquement chargé


Dépannage:

Vérifiez si le systemdservice a chargé le module:

systemctl status systemd-modules-load.service

La sortie devrait ressembler à ceci:

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)

La dernière ligne contient le PID(identifiant du processus) et le code de sortie. status=0/SUCCESSsignifie que le module a été inséré avec succès, confirmé par:

journalctl -b _PID=260

sortie étant:

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

En cas d'échec, la systemctlsortie ressemble à ceci:

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)

avec journalctl -brapport:

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

Lorsque le code de sortie est, 0/SUCCESScela signifie que votre module a été inséré avec succès; fonctionnement

lsmod | grep rt2800

devrait confirmer que:

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

Si la lsmodsortie ne confirme pas (malgré le code de sortie du service 0/SUCCESS), cela signifie que quelque chose a supprimé le module après avoir été chargé par modules-load.service. Une cause possible est un autre *.conffichier qui a mis le module sur liste noire. Recherchez une ligne comme:

blacklist rt2800usb

dans /etc/modprobe.d/*.conf, /usr/lib/modprobe.d/*.confou /run/modprobe.d/*.confet commentez-le / supprimez-le.

don_crissti
la source
Je l'ai fait, mais le module ne s'est pas chargé au redémarrage.
quelque chose du
Est-ce parce que root est le propriétaire du fichier?
quelque chose du
Lorsque je redémarre, je dois toujours exécuter la commande modprbe. N'est-il pas répertorié car la liste se trouve après avoir exécuté la commande modprobe?
quelque chose du
5

Pour charger un module au démarrage, vous créez un fichier dans /etc/modules-load.d/; ce fichier peut avoir n'importe quel nom, mais doit se terminer par .conf. Dans le cas de votre pilote wifi, vous pouvez par exemple créer le fichier /etc/modules-load.d/rt2800.conf.

Dans le fichier, ajoutez une seule ligne avec le nom du module que vous souhaitez charger comme ceci:

rt2800usb

La page Arch Wiki sur les modules du noyau contient plus d'informations.

jasonwryan
la source