分类: LINUX
2008-12-14 15:52:23
虚拟机下同时实现上网与linux nfs根文件系统
唐立军
适用场合:在XP下安装了vmware虚拟机进行linux开发,为了方便开发,避免反复压缩文件系统以及下载到开发板上,我们使用放在虚拟机上的nfs文件系统作为开发板的启动根文件系统。但是同时又带来了另外一个问题就是主机只有一张网卡,当我们需要上网时必须把上网的网线连接在网卡上,导致的问题是开发板就不能通过网络访问nfs文件系统,同样的我们的开发板的网线与网卡相连时主机就不能上网,当然,如果你要是觉得不断的插拔网线是一件非常快乐的事情,那么下面的内容你可以不用再看了。
硬件条件:两张网卡(主板集成+独立网卡)+交叉网线一根
软件条件:XP+Vmware 6.5+ubuntu8.04
硬件安装:安装好网卡,插好网线(另一端插在开发板的网线接口上),重新启动电脑。
软件设置:
A、设置刚刚装好的网卡的IP地址、子网掩码。本例中IP设为192.168.1.2,子网掩码为:255.255.255.0。此网卡与开发板相连。
B、设置虚拟机中的硬件设备,添加一张网卡,连接方式设为桥接(用于支持nfs文件系统)。原来那张网卡的连接方式是NAT(用于与主机共享IP上网)。
C、设置linux的IP地址为:192.168.1.1(与A中在同一个网段),子网掩码:255.255.255.0.
D、此时我们用ping命令ping 192.168.1.2是ping不通的。
E、设置虚拟机中两张虚拟网卡与实际网卡的对应关系。依次打开 程序àVmwareàVirture Network Editiong,切换到
注:上图中只需要对VMnet0选项中设置为开发板所对应的网卡即可。
F、配置linux的nfs服务,参考大聪的文档,在此也将其贴出。
1、进行NFS服务器端与客户端的安装:
apt-get install nfs-kernel-server nfs-common portmap
安装客户端的作用是可以在本机进行NFS服务的测试。
2、配置portmap
两种方法任选一种就可以:
(1):emacs /etc/default/portmap
去掉 -i 127.0.0.1
(2)dpkg-reconfigure portmap (推荐)
运行后选择“否”
3、配置挂载目录和权限
emacs /etc/exports
我的配置如下:
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync) hostname2(ro,sync)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt)
# /srv/nfs4/homes gss/krb5i(rw,sync)
#
/home/nfsboot *(rw,sync)
解释一下:
#后面的都是解释
/home/nfsboot是NFS的共享目录,*表示任何IP都可以共享这个目录,你可以改为受限的IP,rw表示的是权限,sync是默认的。
然后在home下建立nfsboot目录
4、更新exports文件
只要你更改了/etc/exports, 你可以通过exportfs -r 来更新 这个文件
5、重启NFS服务
/etc/init.d/nfs-kernel-server restart 重启nfs服务
修改nfsboot属性:chmod 777 nfsboo
6、进行测试
尝试一下挂载本地磁盘(我的linux系统IP为59.71.73.233,将/home/nfsboot挂载到/mnt)
$ mount 59.71.73.233:/home/nfsboot /mnt
运行 $ df 看看结果
$ umount /mnt //卸载
5、嵌入式系统中使用NFS服务挂载(来自网上)
先要保证内核支持nfs文件系统,可以用如下方式查看:
cat /proc/filesystems
其中有nfs一项,表示次内核已经支持nfs,否则要在编译内核的时候选择上
G、以后每次重新启动之后需要使用nfs时,则先需要将其mount.
mount 59.71.73.233:/home/nfsboot /mnt
H、最后设置U-boot的环境变量和开发板的网络连接。
1、设置网卡地址:
U-Boot>setenv ethaddr 3e:36:65:ba:
2、设置IP地址:
U-Boot>setenv ipaddr 192.168.1.3
3、设置环境变量:
U-Boot>setenv bootargs mem=
然后保存参数:
U-Boot>saveenv
其中nfsroot=192.168.0.10:/home/target 表示nfs 将从192.168.1.1:/home/target 文件
夹内启动根文件系统
ip=192.168.1.3:192.168.1.2:192.168.1.2:255.255.255.0::eth0:off
表示ip=$(taget IP):$(servicer IP):$(netGate):$(netMask)::(device):off
重新启动目标板,就能从nfs 根文件系统启动了。