想在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)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0DNtJGa10mYsRnMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL1YzM5UzMyIjM5EDMxAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
重新開機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下載下傳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)修改如圖:
(3)儲存退出。
(4)重新開機NFS伺服器。sudo service nfs-kernel-server restart
解決後重新輸入指令下載下傳成功如圖:
終于成功了,感覺好不容易啊,學習linux每一步都需要花大量的時間。