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.