systemd: automatizar el comando modprobe en el momento del arranque

20

Mi distribución es Fedora 17 Gnome. Cada vez que reinicio / reinicio mi computadora, necesito ejecutar este comando como root:

modprobe rt2800usb

¿Cómo puedo hacer que sea permanente?

algo
fuente
1
Hola, gracias por tu primera pregunta. Sería bueno si pudieras mencionar a qué distribución de Linux te refieres :)
Bonsi Scott
1
@BonsiScott La distribución probablemente también debería agregarse al texto de la pregunta, pero la etiqueta dice Fedora.
depquid
(Además, eliminé mi propia respuesta porque no es específica de fedora)
Bonsi Scott
@BonsiScott, su respuesta podría ser útil para otros ...
vonbrand

Respuestas:

34

En cualquier distribución que use systemd, puede cargar automáticamente el módulo a través de modules-load.d:

  • crea el archivo de configuración:

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

  • ábralo y edítelo así (agregue el nombre del módulo):

    rt2800usb

  • la próxima vez que reinicie el módulo debería cargarse automáticamente


Solución de problemas:

Compruebe si el systemdservicio cargó el módulo:

systemctl status systemd-modules-load.service

La salida debería verse así:

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 última línea contiene la PID(identificación del proceso) y el código de salida. status=0/SUCCESSsignifica que el módulo se insertó correctamente, confirmado por:

journalctl -b _PID=260

salida siendo:

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

En caso de falla, la systemctlsalida se ve así:

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 -binformes:

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

Cuando el código de salida es 0/SUCCESS, significa que su módulo se ha insertado con éxito; corriendo

lsmod | grep rt2800

debería confirmar 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 lsmodsalida no confirma (a pesar de que el código de salida del servicio sea 0/SUCCESS) significa que algo eliminó el módulo después de ser cargado por modules-load.service. Una posible causa es otro *.confarchivo que puso en la lista negra el módulo. Busque una línea como:

blacklist rt2800usb

en /etc/modprobe.d/*.conf, /usr/lib/modprobe.d/*.confo /run/modprobe.d/*.confy comentario fuera / eliminarlo.

don_crissti
fuente
He hecho esto, pero el módulo no se cargó al reiniciar.
somethingSomething
¿Es porque root es el propietario del archivo?
algo Algo
Cuando reinicio, todavía tengo que hacer el comando modprbe. ¿No aparece en la lista porque la lista es después de que ejecuté el comando modprobe?
algo Algo
5

Para cargar un módulo en el arranque, crea un archivo en /etc/modules-load.d/; Este archivo puede tener cualquier nombre, pero debe terminar en .conf. En el caso de su controlador wifi, podría, por ejemplo, crear el archivo /etc/modules-load.d/rt2800.conf.

En el archivo, agregue una sola línea con el nombre del módulo que desea cargar de la siguiente manera:

rt2800usb

La página Arch Wiki en los módulos Kernel tiene más información.

jasonwryan
fuente