¿Cómo cargo un módulo en el momento del arranque?

32

Como se indica en ¿Por qué mi salida de audio (sonido) no funciona? , para inicializar el controlador de sonido, debe ejecutar sudo modprobe snd_bcm2835cada vez que desee emitir sonido.

¿Cómo consigo que esto se ejecute en el arranque? (es decir, antes de iniciar sesión y sin ninguna entrada)

Alex Chamberlain
fuente
1
Esta es otra pregunta que podría considerarse fuera de tema. Puede ser más adecuado para U&L .
Jivings
2
@Jivings: El hecho de que esté en el tema en Unix y Linux no lo hace fuera de tema para Raspberry Pi , ¿verdad?
Der Hochstapler
2
@ OliverSalzburg: Creo que hay demasiada superposición en esta pregunta en particular. Nada sobre esta pregunta lo hace específico para Raspberry Pi.
Jivings
1
¿La decisión en meta.raspberrypi.stackexchange.com/questions/24/… no significa que esta pregunta está bien aquí?
Graham Wager
1
@Jivings Gracias, solo quería aclarar eso para futuros visitantes, ya que los comentarios apuntaban hacia el cierre de la pregunta. ¿Quizás todos los comentarios deberían eliminarse en su lugar?
Graham Wager

Respuestas:

24

Cargar módulos en el arranque es un poco diferente a ejecutar comandos de inicio.

En Debian:

Agregue el nombre del módulo como una nueva línea en /etc/modules

En Arch Linux:

Agregue el nombre del módulo a la matriz de módulos /etc/rc.conf, la línea debería verse así:

modules=(snd_bcm2835)

O para la nueva configuración systemd:

echo "snd_bcm2835" | sudo tee -a /etc/modules-load.d/snd_bcm2835.conf
Jivings
fuente
He añadido snd_bcm2835al /etc/modulesarchivo en mi Xbian sino que crea un bucle en el arranque. esto parece no estar permitido al iniciar OSMC
rubo77
@ rubo77 ¡Interesante! ¿Llegaste al fondo?
Jivings
No es seguro. Tal vez fue una coincidencia. Toda la instalación parece un poco rota por ahora ...
rubo77
14

Modprobe en el arranque - Debian

Para responder la pregunta específica sobre sudo modprobe snd_bcm2835, agregue el módulo /etc/modulesy reinicie. (Necesitarás roothacerlo para hacer esto).

Inicio de servicios - Debian

Debian usa initscripts para inicializar el sistema, y ​​puede usarlos para ejecutar comandos arbitrarios. Debe instalar un script similar al siguiente en /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

Debe asegurarse de que sea ejecutable y propiedad de root.

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

Luego debe registrarlo para ejecutarlo al inicio.

sudo update-rc.d blah defaults

Referencias

Alex Chamberlain
fuente
1
Ninguna de estas cosas es exclusiva de Debian. Además, los scripts de inicio no son lo que debería estar usando para cargar módulos. Solo la primera sección es relevante para la pregunta.
Jivings
Ninguno de ellos trabajará en Arch, no estoy seguro acerca de QtonPi.
Alex Chamberlain
Por supuesto que lo harán.
Jivings
Oh ... ¿por qué entonces tu respuesta Arch es diferente?
Alex Chamberlain
Porque Arch define una práctica abstracción para los eventos de inicio.
Jivings
3

Hay muchas formas de ejecutar un comando al inicio en Linux, pero mi enfoque preferido es crear un script de inicialización /etc/init.dy registrarlo usando update-rc.d. De esta forma, la aplicación se inicia y se detiene automáticamente cuando el sistema se inicia / apaga.

Consulte esta publicación para obtener un conjunto de instrucciones sobre cómo crear uno en la Raspberry Pi.

Martin O'Hanlon
fuente
1
¡Bienvenido a Raspberry Pi Beta! Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
Der Hochstapler
¿Cómo lo harías a través de systemdotros sistemas?
ArchHaskeller
0

Mi enfoque preferido sería agregar el comando de configuración a /etc/rc.local donde se inicializaría al final del arranque, antes de que se le solicite iniciar sesión.

Teórico
fuente