我有一个小型嵌入式(mips)设备,它运行非常轻量级的 Linux。
它能够挂载 NFS 共享(手动山命令)。
但是我想自动安装它,所以我在文件系统文件。
问题在于,在处理 fstab 时设备没有可用的连接:
mount: mounting 10.1.1.1:/srv/fs on /nfs failed: Input/output error
然后系统继续启动(初始化 wifi 模块,连接 AP,并使用韓國。
udhcpc 成功获取 IP 地址后,我可以运行:
mount -a
并且 /nfs 将会成功挂载。
我如何告诉 fstab 等待并不断重试?
请注意,这是一个截断的 Linux。没有可用的 systemd 或 ifup 脚本。
当然,我可以在启动时运行一个脚本,不断运行“mount -a”直到成功,但这是蛮力的方法,如果存在的话,我正在寻找更复杂的解决方案。
答案1
通常的解决方案是DHCP 客户端在完成网络配置后通知您。大多数 DHCP 客户端都能够为此目的启动“钩子”shell 脚本,udhcpc 也是如此。根据文档,
当事件发生时,udhcpc 会调用操作脚本。默认情况下,该脚本是/usr/share/udhcpc/default.script但这可以通过命令行参数进行更改。脚本的三个可能参数是:[...]
边界:当 udhcpc 从非绑定状态变为绑定状态时,使用此参数。所有参数均在环境变量中设置,脚本应配置接口,并设置任何其他相关参数(默认网关、dns 服务器等)。
这意味着您只需将一个 shell 脚本放在正确的位置(--script
必要时使用选项),并让它在调用时以$1
参数设置为 来启动您的挂载bound
。
#!/bin/sh
if [ "$1" = bound ]; then
mount -a
fi