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 kmodcome 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 INFOun'intestazione allo script (questo può essere copiato da un altro script) che elenca kmodcome Required-Start(richiesto all'avvio del servizio fornito dallo script) e Required-Stop(richiesto durante l'interruzione del servizio). Dovrai anche impostare Default-Starte possibilmente in modo Default-Stopappropriato.
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 insservper 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 defaultsper 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 modprobeo insmodse 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.