1. 程式人生 > >使用nfs作為根檔案系統啟動遇到的問題

使用nfs作為根檔案系統啟動遇到的問題

在通過 flash 上的根檔案系統啟動後,手工 mount  NFS是沒有問題的,但是直接使用NFS作為根檔案系統啟動時會遇到問題,初次的問題是提示伺服器無響應,即 server  ******  not responding , still trying 

根據網上的很多辦法都沒法解決,有些說是網絡卡丟包嚴重,但我嘗試更改後仍然沒有解決問題。

後通過打印出的資訊分析,我設定的 bootargs 沒有問題,那無響應可能是網路不通,但我 nfsroot 裡的 ip 都設定好了啊,怎麼會不通呢?

我主機的 ip 是固定的,肯定不會出問題,那麼唯一能出問題的就是開發板這裡了,可是開發板的 ip 我也設定了啊,nfsroot 裡的開發板 ip 設定了,ipaddr  serverip都設定對了(這裡說明一下,經我測試,發現 ipaddr 和 serverip 的設定在這裡不影響系統的啟動,即使你隨便設定一個)。難道是核心啟動後開發板 ip被改了? 後經查詢得知/etc/init.d/rcS

裡會對 ip 進行設定(這裡要注意:我們修改的應該是將要使用的檔案系統的 /etc/init.d/rcS,我之前一直修改開發板裡檔案系統的這個檔案。在這裡,我們應該修改的是主機上的做好的檔案系統裡的),於是打開發現裡面的確設定了 ip,而且和我的主機不在一個網段,怪不得不通。好了,現在修改好這個後應該可以了吧,重啟開發板,OK? 對不起,新問題出現了,提示如下:

Warning: unable to open an initial console.
Failed to execute /linuxrc.  Attempting defaults...

難道沒有console,檢視發現有,那是怎麼回事?後想到難道是沒有掛載上我製作的這個檔案系統? 根據這個想法查詢解決辦法,還真找到了,我們主機裡有個 /etc/exports 檔案,這個檔案裡記錄了可以被掛載的目錄,我們應該把我們製作的檔案系統的目錄在這裡宣告一下,如下:

/work/nfs_root *(rw,sync,no_root_squash)

就把上面這一行加到原來的檔案裡就可以了。

修改好檔案後,重啟一下NFS服務,sudo /etc/init.d/nfs-kernel-server restart

至此,問題全部解決,重啟開發板,正常啟動起來了。