systemd: automatiza o comando modprobe no momento da inicialização

13

Minha distribuição é do Fedora 17 Gnome. Toda vez que eu reiniciar / reiniciar meu computador, eu preciso executar este comando como root:

modprobe rt2800usb

Como posso torná-lo permanente?

    
por somethingSomething 14.03.2018 / 01:26

2 respostas

21

Em qualquer distro usando systemd você pode carregar automaticamente o módulo por meio de modules-load.d :

  • crie o arquivo de configuração:

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

  • abra-o e edite assim (adicione o nome do módulo):

    rt2800usb

  • da próxima vez que você reinicializar, o módulo deverá ser carregado automaticamente

Solução de problemas:

Verifique se systemd service carregou o módulo:

systemctl status systemd-modules-load.service

A saída deve ficar assim:

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)

A última linha contém o PID (id do processo) e o código de saída. status=0/SUCCESS significa que o módulo foi inserido com sucesso, confirmado por:

journalctl -b _PID=260

saída sendo:

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

Em caso de falha, a saída systemctl é semelhante a:

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)

com journalctl -b de relatórios:

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

Quando o código de saída é 0/SUCCESS , significa que seu módulo foi inserido com sucesso; executando

lsmod | grep rt2800

deve 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

Se lsmod output não confirmar (apesar do código de saída de serviço ser 0/SUCCESS ), isso significa que algo foi removido do módulo após ser carregado por modules-load.service . Uma causa possível é outro arquivo *.conf que colocou o módulo na lista negra. Procure uma linha como:

blacklist rt2800usb

em /etc/modprobe.d/*.conf , /usr/lib/modprobe.d/*.conf ou /run/modprobe.d/*.conf e comente / exclua.

    
por 03.04.2013 / 22:07
5

Para carregar um módulo na inicialização, você cria um arquivo em /etc/modules-load.d/ ; esse arquivo pode ter qualquer nome, mas deve terminar em .conf . No caso do seu driver de wifi, você poderia, por exemplo, criar o arquivo /etc/modules-load.d/rt2800.conf .

No arquivo, adicione uma única linha com o nome do módulo que você deseja carregar da seguinte forma:

rt2800usb

A página Wiki do Arch em módulos do Kernel tem mais informações.

    
por 03.04.2013 / 22:05