分类: LINUX
2008-05-06 14:28:33
测试环境:
HOST:HP NC6000笔记本,1.6G的CPU,512M+256M的内存,主机系统为Kubuntu 7.10,采用DHCP获取地址,地址段为10.32.150.*,上外网需要通过代理。
GUEST:WINXP SP2
由于我是在内网,连接Internet比较慢,所以直接下载了VirtualBox 1.5.2的DEB包。安装的时候还依赖libxalan110和libxerces27两个包,我就直接在packages.ubuntu.com上下载了。由于在配置网络过程中还需要bridge-utils和uml-utilities我也一并下载了。
一、安装VirtualBox 1.5.2
安装过程很简单,直接使用dpkg安装:
sudo dpkg -i libxalan110_1.10-3_i386.deb
sudo dpkg -i libxerces27_2.7.0-3_i386.deb
sudo dpkg -i virtualbox_1.5.2-25433_Ubuntu_gutsy_i386.deb
sudo dpkg -i bridge-utils_1.2-1build1_i386.deb
sudo dpkg -i uml-utilities_20060323-3ubuntu2_i386.deb
安装完成后,在Kubuntu的开始菜单的系统里面有可以看到VirtualBox了。
二、安装操作系统
然后我是从硬盘镜像安装的,所以在CDROM的配置时直接选择了在硬盘上的WINXP镜像,然后直接将网络配成NAT了。安装的时候我分了4G给虚拟机,内存分配了512M。
三、网络配置
VirtualBox的网络配置分为3种方式:NAT,Host Interface,Internal Network;我试了前两种方式。
NAT
这种方式非常简单,简单得在某种情况下让你感觉不到这种方式的存在。只要在“Setting/Network”里将“Attach to”选择NAT就行了。然后虚拟机启动后Guest机采用DHCP的方式从VirtualBox虚拟的DHCP服务器上获取IP地址。
不过这种方式有个问题, NAT地址池的地址不能修改,启动系统用ipconfig /all可以看到网关就是10.0.2.2,同时在主机上又不能手工添加路由,十分郁闷。而我们公司刚好也是使用10.*.*.*的网段,结果是我访问外网可以,但是访问内网反而不行了。所以,只能尝试使用第二种方式。
Host Interface
这种方式搞得我比较郁闷,我按照VirtualBox网站上提供的UserManual看了半天,试了几次,总是不行。后来在网上搜了半天,满世界都是leemars的那片文章在转来转去,且还用到了iptables,我对这个东东又不太熟,搞了半天还是不行。后来又发现Alexey Eremenko的《Using VirtualBox: the new era User-Friendly x86 PC Virtualizer》,照着一试还真行了,但是这种方法都是手工在执行命令,虽然可以写成脚本执行也感觉挺麻烦的,就想着能不能像UserManual一样直接修改/etc/network/interfaces文件搞定,然后就对照着这篇文章,发现UserManual里没有注意的几点,下面是我的配置步骤:
i.设置/dev/net/tun的读写权限,这个东东早晚都得做,就早做了,并且只用一次就行了
chmod 0666 /dev/net/tun
ii.生成tap0接口
在/etc/network/interfaces中加入如下内容(username为使用VirtualBox的用户名):
auto tap0
iface tap0 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
tunctl_user username
这一步对应的操作为:
$sudo tunctl -t tap0 -u username
$sudo ifconfig tap0 0.0.0.0 up
iii.生成br0桥
在/etc/network/interfaces中加入如下内容:
auto br0
iface br0 inet dhcp
bridge_ports eth0 tap0
up ifconfig $IFACE up
这一步对应的操作为:
$sudo brctl addbr br0
$sudo brctl addif br0 eth0 tap0
$sudo dhcpcd br0
$sudo ifconfig br0 up
如果手工执行时,可能会报没有dhcpcd命令,需手工安装:
$export http_proxy=http://代理服务器:端口
$sudo apt-get install dhcpcd
iv.确保tap0和eth均未配置IP地址
这一步实际上就是把eth0的网口的地址清掉,将/etc/network/interfaces中的eth0段改为如下内容即可:
iface eth0 inet manual
up ifconfig $IFACE 0.0.0.0 up
这一步对应的操作为:
$sudo ifconfig eth0 0.0.0.0 up
v.现在打开VirtualBox的GUI,选中你的虚拟机,在“Setting/Network”中修改“Attached to”为“Host Interface”,然后在“Interface name”中输入tap0即可。
vi.现在启动虚拟机,我的Windows XP已经工作正常了,内网已经可以正常访问了,然后进行代理服务器设置,工作正常!
四、Windows与Linux文件共享
在VirtualBox的GUI中选择虚拟机,“Setting/Shared Folders”,添加你要共享的目录,然后在Windows中,打开我的电脑,在“工具/映射网络驱动器”的“文件夹”中输入“\\vboxsvr\你的共享文件夹名”(无括号),驱动器可以自己选择,确定即可。
我把我原来Windows的几个盘全部共享过来了,呵呵,就像在直接安装的Windows系统下一样使用。由于Kubuntu 7.10已经可以直接写NTFS格式的磁盘,我甚至可以直接将相关文档保存到我的本地硬盘了。
五、其他
VirtualBox还有一个小功能,可以在Guest和Host之间共享剪贴板,所以在Host上拷贝的东东,可以直接粘贴到Guest上,反之依然。