Как загрузить модуль во время загрузки?


32

Как указано в разделе Почему мой аудио (звуковой) выход не работает? , чтобы инициализировать драйвер звука, вы должны запускаться sudo modprobe snd_bcm2835каждый раз, когда вы хотите вывести звук.

Как мне заставить это работать при загрузке? (т.е. до входа в систему и без какого-либо ввода)


1
Это еще один вопрос, который можно рассматривать не по теме. Это может быть лучше подходит для U & L .
Jivings

2
@Jivings: Просто потому, что это связано с темой в Unix и Linux , не делает это не по теме для Raspberry Pi , не так ли?
Der Hochstapler

2
@OliverSalzburg: Я думаю, что в этом конкретном вопросе слишком много совпадений. Ничто в этом вопросе не делает его специфичным для Raspberry Pi.
Jivings

1
Разве решение на meta.raspberrypi.stackexchange.com/questions/24/… не будет означать, что этот вопрос хорошо здесь?
Грэм Вейдж

1
@Jivings Спасибо, просто хотел прояснить это для любых будущих посетителей, так как комментарии были направлены на закрытие вопроса. Может быть, все комментарии должны быть удалены вместо?
Грэм Вейджер

Ответы:


24

Загрузка модулей при загрузке немного отличается от запуска команд запуска.

В Debian:

Добавьте имя модуля в качестве новой строки в /etc/modules

В Arch Linux:

Добавьте имя модуля в массив модулей /etc/rc.conf, строка должна выглядеть следующим образом:

modules=(snd_bcm2835)

Или для новой конфигурации systemd:

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

Я добавил snd_bcm2835в /etc/modulesфайл на моем Xbian, но это создало цикл во время загрузки. кажется, это не разрешено при запуске
OSMC

@ rubo77 Интересно! Вы дошли до сути?
Jivings

Не уверена. Может быть, это было совпадение. Вся установка кажется немного сломанной ...
rubo77

14

Modprobe при загрузке - Debian

Чтобы ответить на конкретный вопрос sudo modprobe snd_bcm2835, добавьте модуль /etc/modulesи перезагрузите компьютер. (Вам нужно будет rootсделать это.)

Запуск сервисов - Debian

Debian использует initscripts для инициализации системы, и вы можете использовать их для запуска произвольных команд. Вам необходимо установить скрипт, аналогичный следующему в /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

Вы должны убедиться, что он работает и принадлежит пользователю root.

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

Затем вам нужно зарегистрировать его для запуска при запуске.

sudo update-rc.d blah defaults

Ссылки


1
Ни одна из этих вещей не является уникальной для Debian. Кроме того, сценарии инициализации не то, что вы должны использовать для загрузки модулей. Только первый раздел имеет отношение к вопросу.
Jivings

Ни один из них не будет работать на Arch, не уверен насчет QtonPi.
Алекс Чемберлен

Конечно они будут.
Jivings

Ох ... почему твой Арч отвечает иначе?
Алекс Чемберлен

Потому что Arch определяет удобную абстракцию для событий запуска.
Jivings

3

В Linux существует множество способов запуска команды при запуске, но мой любимый подход - создать сценарий инициализации /etc/init.dи зарегистрировать его, используя update-rc.d. Таким образом, приложение запускается и останавливается автоматически при загрузке / выключении системы.

Смотрите этот пост для набора инструкций о том, как создать один на Raspberry Pi.


1
Добро пожаловать в Raspberry Pi Beta! Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить здесь основные части ответа и предоставить ссылку для справки.
Der Hochstapler

Как бы вы сделали это через systemdдругие системы?
ArchHaskeller

0

Мой предпочтительный подход заключается в добавлении команды установки в /etc/rc.local, где она будет инициализирована в конце загрузки, прежде чем вас попросят войти в систему.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.