我有一個小型嵌入式 (mips) 設備,它運行非常輕量級的 Linux。
它能夠掛載 NFS 共享(透過手動山命令)。
但是我想自動掛載它,所以我在系統表文件。
問題是處理 fstab 時設備沒有可用的連線:
mount: mounting 10.1.1.1:/srv/fs on /nfs failed: Input/output error
然後系統繼續啟動(初始化wifi模組,連接AP,查詢IP位址烏茲別克。
udhcpc 成功取得 IP 位址後,我可以執行:
mount -a
/nfs 將成功掛載。
我該如何告訴 fstab 等待並不斷重試?
請注意這是一個截斷的 Linux。沒有可用的 systemd 或 ifup 腳本。
當然,我可以在啟動時運行一個腳本,該腳本不斷運行“mount -a”直到成功,但這是蠻力方式,我正在尋找更複雜的解決方案(如果存在)。
答案1
通常的解決方案是使DHCP 用戶端完成網路配置後通知您。大多數 DHCP 用戶端都能夠為此目的啟動「掛鉤」shell 腳本,udhcpc 也是如此。根據文件,
當事件發生時,udhcpc 呼叫操作腳本。預設的腳本是/usr/share/udhcpc/default.script但這可以透過命令列參數進行更改。該腳本的三個可能的參數是:[...]
邊界:當 udhcpc 從未綁定狀態轉變為綁定狀態時,使用此參數。所有參數都在環境變數中設置,腳本應配置接口,並設置任何其他相關參數(預設網關、dns 伺服器等)。
這表示您只需將 shellscript 放置在正確的位置(--script
如有必要,請使用該選項),並使其在$1
參數設為 的情況下呼叫時啟動您的掛載bound
。
#!/bin/sh
if [ "$1" = bound ]; then
mount -a
fi