Como carregar um módulo no momento da inicialização?

32

Conforme indicado em Por que minha saída de áudio (som) não está funcionando? , para inicializar o driver de som, você deve executar sudo modprobe snd_bcm2835toda vez que desejar emitir som.

Como faço para que isso seja executado na inicialização? (ou seja, antes de fazer login e sem nenhuma entrada)

Alex Chamberlain
fonte
1
Essa é outra questão que pode ser considerada fora de tópico. Pode ser mais adequado para U&L .
Jivings
2
@Jivings: Só porque é sobre o tópico no Unix e Linux não o torna fora de tópico para o Raspberry Pi , é?
Der Hochstapler
2
@ OliverSalzburg: Eu acho que há muita sobreposição nessa questão em particular. Nada sobre esta questão o torna específico para o Raspberry Pi.
Jivings
1
A decisão em meta.raspberrypi.stackexchange.com/questions/24/… não significaria que esta pergunta está correta aqui?
Graham Wager
1
@Jivings Obrigado, só queria esclarecer isso para futuros visitantes, pois os comentários apontavam para o fechamento da questão. Talvez todos os comentários devam ser excluídos?
Graham Wager

Respostas:

24

Carregar módulos na inicialização é um pouco diferente de executar comandos de inicialização.

No Debian:

Adicione o nome do módulo como uma nova linha em /etc/modules

No Arch Linux:

Adicione o nome do módulo à matriz do módulo /etc/rc.conf, a linha deve ficar assim:

modules=(snd_bcm2835)

Ou para a nova configuração do systemd:

echo "snd_bcm2835" | sudo tee -a /etc/modules-load.d/snd_bcm2835.conf
Jivings
fonte
Eu adicionei snd_bcm2835ao /etc/modulesarquivo no meu Xbian, mas isso criou um loop no momento da inicialização. este parece não ser permitido ao iniciar OSMC
rubo77
@ rubo77 Interessante! Você chegou ao fundo disso?
Jivings
Não tenho certeza. Talvez tenha sido uma coincidência. Toda a instalação parece um pouco quebrado por agora ...
rubo77
14

Modprobe na inicialização - Debian

Para responder à pergunta específica sobre sudo modprobe snd_bcm2835, adicione o módulo /etc/modulese reinicie. (Você precisará rootfazer isso.)

Iniciando serviços - Debian

Debian usando initscripts para inicializar o sistema, e você pode usá-los para executar comandos arbitrários. Você precisa instalar um script semelhante ao seguinte em /etc/init.d.

#! /bin/sh
# /etc/init.d/blah
#

# Some things that run always
touch /var/lock/blah

# Carry out specific functions when asked to by the system
case "$1" in
  start)
    echo "Starting script blah "
    echo "Could do more here"
    ;;
  stop)
    echo "Stopping script blah"
    echo "Could do more here"
    ;;
  *)
    echo "Usage: /etc/init.d/blah {start|stop}"
    exit 1
    ;;
esac

exit 0

Você deve garantir que seja executável e possuído pela raiz.

sudo chmod 755 /etc/init.d/blah
sudo chown root:root /etc/init.d/blah

Então você precisa registrá-lo para executar na inicialização.

sudo update-rc.d blah defaults

Referências

Alex Chamberlain
fonte
1
Nenhuma dessas coisas é exclusiva do Debian. Além disso, os scripts init não são o que você deve usar para carregar módulos. Somente a primeira seção é relevante para a pergunta.
Jivings
Nenhum deles funcionará no Arch, não tenho certeza sobre o QtonPi.
Alex Chamberlain
Claro que eles vão.
Jivings
Oh ... por que sua resposta do Arch é diferente então?
Alex Chamberlain
Porque o Arch define uma abstração útil para eventos de inicialização.
Jivings
3

Existem várias maneiras de executar um comando na inicialização do Linux, mas minha abordagem preferida é criar um script de inicialização /etc/init.de registrá-lo usando update-rc.d. Dessa forma, o aplicativo é iniciado e parado automaticamente quando o sistema é inicializado / encerrado.

Consulte esta postagem para obter um conjunto de instruções sobre como criar uma no Raspberry Pi.

Martin O'Hanlon
fonte
1
Bem-vindo ao Raspberry Pi Beta! Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
Der Hochstapler # 1/12
Como você faria isso através de systemdoutros sistemas?
ArchHaskeller
0

Minha abordagem preferida seria adicionar o comando setup ao /etc/rc.local, onde seria inicializado no final da inicialização, antes de você ser solicitado a fazer o login.

Teoremador
fonte