Jak załadować moduł w czasie uruchamiania?


32

Jak stwierdzono w Dlaczego moje wyjście audio (dźwięku) nie działa? , aby zainicjować sterownik dźwięku, należy go uruchamiać za sudo modprobe snd_bcm2835każdym razem, gdy chcesz wyprowadzić dźwięk.

Jak mogę to uruchomić przy rozruchu? (tj. przed zalogowaniem i bez danych wejściowych)


1
To kolejne pytanie, które można uznać za nie na temat. Może lepiej pasować do U&L .
— Jivings

2
@Jivings: Tylko dlatego, że jest on na temat na Unixie i Linuksie , nie czyni go nie na temat dla Raspberry Pi , prawda?
— Der Hochstapler

2
@OliverSalzburg: Myślę, że w tym konkretnym pytaniu zbyt wiele się nakłada. Nic w tym pytaniu nie czyni go specyficznym dla Raspberry Pi.
— Jivings

1
Czy decyzja pod adresem meta.raspberrypi.stackexchange.com/questions/24/… nie oznaczałaby, że pytanie to jest w porządku?
— Graham Wager

1
@Jivings Dzięki, chciałem tylko wyjaśnić to przyszłym użytkownikom, ponieważ komentarze wskazywały na zamknięcie pytania. Może zamiast tego wszystkie komentarze powinny zostać usunięte?
— Graham Wager

Odpowiedzi:


24

Ładowanie modułów podczas rozruchu różni się nieco od uruchamiania poleceń uruchamiania.

W Debianie:

Dodaj nazwę modułu jako nowy wiersz w /etc/modules

W Arch Linux:

Dodaj nazwę modułu do tablicy modułów /etc/rc.conf, wiersz powinien wyglądać następująco:

modules=(snd_bcm2835)

Lub w przypadku nowej konfiguracji systemowej:

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

Dodałem snd_bcm2835do /etc/modulespliku na moim Xbian, ale to utworzyło pętlę podczas uruchamiania. wydaje się to niedozwolone przy uruchamianiu OSMC
— rubo77

@ rubo77 Ciekawe! Dotarłeś do sedna?
— Jivings

Niepewny. Może to był przypadek. Cała instalacja wydaje się już trochę zepsuta ...
— rubo77

14

Modprobe on Boot - Debian

Aby odpowiedzieć na konkretne pytanie dotyczące sudo modprobe snd_bcm2835, dodaj moduł do /etc/modulesi uruchom ponownie. (Musisz to rootzrobić.)

Uruchamianie usług - Debian

Debian używa skryptów startowych do inicjalizacji systemu i można ich używać do uruchamiania dowolnych poleceń. Musisz zainstalować skrypt podobny do następującego w /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

Powinieneś upewnić się, że można go uruchomić i jest własnością root.

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

Następnie musisz go zarejestrować, aby działał podczas uruchamiania.

sudo update-rc.d blah defaults

Referencje


1
Żadna z tych rzeczy nie jest unikalna dla Debiana. Ponadto skrypty inicjujące nie są tym, czego powinieneś używać do ładowania modułów. Tylko pierwsza sekcja jest istotna dla pytania.
— Jivings

Żadne z nich nie będzie działać na Arch, nie jestem pewien co do QtonPi.
— Alex Chamberlain

Oczywiście, że tak.
— Jivings

Och ... dlaczego zatem twoja odpowiedź Arch jest inna?
— Alex Chamberlain

Ponieważ Arch definiuje przydatną abstrakcję dla zdarzeń startowych.
— Jivings

3

Istnieje wiele sposobów uruchamiania polecenia podczas uruchamiania w systemie Linux, ale moim ulubionym podejściem jest utworzenie skryptu inicjującego /etc/init.di zarejestrowanie go za pomocą update-rc.d. W ten sposób aplikacja jest uruchamiana i zatrzymywana automatycznie podczas uruchamiania / zamykania systemu.

Zobacz ten post, aby uzyskać zestaw instrukcji, jak stworzyć taki na Raspberry Pi.


1
Witamy w Raspberry Pi Beta! Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
— Der Hochstapler

Jak zrobiłbyś to przez systemdinne systemy?
— ArchHaskeller

0

Moim preferowanym podejściem byłoby dodanie polecenia setup do /etc/rc.local, gdzie byłby inicjowany na końcu bootowania, zanim zostaniesz poproszony o zalogowanie się.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.