终于实现VMWare桥接无线网卡上网,不再只限于用NAT了
在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;
刚刚试用了一下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不错,速度很好,看好他。
嗯,前面说明表达得不是很清楚。这个补丁文件不能直接安装,必须要按照我说的那个内容修改/usr/lib/vmware/modules/source/vmnet.tar包中的bridge.c文件中的两行,再打包,再运行/usr/bim/vmware-config.pl重新编译。编译过程中也可以看到要求配置网络,在此你就可以用向导,看到关于配置桥接的地方会说明桥接到哪了,可以桥接多块网卡的(一般都有有线和无线,会优先桥接有
线的,所以你要回答要桥接另一块网卡,下面会桥接到无线网卡),后面我再说明如何不再重编译查看桥接情况。
接上(为了复制相关信息,我又重编译了一遍),编译过程中相关的反馈信息类似于下:
The following bridged networks have been defined:
. vmnet0 is bridged to eth0
. vmnet2 is bridged to wlan0
所以在我的机器上就是vmnet0桥接到有线网卡了,vmnet2桥接到无线网卡了
编译完后,以后查看网络桥接配置信息方法及在我的机器上的显示:ubuntu网络配置
$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网络配置文件的位置,应该有一个配置文件的,直接看配置文件更简单直接,知道的同志不妨说说。
顺便说一下,关于重编译也很容易的,因为一旦升级了ubuntu,若更新内核就要重新编译,否则vmware不能运行,所以肯定要习惯的。
很详细阿 :D 相当感谢你,只是按照你给的修改内容修改后重新编译却是错的。修改内容似乎不本身有点语法问题吧。我自己也稍微修正了一下语法方面的问题,再编译还是错误。不知为何。要不LZ你把你的bridge.c文件邮箱传给我吧。顺便说一下,我用的是VM6.03的版本。我的内核是-2.6.24-18。我是根据 /read.php?tid=653436&page=1 的方法,修改了安装补丁的bridge.c文件进行重装的。我的邮箱是:plan0412@yahoo。再次感谢LZ的热心帮助
我试试能不能上传。以前我上传都失败。....果然不能上传.c文件,索性上传整个vmnet.tar,反正不大。
附件:
文件注释: 我修改过的bridge.c,然后重打包的vmnet.tar
vmnet.tar [520 KiB]