Здесь я предполагаю, что Raspbian похож на обычный Debian GNU/Linux, и что вы используете загрузку на основе зависимостей (не systemd, хотя, вероятно, это можно адаптировать и для systemd). То есть ваша среда похожа на Debian Wheezy (которая является текущей стабильной версией на момент написания этого ответа).
В процессе загрузки запускается /etc/init.d/kmod для загрузки всех модулей, перечисленных в /etc /modules. Убедившись, что в вашем скрипте есть зависимость от kmod
, вы можете воспользоваться этим, чтобы убедиться, что необходимые модули ядра загружены перед выполнением вашего скрипта.
Чтобы сделать это, вы должны добавить заголовок INIT INFO
в ваш скрипт (его можно скопировать из другого скрипта), который перечисляет kmod
как Required-Start
(требуется при запуске службы, предоставляемой скриптом) и Required-Stop
(требуется при остановке оказание услуг). Вам также необходимо установить Default-Start
и, возможно, Default-Stop
соответствующим образом.
Хороший заголовок сценария инициализации может выглядеть примерно так:
#! /bin/sh
### BEGIN INIT INFO
# Provides: mybootdisplay
# Required-Start: kmod
# Required-Stop: kmod
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description:
# Description:
### END INIT INFO
# ... your magic goes down here ...
См. man 8 insserv
для получения более подробной информации о различных информационных разделах и посмотрите на различные существующие сценарии инициализации для вдохновения.
После создания сценария инициализации с соответствующим информационным блоком инициализации запустите sudo update-rc.d mybootdisplay defaults
чтобы добавить /etc/init.d/mybootdisplay в последовательность загрузки.
В качестве альтернативы вышеприведенному, вы можете сделать так, чтобы ваш скрипт специально загружал необходимые модули ядра, вызывая modprobe
или insmod
непосредственно перед запуском fbi
. Тем не менее, я лично предпочел бы отложить для этого обычный сценарий инициализации, что означает, что приведенное выше решение, вероятно, лучше.