Eu tenho um pequeno dispositivo incorporado (mips) que executa um Linux muito leve.
É capaz de montar compartilhamentos NFS (manualmente pormontarcomando).
Porém quero montá-lo automaticamente, então defini-o nofstabarquivo.
O problema é que o dispositivo não possui conexão disponível no momento em que o fstab é processado:
mount: mounting 10.1.1.1:/srv/fs on /nfs failed: Input/output error
Em seguida, o sistema continua a inicializar (inicializar o módulo wifi, conectar-se ao AP e consultar o endereço IP comudhcpc.
Depois que o udhcpc obtiver o endereço IP com sucesso, posso executar:
mount -a
e o /nfs será montado com sucesso.
Como posso dizer ao fstab para esperar e tentar novamente constantemente?
Observe que este é um Linux truncado. Não há scripts systemd ou ifup disponíveis.
Claro, posso executar um script na inicialização que executa 'mount -a' constantemente até o sucesso, mas esse é o método de força bruta e estou procurando por algo mais sofisticado, se existir.
Responder1
A solução usual é fazero cliente DHCPinformá-lo depois de concluir a configuração da rede. A maioria dos clientes DHCP tem a capacidade de iniciar shellscripts "hook" para esse propósito, assim como o udhcpc. De acordo comdocumentação,
Quando ocorre um evento, udhcpc chama o script de ação. O script por padrão é/usr/share/udhcpc/default.scriptmas isso pode ser alterado através dos argumentos da linha de comando. Os três argumentos possíveis para o script são: [...]
vinculado: Este argumento é usado quando udhcpc passa de um estado não vinculado para um estado vinculado. Todos os parâmetros são definidos em variáveis ambientais. O script deve configurar a interface e definir quaisquer outros parâmetros relevantes (gateway padrão, servidor DNS, etc).
Isso significa que você pode simplesmente colocar um shellscript no local correto (use a --script
opção se necessário) e fazê-lo iniciar suas montagens sempre que for chamado com o $1
parâmetro definido como bound
.
#!/bin/sh
if [ "$1" = bound ]; then
mount -a
fi