Estou assumindo aqui que o Raspbian é similar ao Debian GNU / Linux regular, e que você está usando a inicialização baseada em dependência (não o systemd; embora isso provavelmente possa ser adaptado para o systemd também). Ou seja, o seu ambiente é semelhante ao Debian Wheezy (que é a versão estável atual no momento de escrever esta resposta).
Durante o processo de inicialização, o /etc/init.d/kmod é iniciado para carregar todos os módulos listados em / etc / modules. Ao garantir que seu script tenha kmod
como dependência, você pode tirar proveito disso para garantir que os módulos do kernel necessários sejam carregados antes do seu script ser executado.
Para fazer isso, você deve adicionar um INIT INFO
ao seu script (isso pode ser copiado de outro script), que lista kmod
como Required-Start
(necessário ao iniciar o serviço fornecido pelo script) e Required-Stop
(necessário ao parar o serviço). Você também precisará definir Default-Start
e possivelmente Default-Stop
apropriadamente.
Um bom cabeçalho de script de inicialização pode ser algo como:
#! /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 ...
Veja man 8 insserv
para obter mais detalhes sobre as diferentes sub-rotinas de informações e veja os diferentes scripts de inicialização existentes para inspiração.
Após criar seu script de inicialização com um bloco de informações init apropriado, execute sudo update-rc.d mybootdisplay defaults
para adicionar /etc/init.d/mybootdisplay à sequência de inicialização.
Como alternativa alternativa ao acima, você pode fazer com que seu script carregue especificamente o (s) módulo (s) do kernel necessário chamando modprobe
ou insmod
antes de executar fbi
. Dito isso, eu pessoalmente prefiro adiar para o script de inicialização normal para isso, o que significa que a solução acima é provavelmente melhor.