主系统: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通的,于是我就把两边的网线都拔了重插下,,结果就好了,看来有时候就是插拔问题。。。