Sto assumendo qui che Raspbian sia simile al normale Debian GNU / Linux e che tu stia usando l'avvio basato sulla dipendenza (non systemd; sebbene questo possa probabilmente essere adattato anche per systemd). Cioè, il tuo ambiente è simile a Debian Wheezy (che è l'attuale versione stabile al momento della stesura di questa risposta).
Durante il processo di avvio, /etc/init.d/kmod viene avviato per caricare tutti i moduli elencati in / etc / modules. Assicurando che lo script abbia kmod
come dipendenza, è possibile trarne vantaggio per assicurarsi che i moduli del kernel richiesti siano caricati prima che lo script venga eseguito.
Per fare ciò, è necessario aggiungere INIT INFO
un'intestazione allo script (questo può essere copiato da un altro script) che elenca kmod
come Required-Start
(richiesto all'avvio del servizio fornito dallo script) e Required-Stop
(richiesto durante l'interruzione del servizio). Dovrai anche impostare Default-Start
e possibilmente in modo Default-Stop
appropriato.
Una buona intestazione dello script init potrebbe essere qualcosa del tipo:
#! /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 ...
Vedi man 8 insserv
per maggiori dettagli sulle diverse stanze di informazioni e guarda diversi script di init esistenti per ispirazione.
Dopo aver creato lo script init con un blocco info init appropriato, eseguire sudo update-rc.d mybootdisplay defaults
per aggiungere /etc/init.d/mybootdisplay alla sequenza di avvio.
In alternativa a quanto sopra, puoi fare in modo che il tuo script carichi specificamente i moduli del kernel necessari chiamando modprobe
o insmod
se stesso prima di essere eseguito fbi
. Detto questo, personalmente preferirei rimandare al normale script init per questo, il che significa che la soluzione sopra è probabilmente migliore.