Come carico un modulo all'avvio?


32

Come indicato in Perché l'uscita audio (audio) non funziona? , per inizializzare il driver audio, è necessario eseguire sudo modprobe snd_bcm2835ogni volta che si desidera emettere l'audio.

Come faccio a farlo funzionare all'avvio? (ovvero prima di accedere e senza input)


1
Questa è un'altra domanda che potrebbe essere considerata fuori tema. Potrebbe essere più adatto a U&L .
Jivings,

2
@Jivings: Solo perché è su argomento su Unix e Linux non lo rende fuori tema per Raspberry Pi , vero?
Der Hochstapler,

2
@OliverSalzburg: penso che ci sia troppa sovrapposizione in questa domanda particolare. Niente su questa domanda lo rende specifico per il Raspberry Pi.
Jivings,

1
La decisione su meta.raspberrypi.stackexchange.com/questions/24/… non significherebbe che questa domanda va bene qui?
Graham Wager,

1
@Jivings Grazie, volevo solo chiarirlo per tutti i futuri visitatori mentre i commenti puntavano a chiudere la domanda. Forse tutti i commenti dovrebbero essere eliminati invece?
Graham Wager,

Risposte:


24

Il caricamento dei moduli all'avvio è leggermente diverso dall'esecuzione dei comandi di avvio.

In Debian:

Aggiungi il nome del modulo come nuova riga in /etc/modules

In Arch Linux:

Aggiungi il nome del modulo all'array del modulo /etc/rc.conf, la linea dovrebbe apparire così:

modules=(snd_bcm2835)

O per la nuova configurazione di systemd:

echo "snd_bcm2835" | sudo tee -a /etc/modules-load.d/snd_bcm2835.conf

Ho aggiunto snd_bcm2835al /etc/modulesfile sul mio Xbian ma quello ha creato un loop all'avvio. questo non sembra essere consentito quando si avvia OSMC
rubo77,

@ rubo77 Interessante! Sei arrivato in fondo?
Jivings,

Non sono sicuro. Forse è stato un caso. L'intera installazione sembra ormai un po 'rotta ...
rubo77

14

Modprobe on Boot - Debian

Per rispondere alla domanda specifica su sudo modprobe snd_bcm2835, aggiungere il modulo /etc/modulese riavviare. (Dovrai esserloroot per farlo.)

Servizi di avvio - Debian

Debian usa initscripts per inizializzare il sistema e puoi usarli per eseguire comandi arbitrari. È necessario installare uno script simile al seguente in /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

È necessario assicurarsi che sia eseguibile e di proprietà di root.

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

Quindi è necessario registrarlo per essere eseguito all'avvio.

sudo update-rc.d blah defaults

Riferimenti


1
Nessuna di queste cose è unica per Debian. Inoltre, gli script init non sono quelli che dovresti usare per caricare i moduli. Solo la prima sezione è rilevante per la domanda.
Jivings,

Nessuno dei due funzionerà su Arch, non sono sicuro di QtonPi.
Alex Chamberlain,

Certo che lo faranno.
Jivings,

Oh ... perché allora la tua risposta Arch è diversa?
Alex Chamberlain,

Perché Arch definisce un'astrazione utile per gli eventi di avvio.
Jivings,

3

Esistono molti modi per eseguire un comando all'avvio in Linux, ma il mio approccio preferito è creare uno script di inizializzazione /etc/init.de registrarlo usandoupdate-rc.d . In questo modo l'applicazione viene avviata e arrestata automaticamente all'avvio / arresto del sistema.

Vedi questo post per una serie di istruzioni su come crearne uno su Raspberry Pi.


1
Benvenuto in Raspberry Pi Beta! Sebbene ciò possa teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
Der Hochstapler,

Come lo faresti attraverso systemdo altri sistemi?
ArchHaskeller,

0

Il mio approccio preferito sarebbe quello di aggiungere il comando setup a /etc/rc.local dove sarebbe inizializzato al termine dell'avvio, prima che ti venga chiesto di accedere.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.