Як завантажити модуль під час завантаження?


32

Як зазначено в Чому мій аудіо / звуковий вихід не працює? , щоб ініціалізувати драйвер звуку, потрібно запускати sudo modprobe snd_bcm2835кожен раз, коли ви бажаєте виводити звук.

Як змусити це працювати на завантаженні? (тобто перед входом у систему та без будь-якого введення)


1
Це ще одне питання, яке можна вважати поза темою. Це може бути краще підходити до U&L .
Відхилення

2
@Jivings: Тільки тому, що це тематика на Unix & Linux, це не робить її поза темою для Raspberry Pi , чи не так?
Der Hochstapler

2
@OliverSalzburg: Я думаю, що в цьому конкретному питанні занадто багато перекриттів. Ніщо з цього питання не робить його специфічним для Raspberry Pi.
Відхилення

1
Чи не означало б рішення на сайті meta.raspberrypi.stackexchange.com/questions/24/…, що це питання тут добре?
Грехем Вагер

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

Відповіді:


24

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

У Debian:

Додайте назву модуля як новий рядок у /etc/modules

В Arch Linux:

Додайте назву модуля до масиву модулів у /etc/rc.conf, рядок повинен виглядати так:

modules=(snd_bcm2835)

Або для нової системної конфігурації:

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

Я додав snd_bcm2835у /etc/modulesфайл на моєму Xbian але створив цикл під час завантаження. це здається не дозволеним при запуску OSMC
rubo77

@ rubo77 Цікаво! Ви потрапили на дно?
Відхилення

Не впевнений. Можливо, це був збіг. Вся установка здається трохи зламаною до цього часу ...
rubo77

14

Modprobe on Boot - 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. Крім того, скрипти init - це не те, що слід використовувати для завантаження модулів. Лише перший розділ має відношення до питання.
Відхилення

Жоден з них не буде працювати над Arch, не впевнений у QtonPi.
Алекс Чемберлен

Звичайно, будуть.
Відхилення

О, чому тоді відповідь твоєї Арки?
Алекс Чемберлен

Тому що Arch визначає зручну абстракцію для подій запуску.
Відхилення

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.