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


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.