天天看點

uboot使用nfs出現*** ERROR: Cannot mount

想在ZYNQ上運作openwrt,之前移植(适配)了uboot,然後試了好幾個版本的openwrt,嗯。。有點坎坷。

後來最終編譯成功後,簡單燒進去試了下要麼輸出ipv6錯誤要麼移植重複uboot,就試了試之前uboot的網絡是否ok,結果nfs又搞了好長時間。

uboot可以ping我的Ubuntu和PC,隻是顯示host XX.XX.XX.XX  is alive,心裡沒譜,Ubuntu ping 開發版ping不通,後來才知道

主機和bai虛拟機能互相ping通是因du為主機與虛拟機都開啟了對zhi應的程序(或線程,不清楚dao)等待ping指令的到來1653,而在uboot指令輸入狀态下,當使用ping指令時,實際上是uboot先根據你輸入的IP位址發送一個ICMP回送請求和回答封包到對應主機,然後再等待一段時間,如果在這段時間後主機沒有響應,則顯示ping不通,主機如果在這段時間内發送了回答封包則能ping通。可以通過追蹤程式的調用來檢視該過程。

你使用主機或虛拟機ping開發闆時,開發闆正處于main_loop循環中(等待使用者輸入指令),根本沒有對應的程式或中斷(uboot中一般不使用中斷)來檢測主機的ping指令,當然ping不通。

後來安裝正點原子的教程設定Ubuntu的nfs,但是出現*** ERROR: Cannot mount

折騰好久,搜尋好多案例,然後結合自己的實際情況,将這個事情捋一捋:

sudo apt-get install nfs-kernel-server     安裝nfs

sudo vi /etc/exports                                 修改nfs配置檔案,将nfs運作挂載的目錄在exports中定義

以後在後面添加如下所示内容: /home/kennan/linux/nfs *(rw,sync,no_root_squash)

uboot使用nfs出現*** ERROR: Cannot mount

重新開機NFS服務,使用如下指令: sudo service nfs-kernel-server restart

此時可以運作以下指令來顯示共享的目錄:

showmount -e

在nfs運作的過程中,修改了/etc/exports配置檔案,可以使用exportfs指令使改動生效,具體指令:

sudo exportfs -rv

上述方法試了之後還是不行的,又繼續搜到如下方案,

在host檔案中将開發闆的IP位址增加進去,

host檔案在/etc/hosts中

sudo vi /etc/hosts

打開後加入 10.0.0.5    /home/kennan/linux/nfs/

uboot使用nfs出現*** ERROR: Cannot mount

然後再在uboot中使用nfs下載下傳zImage檔案,還是顯示了錯誤,不過這次多了一行:

[email protected] **********************

感受到了進步,後來又由于某些原因,發現我在Ubuntu中實際建立的檔案夾是/home/kennan/kennan/linux/nfs/

多出來一層kennan,應該是Ubuntu還用不習慣,删掉了一層kennan使得與nfs配置一緻。

嗯,還是不行,然後又搜到一個資訊,可能是uboot中使用得NFS版本為V2版本,而ubuntu中的NFS版本為V3,V4及以上版本,進而導緻uboot不能再NFS伺服器中找到檔案

解決辦法為:讓buntu中得NFS相容V2。修改/etc/default/nfs-kernel-server 檔案。

操作方法如下:

(1)打開檔案:sudo vim /etc/default/nfs-kernel-server (注意一定要sudo或者root權限)

(2)修改如圖:

uboot使用nfs出現*** ERROR: Cannot mount

(3)儲存退出。

(4)重新開機NFS伺服器。sudo service nfs-kernel-server restart

解決後重新輸入指令下載下傳成功如圖:

uboot使用nfs出現*** ERROR: Cannot mount

終于成功了,感覺好不容易啊,學習linux每一步都需要花大量的時間。

繼續閱讀