Tengo un pequeño dispositivo integrado (mips) que ejecuta un Linux muy liviano.
Es capaz de montar recursos compartidos NFS (manualmente mediantemontardominio).
Sin embargo, quiero montarlo automáticamente, así que lo he definido en elfstabarchivo.
El problema es que el dispositivo no tiene conexión disponible en el momento en que se procesa fstab:
mount: mounting 10.1.1.1:/srv/fs on /nfs failed: Input/output error
Luego, el sistema continúa arrancando (inicializa el módulo wifi, se conecta al AP y consulta la dirección IP conudhcpc.
Después de que udhcpc obtenga correctamente la dirección IP, puedo ejecutar:
mount -a
y el /nfs se montará exitosamente.
¿Cómo puedo decirle a fstab que espere y vuelva a intentarlo constantemente?
Tenga en cuenta que este es un Linux truncado. No hay scripts systemd o ifup disponibles.
Por supuesto, puedo ejecutar un script en el arranque que ejecuta 'mount -a' constantemente hasta que tenga éxito, pero esa es la forma de fuerza bruta y estoy buscando una solución más sofisticada, si existe.
Respuesta1
La solución habitual es hacerel cliente DHCPinformarle una vez que haya terminado de configurar la red. La mayoría de los clientes DHCP tienen la capacidad de iniciar shellscripts "enganchados" para ese propósito, al igual que udhcpc. De acuerdo adocumentación,
Cuando ocurre un evento, udhcpc llama al script de acción. El script por defecto es/usr/share/udhcpc/default.scriptpero esto se puede cambiar mediante los argumentos de la línea de comando. Los tres argumentos posibles al guión son: [...]
atado: Este argumento se utiliza cuando udhcpc pasa de un estado no vinculado a uno vinculado. Todos los parámetros se configuran en variables ambientales. El script debe configurar la interfaz y establecer cualquier otro parámetro relevante (puerta de enlace predeterminada, servidor DNS, etc.).
Esto significa que puede simplemente colocar un shellscript en la ubicación correcta (use la --script
opción si es necesario) y hacer que inicie sus montajes cada vez que se llame con $1
el parámetro establecido en bound
.
#!/bin/sh
if [ "$1" = bound ]; then
mount -a
fi