显示标签为“VirtualBox”的博文。显示所有博文
显示标签为“VirtualBox”的博文。显示所有博文

2012年2月18日星期六

Virtualbox的Bridge模式联网

VitualBox里的虚拟机用Bridge模式来联网,宿主机连接到无线路由器上网。无线路由器设置了MAC地址过滤,要把宿主机无线网卡的MAC地址加到路由器里,宿主机才能上网。而虚拟机网卡的MAC地址是不需要加进路由器的许可列表的,虚拟机依然可以上网。在这种模式下,相当于宿主机的无线网卡,替虚拟机的网卡从路由器又租用了一个IP地址给虚拟机用。在路由器上可以看到宿主机和虚拟机的MAC地址及租用IP。不过不需要将虚拟机MAC地址加入许可列表是比较特殊的一点。
路由器上看到的:X61为宿主机,*为虚拟机

2011年3月4日星期五

不给力的因特尔

在VirtualBox里面安装Fedora 14 x86_64版本失败,显示如下错误:
This kernel requires an x86-64 CPU, but only detected an i686 CPU.
Unable to boot - please use a kernel appropriate for your CPU.
VirtualBox的文档说允许64位客户机要打开APIC支持,我打开后还是出现一样的错误。再看文档,原来需要硬件虚拟化支持:
VirtualBox's 64-bit guest support (added with version 2.0) and multiprocessing (SMP, added with version 3.0) both require hardware virtualization to be enabled. (This is not much of a limitation since the vast majority of today's 64-bit and multicore CPUs ship with hardware virtualization anyway; the exceptions to this rule are e.g. older Intel Celeron and AMD Opteron CPUs.)
我的本本是Dell Inspiron 14v,CPU是因特尔奔腾T4500,不支持VT-x技术。以前攒台式机的时候就要求CPU一定得支持硬件虚拟化,调研发现Intel偏低端的CPU就是不支持VT-x,而AMD就厚道多了,64位的CPU基本都支持AMD-V,最后选择了AMD的CPU。

2011年2月28日星期一

显卡驱动失效

昨晚来了个telinit 1之后,再进去桌面特效就没有了,就先放一边了。后来发现VirtualBox里面的Windows XP都打不开了,出现NS_ERROR_FAILURE (0x80004005)的错误:
 这个不像是内核模块的错误,因为没有其它的错误了。dmesg发现如下信息:
Feb 27 22:46:51 Neverland kernel: [10061.463577] VBoxTestOGL[5390]: segfault at 4 ip 00007f4af0c6938e sp 00007fff6a44cfd0 error 4 in libGL.so.1.2[7f4a f0c0e000+ae000]
看来是显卡驱动没有加载,不支持OpenGL了。而我在XP虚拟机里面打开了3D加速,这个需要宿主机支持OpenGL的。当时由于显卡驱动的问题,这两个复选框都是灰的,没法去掉。下图是恢复后的样子。
今天再次打开ATI的驱动设置,当然是出错消息,但是提示用aticonfig设置。然后就用aticonfig --initial一下,然后重启桌面,桌面特效好了,虚拟机也能启动了。

以后要记得aticonfig这个命令来初始化显卡驱动。

2011年1月9日星期日

VirtualBox的鼠标

装了Android,发现没有鼠标,后来Google了一下,要把Absolute pointing device去掉:
手册里面是这么写的:
 Enable absolute pointing device
If enabled, VirtualBox reports to the virtual machine that a USB tablet device is present and communicates mouse events to the virtual machine through this device. If disabled, mouse events are communicated through a traditional PS/2 virtual mouse device. Using the virtual USB tablet has the advantage that movements are reported in absolute coordinates (instead of as relative position changes), which allows VirtualBox to translate mouse events over the VM window into tablet events without having to "capture" the mouse in the guest as described in the section called “Capturing and releasing keyboard and mouse”. This makes using the VM less tedious even if Guest Additions are not installed.[11]
原来如果是触控板输入,那么这样可以把虚拟机和宿主机的位置统一起来,比较省心,但是如果是普通鼠标,不能勾上这一项。

Android初体验

今天在VirtualBox里面装了Android玩,不用买手机就可以体验Android了。Android-x86这个项目把Android移植到了x86平台,在这里下载

一开始我用的froyo-vm-20100812.iso(2.2),用起来图形很卡,而且装到硬盘上之后进不去。后来用了一个现成的1.6版的虚拟器件,进去不卡,但是网络不通。再用froyo-eeepc-20110101.iso,不卡了,网络也正常。还用了老一点但是稳定版的android-x86-1.6-r2.iso,也没有问题。



台式机上没有WIFI网络,定位功能没法用,就试着在我的Dell Inspiron 14V上装1.6和2.2,Linux能进去,但是图形界面都出不来。毕竟不是拿个笔记本就能兼容的。

2011年1月8日星期六

VirtualBox的硬件3D加速

今天要在VirtualBox的Windows客户机下试验一个Vega Prime的例程,打开的时候vbox弹出如下的对话框:


是说要在客户机里面借用宿主机的硬件3D加速,Guest Additions的版本要和vbox的版本一致。我一看Windows状态栏Guest Additions的版本才是2.1.4,而vbox的版本是3.2.8。这个Guest Additions是宿主机里面的/usr/share/virtualbox/VBoxGuestAdditions.iso文件。Ubuntu不断升级vbox,这个ISO文件也更新了,但是客户机里面安装的Guest Additions不会自动更新,所以里面还是很老的版本。需要再装一次。

装完后Vega Prime的例程可以运行了。但是植物大战僵尸里面的硬件3D加速还是不能启用:



 查看了vbox的手册,有这样一段
For Direct3D support in Windows guests to work, the Guest Additions must be installed in Windows "safe mode". Press F8 when the Windows guest is booting and select "Safe mode", then install the Guest Additions. Otherwise Windows' file protection mechanism will interfere with the replacement DLLs installed by VirtualBox and keep restoring the original Windows system DLLs.
原来要在安全模式下装Guest Additions:

 

这样装过之后,植物大战僵尸里面还是不能启用3D加速。就装了一个Supertux 0.1.3,帧率在90以上。但是如果选择OpenGL模式就会崩溃掉:

这至少说明Direct 3D功能在Supertux里面用上了,不然FPS能达到90多吗。

看了下植物大战僵尸的说明书,系统要求是DirectX 8或者以上的版本,用的不是OpenGL。不能3D加速就不能吧,vbox的手册里面说对Windows客户机的3D加速还是试验性的,所以就别指望每个程序都能用了。

2010年11月26日星期五

VirtualBox的NAT,2

实现了VirtualBox虚拟机通过宿主机的NAT。具体方法见这里。文章中的方法已经自动设置了SNAT,这样在虚拟机里面就可以连接互联网了。

如果要让互联网的主机连接到虚拟机的服务,还需要配置DNAT。比如要让互联网访问虚拟机上的HTTP服务,那么只需在宿主机添加如下iptables规则(前提是在宿主机和虚拟机上都没有别的规则阻碍这一条的生效):
iptables -t nat -A PREROUTING -p tcp -d 192.168.1.2 --sport 1024:65535 --dport 80 -j DNAT --to 172.16.0.209
192.168.1.2是宿主机的IP地址(这个地址通过家用路由器连接互联网),172.16.0.209是虚拟机的IP地址。

实际演示案例中,宿主机是Ubuntu 10.10,开了Apache。虚拟机是Fedora 11,开了nginx。注意Fedora默认的iptables规则拒绝了大部分连接,需要清除掉。在配置上述DNAT规则前,我们在浏览器里面连接到的是宿主机Ubuntu下的Apache。

在配置了上述DNAT规则之后,我们连接上的是虚拟机Fedora下的nginx。

上面的IP地址125.33.200.186是我们宿主机的因特网IP地址,当然也可以用192.168.1.2测试,这样做是为了演示从外面的机器上用因特网地址访问也是可以看到DNAT后的效果的。

2010年11月24日星期三

VirtualBox的NAT,1

VirtualBox (3.2.8)的NAT网络模式在手册里面是这么描述的:
A virtual machine with NAT enabled acts much like a real computer that connects to the Internet through a router. The "router", in this case, is the VirtualBox networking engine, which maps traffic from and to the virtual machine transparently.
这个神秘的NAT engine,是在宿主系统看不到的。而我更希望虚拟机是通过宿主系统的网卡来实现NAT的,这样可以用来模拟测试真实的NAT环境。

2010年4月12日星期一

虚拟机崩溃

我以前总是对VirtualBox的虚拟机不放心。因为每个虚拟的系统,在主系统上就对应一个巨大的映像文件VDI文件。如果这一个文件出点问题,整个系统就完蛋了。相比每个文件也都是单独的话,可靠性就不高了。这只是我的一个假想,但是昨晚的事情证明了这样的文件确实不可靠。

软件提供的功能,我总是喜欢去折腾。我的VB里面装了个Windows XP。我在Linux下没法和我爸爸视频聊天,因为他没有Skype,而Gtalk在Linux下又不支持视频聊天。为了支持USB,我已经把开源版的VB换成了不开源的版本。我在XP的Chrome里面,登录Gmail,打开视频聊天,能看到自己和对方的视频,也能听到声音。嗯,还不错。可是突然一下整个虚拟XP的窗口就关了,这应该不能算是Windows崩溃,而是VirtualBox崩溃了(但主窗口还在)。又试一次,结果整个Ubuntu桌面死机了。这样玩,破坏力太大了。只能强行重启电脑了。但是杯具还在后面。

重启再打开VB,XP虚拟机就进不去了。启动条滚动几下后,就蓝屏自动重启。这样多次都没法进去,只好在虚拟机里面挂载XP的安装盘,想修复一下。进入XP安装盘的修复模式,要求输入管理员密码。这个我都不知道,连密码都没有,哪里来管理员密码。还打算去找个找回密码的软件呢,再重启从硬盘启动,发现系统竟然可以进去了。登录前自动运行了磁盘检查,看起来磁盘错误很多,修复了很多问题。终于可以进去了,不用再为一个虚拟机去折腾了。

虚拟机崩溃的原因已经很清楚了,就是Ubuntu死机的时候,我强行重启,XP的VDI文件没有Sync到硬盘上,导致组成整个系统的单一文件不完整,后果自然很严重了。其实,当时很可能Linux内核本身并没有死掉,我应该按下ALT+SysRq+S键,Sync所有的文件,然后再重启,这样就可以比较安全地重启系统,不至于让虚拟系统崩溃了。

现在VPS很流行,这样如果发生类似上面的意外,后果岂不是会比较严重呢?VMWARE的虚拟机也是一个映像文件。需要赶紧研究一下Xen,看看Xen里面是怎么弄的。