在VBox窗口的Devices, mount CD, CD image然后选中VBoxGuestAdditions.iso确定。

Debian控制台下:
mkdir /mnt/cd
mount /dev/cdrom /mnt/cd -t iso9660
cd /dev/cdrom
sh VBoxLinuxAdditions-x86.run help
sh VBoxLinuxAdditions-x86.run

之前要安装build-essential和Linux-header文件
aptitude install build-essential
uname -r查看内核版本。
aptitude search linux-header。
安装对应的头文件。

GuestAdditions的一些功能:

  1. 鼠标指针无缝连接,无需按右Ctrl切换。
  2. 更好的显示支持,在用户缩放Vbox窗口的时候自动调整Guest的分辨率来配合缩放。
  3. 共享文件夹。
  4. 共享剪切板。
  5. 以及非常酷的无缝窗口。

共享文件夹访问
net use x: file:///P|/vboxsvr/sharename
mount -t vboxsf sharename /mnt/vb

无缝窗口把程序窗口从虚拟机里分离出来,这样可以把两个系统中的程序窗口统一起来,貌似Wine的完美替换,右Ctrl+L呼出。

另外装上GuestAdditions以后,就不能以Framebuffer方式启动Linux,否则会僵死掉,至少在我的机器上是这样。

VMware是商业软件,跨平台,性能稳定,用户群广,但在Windows下会开很多服务,没事也来占用资源,这一点不太喜欢。

VirtualPC作为Windows的附加产品免费,当然只有Windows版,开发者也只考虑将其用来虚拟Windows,安装其他系统要颇费周折,而且不支持USB设备。

VirtualBox免费,有开源版本,基于SDL和Qt开发,小巧灵活,功能丰富。

VirtualBox网络设置

九月 12th, 2008

VirtualBox中有三种网络连接方式(不包括Not attached:):NAT,Host Interface以及Internal networking。

  • NAT
    最简单的方法是通过NAT,设置guest系统用DHCP获得ip地址,VBox会自动配置成一个NAT服务器提供guest的外网连接,guest中不同程序发起的网络连接都被转化成Host中virtualbox进程发起的网络连接。
    NAT的缺陷是连接的端口号会被转换不能由程序自由决定,想在虚拟机上对真实网络提供服务还需要设置端口转发。
  • Host Interface
    在Host中创建一个虚拟网卡,然后桥接虚拟网卡和物理网卡,Guest使用这块虚拟网卡来实现与外网的通信。
    桥接可以把几个网卡连起来,发给其中一个网卡的信息会被发给所有的网卡,有点像Hub。用这种方法连接起来的虚拟机,对网络上其他用户来讲,和真实的机器没有区别(它有自己的MAC地址和IP地址),虽然我们只有一块物理网卡,但是桥接后它会把自己置于混杂模式,同时发收两个MAC地址的数据包,不过有些网络设备会阻止一个网卡有多个MAC地址的行为,而且大部分无线网卡也不支持桥接。
    在Windows下通过GUI或VBoxManage createhostif “VM1 external”命令增加一块虚拟网卡后,打开网络连接目录,同时选中新增的网络连接和原来的本地连接,右键会出现创建网络桥接的选项。然后以原来网卡的配置设置网络桥就可以了(Linux的话有一个brctl工具)。然后在Guest中以实际网络的配置配置网卡。
  • Internal networking
    没有试过,据说这种方法可以建立了一个外部不可见的内部网络,因此更安全,并且此时guest和host之间的数据交换不像之前的方法一样通过模拟的网络,而是有直接的内部连接,因此速度更快。

比较而言:
NAT最方便而且绿色不用装额外的东西,但有一些限制。
Host Interface 模拟的最彻底,可以用来做蜜罐实验,但需要在Host中装虚拟网卡驱动,而且不能被共用。
Internal netwoking适合用来做网络实验。

Host:Windows 2003+VirtualBox 2.0.0 for Windows
Guest:Debian etchnhalf

Guest用NAT的方式联网,DHCP自动获取IP地址,ifconfig一下可以发现是一个10.0.2.0的网络,IP地址为10.0.2.15。
而Host的IP地址是172.21.0.15,我们的目的是让Guest上开的ftp服务(10.0.2.15:21),转发为(172.21.0.15:2121)这样的Host网络上其他机器可以访问的地址。

进入虚拟机,在Debian中开一个最简单的ftp

apt-get install ftpd
man in.ftpd
in.ftpd -D
netstat -an |grep 21 确认ftp服务已经开启
apt-get install lftp
lftp 10.0.2.15
user username 系统非root帐号
然后输入密码登录。
ls 查看文件。发现是用户的主目录。

在Host上,用VBoxManage 工具进行端口转发配置。

VBoxManage setextradata “Debox” “VBoxInternal/Devices/pcnet/0/LUN#0/Config/ftpd/Protocol” TCP
VBoxManage setextradata “Debox” “VBoxInternal/Devices/pcnet/0/LUN#0/Config/ftpd/GuestPort” 21
VBoxManage setextradata “Debox” “VBoxInternal/Devices/pcnet/0/LUN#0/Config/ftpd/HostPort” 2121
其实就是编辑了用户主目录下.VirtualBox目录下对应虚拟机的xml文件。注意配置里的pcnet对应于网络设置里的虚拟网卡名,如果不匹配开机时会出现Failed to get the “MAC” value错误。并确认要转发的端口(2121)没有被使用。

重启虚拟机。

在Host下开一个CMD。
netstat -an|findstr 2121,果然2121端口处于LISTENING状态。用一个ftp客户端连本机IP的2121端口,并使用Guest的Linux帐号登录成功。