终于实现VMWare桥接无线网卡上网,不再只限于用NAT了(记下来以供遇过同样问题的人参考)

Kvm、VMware、Virtualbox、Xen、Qemu 等
wanderinrain
帖子: 76
注册时间: 2007-01-21 22:01

终于实现VMWare桥接无线网卡上网,不再只限于用NAT了(记下来以供遇过同样问题的人参考)

#1

帖子 wanderinrain » 2008-05-31 22:06

在UBUNTU下(实际上是在LINUX作宿主机的情况下)使用VMWare一直有两个大家公认的问题:一是声卡占用的问题;二是桥接无线网卡的问题。关于解决方案网上讨论得比较多,不过按网上的方法我一直没能解决,困扰我很久了(所以一直以来我都是用NAT方式与宿主机共享无线网络上网,但有些应用就有问题)。关于桥接无线网卡的问题今天终于被我搞清楚并解决了,写在这里以免让更多的后来者再浪费时间。
问题描述:在LINUX下使用VMWare,如果主机是使用无线网卡的话,客户机网卡若使用桥接则无法连通。按照VMWare论坛的讨论结果是,若主机为windows则无问题,因为驱动支持无线网卡作为AP模式工作,在LINUX下99%不行。经过实践我发现其实是可以解决的,需要两步:
1、修改其中的一个文件,然后重新编译。相关的补丁文件附后。(这个网上有提供)
2、客户机的网卡配置不选桥接,而是根据VMWare运行config时提示是把无线网卡桥接在哪个设备上,相应地选custom(注意:不是选Bridged桥接模式,否则不可能连接。这是过去我和其他人都共同犯的错误。),再从下拉列表中选相应设备,如在我的机器上是vmnet2 is bridged to wlan0,因此选vmnet2。

对不起,本想把补丁文件上传,结果老提示我附件什么什么扩展名不行,改几个都不行,算了,直接贴上内容(谁可以告诉我如何上传附件?):
diff -Naur vmnet-only/bridge.c vmnet-only-new/bridge.c
--- vmnet-only/bridge.c 2007-08-22 03:14:05.000000000 +0200
+++ vmnet-only-new/bridge.c 2007-09-30 14:34:13.000000000 +0200
@@ -32,7 +32,7 @@
#include <linux/tcp.h>
#include <net/tcp.h>

-#ifdef CONFIG_NET_RADIO
+#if defined CONFIG_NET_RADIO || defined CONFIG_WLAN_80211
# include <linux/wireless.h>
#endif
#include "vmnetInt.h"
@@ -764,7 +764,7 @@
static Bool
VNetBridgeIsDeviceWireless(struct net_device *dev) //IN: sock
{
-#if !defined(CONFIG_NET_RADIO)
+#if !defined CONFIG_NET_RADIO && !defined CONFIG_WLAN_80211
return FALSE;
#elif WIRELESS_EXT > 19
return dev->wireless_handlers != NULL;
上次由 wanderinrain 在 2008-06-01 17:04,总共编辑 12 次。
wanderinrain
帖子: 76
注册时间: 2007-01-21 22:01

#2

帖子 wanderinrain » 2008-05-31 22:07

另外,关于virtualbox系统克隆的问题我也解决了
wanderinrain
帖子: 76
注册时间: 2007-01-21 22:01

#3

帖子 wanderinrain » 2008-05-31 22:09

不过关于声卡独占的问题,用网上的方法无法解决,不知哪位有效解决了?给个方法吧,多谢。要不然又要浪费时间琢磨。
wanderinrain
帖子: 76
注册时间: 2007-01-21 22:01

#4

帖子 wanderinrain » 2008-06-01 3:13

刚刚试用了一下KVM,真是不错,速度一流,就是鼠标有点问题,用远程桌面连也不好用。另外网络功能方面,也有些问题,总不能如意。盼望KVM能早点完善,让我们不需要到处找虚拟软件了。
其实VMWare是相当不错了,既稳定而且网络功能方面比较强,可惜workstation版是收费的,让很多技术人员敬而远之。
VirtualBox也相当不错,但稳定性又稍差一点,而且网络设置方面让很多用户感觉不便,也不见SUN改善改善。尤其恼火的是,我的CPU硬件虚拟方面在KVM下用的好好的,而VirtualBox下一开就崩溃。
chengzh
帖子: 167
注册时间: 2008-04-08 9:27

#5

帖子 chengzh » 2008-06-02 12:29

wanderinrain 写了:刚刚试用了一下KVM,真是不错,速度一流,就是鼠标有点问题,用远程桌面连也不好用。另外网络功能方面,也有些问题,总不能如意。盼望KVM能早点完善,让我们不需要到处找虚拟软件了。
其实VMWare是相当不错了,既稳定而且网络功能方面比较强,可惜workstation版是收费的,让很多技术人员敬而远之。
VirtualBox也相当不错,但稳定性又稍差一点,而且网络设置方面让很多用户感觉不便,也不见SUN改善改善。尤其恼火的是,我的CPU硬件虚拟方面在KVM下用的好好的,而VirtualBox下一开就崩溃。
KVM的鼠标问题启动的时候加上参数:-usbdevice tablet就好了,或者不用VNC直接用qemu原生界面全屏后鼠标移动很顺滑的。
我现在还有问题就是:1,声卡如何跟host共用,我知道guest可以独占。2,USB设备加载后winxp里老是认为是usb1.0的接口,不能认成2.0的,郁闷呢。3,在我的机器是跟无线bridge还有问题。
KVM不错,速度很好,看好他。
wanderinrain
帖子: 76
注册时间: 2007-01-21 22:01

#6

帖子 wanderinrain » 2008-06-03 0:00

chengzh 写了:
wanderinrain 写了:刚刚试用了一下KVM,真是不错,速度一流,就是鼠标有点问题,用远程桌面连也不好用。另外网络功能方面,也有些问题,总不能如意。盼望KVM能早点完善,让我们不需要到处找虚拟软件了。
其实VMWare是相当不错了,既稳定而且网络功能方面比较强,可惜workstation版是收费的,让很多技术人员敬而远之。
VirtualBox也相当不错,但稳定性又稍差一点,而且网络设置方面让很多用户感觉不便,也不见SUN改善改善。尤其恼火的是,我的CPU硬件虚拟方面在KVM下用的好好的,而VirtualBox下一开就崩溃。
KVM的鼠标问题启动的时候加上参数:-usbdevice tablet就好了,或者不用VNC直接用qemu原生界面全屏后鼠标移动很顺滑的。
我现在还有问题就是:1,声卡如何跟host共用,我知道guest可以独占。2,USB设备加载后winxp里老是认为是usb1.0的接口,不能认成2.0的,郁闷呢。3,在我的机器是跟无线bridge还有问题。
KVM不错,速度很好,看好他。
QEMU原生界面全屏后鼠标移动就顺滑了?没试过全屏,赶紧试试
头像
piziliu88
帖子: 94
注册时间: 2007-06-02 23:08

#7

帖子 piziliu88 » 2008-06-05 17:49

wanderinrain
楼主,你好,我今天用VMWARE6。03安装WIN SEVER 2003 ,但是主机网络和虚拟机系统连不上。我的主机系统是UBUNTU8。04,无线网卡,机器型号是华硕A8F。这个帖子我看了,不是很明白你那个补丁文件要怎么安装,能否详细说明?另外,怎么查看我的机器上是vmnet几 bridged to wlan0?先谢谢了
linux的运用在于不断的探索和询问
wanderinrain
帖子: 76
注册时间: 2007-01-21 22:01

#8

帖子 wanderinrain » 2008-06-05 22:33

piziliu88 写了:wanderinrain
楼主,你好,我今天用VMWARE6。03安装WIN SEVER 2003 ,但是主机网络和虚拟机系统连不上。我的主机系统是UBUNTU8。04,无线网卡,机器型号是华硕A8F。这个帖子我看了,不是很明白你那个补丁文件要怎么安装,能否详细说明?另外,怎么查看我的机器上是vmnet几 bridged to wlan0?先谢谢了
对不起,因为没什么人对这个帖子感兴趣,所以也没来看了。
嗯,前面说明表达得不是很清楚。这个补丁文件不能直接安装,必须要按照我说的那个内容修改/usr/lib/vmware/modules/source/vmnet.tar包中的bridge.c文件中的两行,再打包,再运行/usr/bim/vmware-config.pl重新编译。编译过程中也可以看到要求配置网络,在此你就可以用向导,看到关于配置桥接的地方会说明桥接到哪了,可以桥接多块网卡的(一般都有有线和无线,会优先桥接有线的,所以你要回答要桥接另一块网卡,下面会桥接到无线网卡),后面我再说明如何不再重编译查看桥接情况。
wanderinrain
帖子: 76
注册时间: 2007-01-21 22:01

#9

帖子 wanderinrain » 2008-06-05 22:36

接上(为了复制相关信息,我又重编译了一遍),编译过程中相关的反馈信息类似于下:
The following bridged networks have been defined:

. vmnet0 is bridged to eth0
. vmnet2 is bridged to wlan0
所以在我的机器上就是vmnet0桥接到有线网卡了,vmnet2桥接到无线网卡了
wanderinrain
帖子: 76
注册时间: 2007-01-21 22:01

#10

帖子 wanderinrain » 2008-06-05 22:41

编译完后,以后查看网络桥接配置信息方法及在我的机器上的显示:
$ps aux |grep vmnet
root 12692 0.0 0.0 3844 208 ? Ss 22:36 0:00 /usr/bin/vmnet-bridge -d /var/run/vmnet-bridge-0.pid /dev/vmnet0 eth0
root 12712 0.0 0.0 3844 204 ? Ss 22:36 0:00 /usr/bin/vmnet-bridge -d /var/run/vmnet-bridge-2.pid /dev/vmnet2 wlan0

也可以看vmnet0桥接到eth0,而vmnet2桥接到wlan0

我没有找到vmware网络配置文件的位置,应该有一个配置文件的,直接看配置文件更简单直接,知道的同志不妨说说。
wanderinrain
帖子: 76
注册时间: 2007-01-21 22:01

#11

帖子 wanderinrain » 2008-06-05 22:45

顺便说一下,关于重编译也很容易的,因为一旦升级了ubuntu,若更新内核就要重新编译,否则vmware不能运行,所以肯定要习惯的。
头像
piziliu88
帖子: 94
注册时间: 2007-06-02 23:08

#12

帖子 piziliu88 » 2008-06-06 13:41

很详细阿 :D 相当感谢你,只是按照你给的修改内容修改后重新编译却是错的。修改内容似乎不本身有点语法问题吧。我自己也稍微修正了一下语法方面的问题,再编译还是错误。不知为何。要不LZ你把你的bridge.c文件邮箱传给我吧。顺便说一下,我用的是VM6.03的版本。我的内核是-2.6.24-18。我是根据 http://os.deepin.org/read.php?tid=653436&page=1 的方法,修改了安装补丁的bridge.c文件进行重装的。我的邮箱是:plan0412@yahoo.com.cn。再次感谢LZ的热心帮助
linux的运用在于不断的探索和询问
wanderinrain
帖子: 76
注册时间: 2007-01-21 22:01

#13

帖子 wanderinrain » 2008-06-06 21:27

piziliu88 写了:很详细阿 :D 相当感谢你,只是按照你给的修改内容修改后重新编译却是错的。修改内容似乎不本身有点语法问题吧。我自己也稍微修正了一下语法方面的问题,再编译还是错误。不知为何。要不LZ你把你的bridge.c文件邮箱传给我吧。顺便说一下,我用的是VM6.03的版本。我的内核是-2.6.24-18。我是根据 http://os.deepin.org/read.php?tid=653436&page=1 的方法,修改了安装补丁的bridge.c文件进行重装的。我的邮箱是:plan0412@yahoo.com.cn。再次感谢LZ的热心帮助
我试试能不能上传。以前我上传都失败。....果然不能上传.c文件,索性上传整个vmnet.tar,反正不大。
附件
vmnet.tar
我修改过的bridge.c,然后重打包的vmnet.tar
(520 KiB) 已下载 854 次
头像
piziliu88
帖子: 94
注册时间: 2007-06-02 23:08

#14

帖子 piziliu88 » 2008-06-07 17:35

好了,终于安装成功了,现在我总结一下:
根据 http://os.deepin.org/read.php?tid=653436&page=1 所提供的方法安装,不过补丁中的~/vmware-any-any-update116下的vmnet.tar由楼主提供的那个附件替换。
安装补丁之前先在终端输入:

ifconfig

查看自己的电脑的网络设置。然后从vmnet0~vmnet9中选择一个主机没有用的作为虚拟机连接WLAN0的端口。比如我选了vmnet9(但是我vmnet2也是没有使用的端口,可是我用这个端口是无法连接网络的,不知道有没有人知道原因)

安装补丁时会提示是否要更改网络设置,选 Y

然后提示是否让虚拟机连接网络 Y

然后选择更改号vmnet(0~99) 我选9(这个一定要慎重选择,否则会联不了网的)

然后选择 birdge 类型将vmnet连接到wlan0.

而后一路确认下来即可。

然后设置virtual machine,将Ethernet设为cusom-vmnet9

这样,开启虚拟机,能联网了(由于不懂贴图,不是很形象,希望大家能看懂吧,呵呵)
头像
piziliu88
帖子: 94
注册时间: 2007-06-02 23:08

#15

帖子 piziliu88 » 2008-06-07 17:36

对了,还没谢谢楼主的大力帮忙,感谢ing :)
linux的运用在于不断的探索和询问
回复