一,前言
总体来说我还是想用NAT虚拟机,所以基于开发板nfs挂载桥接虚拟机的文件系统环境搭建–Apple的学习笔记中的配置继续修改。
二,ubuntu虚拟机中nfs挂载设置
- 修改ip地址为192.168.112.11
- 添加路由端口
服务器托管网sudo gedit /etc/services
最后添加
mountd 9999/tcp
mountd 9999/udp - PC 以太网2设置ip地址从之前设置的192.168.7.3改为192.168.7.5,就变成了之前的ubuntu地址了。
- 连接好网线,给开发板上电,这样以太网2就连接上了。
验证ubuntu可以ping通PC以太网2 192.168.7.5,PC也可以ping ubuntu 192.168.112.11,开发板可以ping 192.168.7.5的PC。因为uboot不支持PC对它ping,所以只要uboot可以ping通PC即可。
- 打开PC tftp64工具,按之前的方法设置即可,然后uboot发命令tftp 0x82000000 zImage验证通过。
三,开发板设置
1.修改开发板的netargs参数
setenv netargs 'setenv bootargs console=ttyO0,115200n8 root=/dev/nfs nfsroot=192.168.7.5:/work/img/rootfs,v3,tcp,port=204服务器托管网9,mountport=9999 rw ip=192.168.7.2:192.168.7.5:192.168.7.1:255.255.255.0::eth0:off'
遇到的坑:nat方式下,进行nfs挂载,PC的防火墙需要关闭,否则路由不过去
bootargs中tcp加不加无所谓,我在虚拟机NAT的port端口映射仅添加了tcp,没有加udp,所以他只会用tcp,不过最好显示的加上。NAT实现nfs挂载的重点就是关闭PC的防火墙。
另外uboot仅支持v2的nfs,所以无法挂载,bootargs我设置为v2也无法挂载,说明ubuntu14.04这块支持有问题,我按网上教程设置了也无用。
2.找到了我之前设置的环境变量,主要对netargs进行了修正,若之前无环境变量文件,设置如下
setenv ipaddr 192.168.7.2
setenv serverip 192.168.7.5
setenv netmask 255.255.255.0
setenv gatewayip 192.168.7.1
setenv hostname "eth0"
setenv rootpath "/work/img"
setenv bootfile "zImage"
setenv myrootfs "/rootfs"
setenv fdtfile "am335x-boneblack.dtb"
setenv nfsopts "v3,tcp,port=2049,mountport=9999 rw"
setenv netargs "setenv bootargs console=${console} ${optargs} root=/dev/nfs nfsroot=${serverip}:${rootpath}${myrootfs},${nfsopts} ip=${static_ip}"
setenv nfs_bootfile 'tftp 0x82000000 ${bootfile}'
setenv nfs_fdtfile 'tftp 0x88000000 ${fdtfile}'
setenv bootcmd 'setenv autoload no;run nfs_bootfile; run findfdt; run nfs_fdtfile; run netargs; bootz ${loadaddr} - ${fdtaddr}'
saveenv
四,小结
记得一开始NAT端口路由无法进行nfs挂载,真心不清楚哪个环节出错了。主要是网络协议不熟悉,就算wireshark抓包看到错误也不清楚如何解决。另外就是3年前非虚拟机情况下都是正常的,但是用了虚拟机ubuntu就不正常了,所以为了简化问题,先设置为桥接虚拟机通过了nfs挂载后,又回到NAT虚拟机进行nfs挂载,这其实用了控制变量法来排查问题。虽然是比较低级的排查问题的方法,但是这也是很有效的方法。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
基础理论 CAP理论 一致性(Consistency) :在分布式系统中所有的数据备份,在同一时刻都保持一致状态,如无法保证状态一致,直接返回错误; 可用性(Availability):在集群中一部分节点故障,也能保证客户端访问系统并得到正确响应,允许一定时间…