刚因为虚拟机与主机没法互相ping通的事情,奋战到将近凌晨一点。现在把这个过程总结一下,以方便后加入该行业的广大IT精英。 VMWare提供了三种工作模式:bridged(桥接模式)、NAT(网络地址转换模式)和host-only(主机模式)。
1. bridged(桥接模式)
在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立主机,它可以访问网内任何一台机器。在桥接模式下,你需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。同时,由于这个虚拟系统是局域网中的一个独立的主机系统,那么就可以手工配置它的TCP/IP配置信息,以实现通过局域网的网关或路由器访问互联网。使用桥接模式的虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑。想让它们相互通讯,你就需要为虚拟系统配置IP地址和子网掩码,否则就无法通信。
如果你想利用VMWare在局域网内新建一个虚拟服务器,为局域网用户提供网络服务,就应该选择桥接模式。
2. NAT(网络地址转换模式)
使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。也就是说,使用NAT模式可以实现在虚拟系统里访问互联网。NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,无法进行手工修改,因此虚拟系统也就无法和本局域网中的其他真实主机进行通讯。采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可。
如果你想利用VMWare安装一个新的虚拟系统,在虚拟系统中不用进行任何手工配置就能直接访问互联网,建议你采用NAT模式。
所以使用桥接模式
一:物理设备及连接方式:
开发板:tiny6410(友善之臂);
笔记本一台(主机)(windows系统);
虚拟机;
连接方式:开发板与主机各用一条网线与路由器相连(网线也分直连网线和交叉网线,如果两台pc机相连,必须要用交叉网线,我们一般用的网线都是直连型的)。
注意!!桥接模式smb服务无法使用!在NAT模式下要将要用的文件都下载到Linux中!
二:开发板uboot环境变量设置:ipaddr、gatewayip、netmask 这三个变量要设置好,ipaddr跟主机的ip、虚拟机的ip要在一个网段;gatewayip通常设为路由器的网关;如果你要用tftp服务,那serverip要设成虚拟机的ip;
(这里我没有使用路由器,所以不设置gatewayip)
红框内是我们需要的主机ip,因为是桥接模式,不是用到Vmnet8(Vmnet8是NAT网络模式用的)
三:虚拟机网络设置:虚拟机->设置->网络适配器(指定为vmnet0桥接模式):
编辑->虚拟机网络编辑器(一定要自定义桥接到指定主机的网卡,如图桥接到本地连接):
这里不知道选哪个,就自动吧,原本应该是broadcom netlink那个
插曲:这里要说一下,有人可能会遇到这块没有自动生成vmnet网卡的情况(如图),自己添加的话,又不能改为桥接模式(如图),提示:“没有未桥接的主机网络适配器”
如果你虚拟机有vmnet0,桥接过程顺利的话,那就自动跳过以下内容,往下面翻。
解决尝试:
1:查看主机本地连接属性中VMware Bridge Protocol 有没有勾上
如果没有勾上,就点 安装->选 服务->添加->从磁盘安装->选择你的文件来源(一般在你vm的安装目录下有个netbridge文件)(这是虚拟机软件中的一个重要dll文件,用于建立虚拟网络桥接时的数据文件)。
尝试2:重装主机虚拟网卡
在 计算机->管理->设备管理器,底下有个网络适配器,里面全是你主机安装的各种网卡,把本地网络给卸载了
然后在菜单项上有个 操作->添加过时设备,选择手动安装硬件,找到网卡驱动,把它装上
ps:如果你还装有一些其他的虚拟网卡(比如迅游),要把它删了,这些虚拟网卡会对虚拟机选择网卡时造成影响。
再去重启虚拟机,对了,虚拟机如果不是完整版,只是绿色版的话,有可能也会没有vmnet0的情况,所以你要保证你的虚拟机版本没问题。
四:vmnet0 的问题终于解决了,现在去把ubuntu的ip设为跟主机、开发板在一个网段,怎么设置ip不用我说吧?[ifconfig eth0 192.168.1.4 netmask 255.255.255.0]
其实设置好桥接模式重启后,会自动分配一个IP给虚拟机,所以如果同一网段可以不做
五:主机网络设置:设置的跟开发板、虚拟机在同个网段就行了,与路由器的ip也要在一个网段(路由器的网关在机子的后面有写,自己去看);
然后,注意!注意连线,我不用路由器连开发板和主机之间网线都没连,怎么能ping通
六:测试:现在,OK,应该可以ping通了,先在主机上ping下虚拟机,应该可以ping通,如果没通,就去检查上面的步骤;
然后在开发板上ping主机和虚拟机,如果能ping通的话就是这样:
当然,我是这样的
192.168.0.106是因为没关Windows防火墙,关了可以ping通。不过很奇怪,为什么ping不通主机,但是可以ping通虚拟机?也就是可以不关Windows防火墙就能在虚拟机与开发板之间通信
在这里提醒一下,uboot相对于linux系统比较低级,它不支持被外界设备(主机或虚拟机)ping,但可以ping别人(主机或虚拟机),所以如果你用主机ping开发板,肯定是ping不通的,但这并不妨碍开发板跟主机和虚拟机通信,不要傻傻的认为没有ping通。
哦,在Linux上不要忘记设置tftp
service xinetd restart
/etc/init.d/xinetd start
同时关闭Linux防火墙
好了,如果ping通了的话,恭喜你问题解决了,接下来你可以用tftp下载内核到开发板上了【tftp 0xc0008000 uImage】【bootm 0xc0008000】.
参考:http://www.cnblogs.com/xiaopinggai/p/4767742.html