由于要在mini6410上做开发,通过NFS设置共享目录会很方便,所以尝试去做。
背景数据
主机:
操作系统:win7 IP:192.168.101.25 (当日分配的动态IP)
主机上的virtualbox虚拟机:
操作系统:ubuntu10.04 IP:(前后做了改动,见后文)
mini6410(ARM开发板):
操作系统:linux-2.6.38 IP:192.168.101.230
安装NFS组件、设置共享目录、启动NFS、测试、挂载目录过程按搜到的博客(leo115的专栏)操作:
http://blog.csdn.net/leo115/article/details/7340682
用telnet登录mini6410后,测试与主机的连接:
# ping 192.168.101.25 失败!
在主机和虚拟机上:
$ ping 192.168.101.230 均成功。
纠结了一阵子,有人说是win7的防火墙问题,网上搜一下如何更改:http://www.cnblogs.com/acmy/archive/2012/03/01/2375695.html
文件和打印机共享(回显请求 - ICMPv4-In) 的公用、专用规则均改为“是”。
用telnet登录mini6410后,测试与主机的连接:
# ping 192.168.101.25 成功。
但是还是不能正常挂载,在虚拟机上运行ifconfig,发现用NAT模式配置的网卡,和主机和ARM均不在同一网段。推断虚拟机内做了地址映射。
在网上搜如何解决,有两个不错的解释和设置方法:
VirtualBox虚拟机网络设置(四种方式):http://www.douban.com/group/topic/15558388/
VirtualBox实现内外网络互访问的配置:http://www.2cto.com/os/201205/133370.html
才知NAT模式外部不能访问虚拟机,建议设置一块桥接虚拟网卡。
关闭虚拟机,建立桥接网卡,选一个MAC地址,打开虚拟机。
再运行ifconfig,得到桥接网卡分配的IP地址192.168.101.47。
用telnet登录mini6410后,测试与虚拟机上桥接网卡的连接:
# ping 192.168.101.47 成功。
重新挂载:
我在mini6410上的挂接命令:
# mount -t nfs -o nolock 192.168.101.47:/home/yaoyao/Downloads /home/plg
(附上取消挂接命令: # umount /home/plg)
可以正常地共享文件了。
第二天
重启机器,发现桥接网卡的ip地址经过动态分配,和昨天不一样了。
决心设置桥接网卡静态ip的好,搜解决办法,发现一个:
http://blog.csdn.net/gudaoqianfu/article/details/7335077
在/etc/network/interfaces 后追加:
auto eth1 iface eth1 inet static address 192.168.101.47 gateway 192.168.101.1 netmask 255.255.255.0 network 192.168.101.0 broadcast 192.168.101.255
重启网卡:$ sudo /etc/init.d/networking restart
$ ifconfig 后,ip确实更改。用win7上网,所以DNS没设。
想让mini6410每次重启后时自动挂接。
在/etc/init.d/rcS 后追加:
mount -t nfs -o nolock 192.168.101.47:/home/yaoyao/Downloads /home/plg echo "mount nfs to ubuntu "
重启可见确实有效。
备注(写于上述工作很久之后)
1. mount 命令最好添加 -o nolock 选项,为了避免使用文件锁。
参照:http://blog.csdn.net/alex_xhl/article/details/7222602
2. 有些特别的ARM内核不支持NFS(比如我用过的一个TI的摄像头开发板TMS320DM368,天睿视迅公司在上面开发后提供),需要特别注意。
在不支持NFS的内核上运行mount 命令会提示 No such device 错误。
看一下 /proc/filesystems 文件,如果列表里没有 "nodev nfs" 就说明不支持NFS。如果需要可以重新编译烧写支持NFS 的内核。
参照:http://www.friendlyarm.net/forum/topic/3701 (查 /proc/filesystems 文件)
http://hi.baidu.com/xiaoyue1800/item/98e550309a442581f5e4adf5 (简单介绍重新编译烧写ARM Linux内核,没有细看)