NFS宿主机和目标机
这里主要写一下NFS(环境windows7主机,虚拟机上ubuntu10.04,FL2440已经移植好的linux2.6.12)网上很多教程的步骤都差不多,但是有时候我们还是无法ping通。要注意两点:
1.应该把虚拟机设置为桥接的方式,重启电脑;(最好把杀毒软件、防火墙关闭)
2.在宿主机linux控制台利用:sudo ifconfig eth0 192.168.XXX.XXX up 设置NFS服务器的IP地址;在每一次目标板断电之后都需重新设置。
以上两步完成之后,这个时候你可以去试试ping能否成功,。
若要建立NFS连接,还需要进行以下设置:
1.修改文件/etc/exports;
2.启动NFS服务(前提是你已经安装NFS包);#sudo /etc/init.d/nfs-kernel-server restart
3.DNW终端下执行mount命令;
$mount 192.168.xxx.xxx:/主机nfs目录 /挂载路径
没想到在DNW下执行$ ./hello出现错误:
; 再次执行$ ./hello出现另外一种情况:
server 192.168.xxx.xxx not responding, still trying
后面在google查了资料:NFS 的默认传输协议是 UDP,而PC机与嵌入式系统通过UPD交互时就会出现严重的网卡丢包现象。可用的解决方案是:在客户端改用TCP协议,使用下面的命令:
$mount -n -o nolock,rsize=1024,wsize=1024 timeo=15 192.168.xxx.xxx:/主机nfs目录 /挂载路径
到此这个问题得到解决。
执行$ ./hello
意料之外的错误又出现:segmentation fault
这个问题一直找了很久,很多人遇到但是都没有给出最后的解决办法。也有不少人说是编译器的问题。后面去查看目标版内核所使用的交叉编译工具是arm-linux-3.4.1,而我使用的交叉编译工具arm-linux-4.3.2。想想会不会是这个地方的问题。还是硬着头皮换回arm-linux-3.4.1,修改了/etc/bash.bashrc中默认设置。
最后再执行$./hello,成功了。
有时候就只差那么一点点,再坚持一下,你就会成功的。