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

20

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

modprobe rt2800usb

Como posso torná-lo permanente?

alguma coisa
fonte
1
Olá, obrigado pela sua primeira pergunta. Seria bom se você pudesse mencionar qual distribuição Linux você está se referindo :)
Bonsi Scott
1
@BonsiScott A distribuição provavelmente também deve ser adicionada ao texto da pergunta, mas a tag diz Fedora.
Depplid #
(Além disso, excluída a minha própria resposta, porque não é específico do fedora)
Bonsi Scott
@BonsiScott, sua resposta poderia muito bem ser útil para os outros ...
vonbrand

Respostas:

34

Em qualquer distro usando systemd você pode carregar automaticamente o módulo via 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ê reiniciar, o módulo deverá ser carregado automaticamente


Solução de problemas:

Verifique se o systemdserviço 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/SUCCESSsignifica que o módulo foi inserido com sucesso, confirmado por:

journalctl -b _PID=260

sendo a saída:

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

Em caso de falha, a systemctlsaída fica assim:

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 -brelató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; corrida

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 a lsmodsaída não confirmar (apesar do código de saída de serviço estar 0/SUCCESS), significa que algo removeu o módulo depois de ser carregado modules-load.service. Uma causa possível é outra*.conf arquivo que colocou o módulo na lista negra. Procure uma linha como:

blacklist rt2800usb

in /etc/modprobe.d/*.conf, /usr/lib/modprobe.d/*.confou /run/modprobe.d/*.confe comente-o / exclua-o.

don_crissti
fonte
Eu fiz isso, mas o módulo não foi carregado na reinicialização.
somethingSomething
É porque o root é o proprietário do arquivo?
somethingSomething
Quando eu reinicio, ainda tenho que executar o comando modprbe. Não está listado porque a listagem ocorre depois que eu executei o comando modprobe?
somethingSomething
5

Para carregar um módulo na inicialização, você cria um arquivo no /etc/modules-load.d/ ; esse arquivo pode ter qualquer nome, mas deve terminar em .conf. No caso do seu driver wifi, você pode, 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 do Arch Wiki nos módulos do Kernel tem mais informações.

jasonwryan
fonte