Montagem NFS do Linux após conexão bem-sucedida à rede

Montagem NFS do Linux após conexão bem-sucedida à rede

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 --scriptopção se necessário) e fazê-lo iniciar suas montagens sempre que for chamado com o $1parâmetro definido como bound.

#!/bin/sh
if [ "$1" = bound ]; then
    mount -a
fi

informação relacionada