Монтирование Linux NFS после успешного подключения к сети

Монтирование Linux NFS после успешного подключения к сети

У меня есть небольшое встраиваемое устройство (MIPS), работающее под управлением очень легковесного Linux.

Он способен монтировать общие ресурсы NFS (вручную)устанавливатькоманда).

Однако я хочу монтировать его автоматически, поэтому я определил его вfstabфайл.

Проблема в том, что на момент обработки fstab устройство не имеет доступного соединения:

mount: mounting 10.1.1.1:/srv/fs on /nfs failed: Input/output error

Затем система продолжает загрузку (инициализирует модуль Wi-Fi, подключается к точке доступа и запрашивает IP-адрес с помощьюudhcpc.

После того, как udhcpc успешно получит IP-адрес, я могу запустить:

mount -a

и /nfs будет успешно смонтирован.

Как мне указать fstab ждать и постоянно повторять попытки?

Обратите внимание, что это урезанный Linux. Скрипты systemd или ifup отсутствуют.

Конечно, я могу запустить скрипт при загрузке, который будет постоянно выполнять команду «mount -a» до тех пор, пока не произойдет успех, но это метод грубой силы, и я ищу что-то более сложное, если таковое существует.

решение1

Обычное решение — сделатьDHCP-клиентинформировать вас после того, как он закончит настройку сети. Большинство клиентов DHCP имеют возможность запускать скрипты оболочки "hook" для этой цели, и udhcpc тоже. Согласнодокументация,

Когда происходит событие, udhcpc вызывает сценарий действия. Сценарий по умолчанию -/usr/share/udhcpc/default.scriptно это можно изменить с помощью аргументов командной строки. Три возможных аргумента для скрипта: [...]

граница: Этот аргумент используется, когда udhcpc переходит из несвязанного в связанное состояние. Все параметры задаются в переменных окружения, скрипт должен настроить интерфейс и задать любые другие соответствующие параметры (шлюз по умолчанию, сервер DNS и т. д.).

Это означает, что вы можете просто поместить скрипт оболочки в нужное место (используйте --scriptопцию при необходимости) и заставить его запускать монтирования всякий раз, когда он вызывается с $1параметром, установленным в значение bound.

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

Связанный контент