主系統:windows XP
virtualbox版本:4.3.8
guest系統:ubuntu12.04.4
開發板:ok6410a
qt安裝好後,準備弄個小程序在開發板上跑一下,想到以後經常要拷貝程序什麼的那麼麻煩,我決定也跟上時代潮流使用nfs,於是今天早上折騰了一個早上。。。
一、首先要保證ubuntu12.04.4與板子上能ping通。。好吧,首先是用一根網線連上開發板以及主機連接的路由器,這點還是師弟教我的= = 由於臺式機只有一個網口,只能連到路由器了,師弟用的是筆記本,用無線上網,就直接開發板和筆記本連上就好了!
二、爲了試下網絡,我順便就先把主機上的xp與ubuntu試着ping了下,結果ubuntu可以ping這個xp,但是返過來就ping不通;咬牙切齒查了很多博客,什麼防火牆開關,icmp禁用。。。等等,都設置了還是不行,最後打開virtualbox的設備選項,在network選項下更改網絡設置,才知道自己是用的nat連接方式,然後給改成橋接就好了!!額,這兩個有啥不同,什麼原理我還沒弄明白,只能下次有時間再看!
三、按照ok6410的linux手冊,
1、在ubuntu終端輸入命令建立共享文件夾:
mkdir /z/nfs
(手冊中接下來有一步拷貝yaffs文件系統並解壓,一開始沒弄明白乾啥用的,後來想可能是直接從nfs開機啓動時用的把。。。)
2、配置nfs服務:這裏趁ubuntu還連着網先將該下載安裝的東西弄好
#sudo apt-get install portmap
#sudo apt-get install nfs-kernel-server
#sudo gedit /etc/exports
在彈出的文本編輯器中編輯exports 文件,在最後一行添加:
/z/nfs *(rw,sync,no_root_squash)
該配置的說明:
// /z/nfs 服務器端共享目錄,可自定義,權限需設置爲777
//
* 允許訪問nfs服務器共享目錄的ip範圍,可自定義
//
rw客戶機對共享目錄權限
//
sync同步寫入存儲器,可選
//
no_root_squash允許客戶機享有主機root身份,可選
//
括號中的三個參數之間不可有空格
//
/z/nfs與 *間有一個空格
3、設置主機IP:命令格式爲:ifconfig eth0 IP地址 netmask 子網掩碼 up
4、啓動nfs服務:
#sudo /etc/init.d/portmap restart
#sudo /etc/init.d/nfs-kernel-server restart
使以上改動生效:exportfs –a
5、第5步我一開始按照手冊在uboot命令行改變了參數,結果無法開機了!!直接在uboot增加參數的好處是以後每次開機不用重新設置。。不過既然我沒成功,只好把參數刪掉重開機,然後參考別人的方法:
mount –t nfs –o nolock 192.168.0.231:/z/nfs /mnt
發現用mount -t nfs -o nolock 192.168.1.136:/nfs /mnt 可以正常掛載,但是大一些的文件傳輸的時候會出現問題“nfs:server is not responding,still trying”
網上查找得知“NFS 的默認傳輸協議是 UDP,而PC機與嵌入式系統通過UPD交互時就會出現嚴重的網卡丟包現象。”
命令修改爲mount -t nfs -o tcp , nolock 192.168.1.136:/nfs /mnt 順利搞定。文件傳輸也沒有問題了。
但是我加了tcp後出錯,無法mount。。還不知道原因。。心塞,要學的太多了
五、插曲中的插曲,開發板接上網線,打開終端後一直輸出:
eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
eth0: link down
eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
eth0: link down
eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
eth0: link down
eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
……查原因,大家說網口有問題配置有問題啥的,我其實是可以ping通的,於是我就把兩邊的網線都拔了重插下,,結果就好了,看來有時候就是插拔問題。。。