Como carrego módulos na inicialização em uma determinada ordem?

1

Eu tenho um grupo de módulos que eu preciso carregar na inicialização. Eu segui a documentação para carregar um módulo no entanto eu preciso carregar esses módulos em uma determinada ordem.

Eu tentei criar um script bash que usa um loop for e carrega cada módulo na ordem que eu preciso.

mods=(mod1 mod2 mod3 ... modN)
for mod in $(mods); do
    if [ ! -c /dev/input/$mod ] ; then
        exec /sbin/modprobe $mod > /dev/null 2>&1
    fi
done

Eu também tentei criar um script bash que carrega cada módulo individualmente sem loop.

if [ ! -c /dev/input/mod1] ; then
        exec /sbin/modprobe mod1 > /dev/null 2>&1
fi

if [ ! -c /dev/input/mod2 ] ; then
        exec /sbin/modprobe mod2 > /dev/null 2>&1
fi

...

if [ ! -c /dev/input/modN ] ; then
        exec /sbin/modprobe modN > /dev/null 2>&1
fi

Em ambos os casos, apenas o primeiro módulo é carregado e nenhum dos outros. A ativação de mais depuração do script ( #!/bin/sh -ex ) nos dois casos é interrompida exatamente em:

+ exec /sbin/modprobe mod1

Suponho que o sistema veja que os primeiros módulos estão corretamente carregados e terminam (mas não tenho certeza disso). Como faço para carregar módulos na inicialização em uma ordem especificada?

    
por KronoS 11.12.2013 / 16:36

2 respostas

0

Seu erro está no seu script. Seu loop for deve ser assim:

for mod in ${mods[@]}; do

O {} referencia a variável enquanto () é para comandos. Segundo, o [@] faz referência à matriz inteira.

    
por 11.12.2013 / 17:24
2

O comando exec substitui o shell atual por outro comando. Parece ser desnecessário no seu caso. Se você precisar, use-o apenas no último comando.

    
por 11.12.2013 / 17:05