最近一直折腾Debian啊,KDE已经玩的很熟练了,LXDE碰到点麻烦,startlxde命令执行后什么事情都没发生啊,不知道如何解决。只能盘算着先用用Debian的Live版本。

今天想开启VMware Player的,没想到VMware Player开不出来了,从错误信息中,得知编译出现错误。我的Fedora的内核不知道什么时候升级到2.6.40了。2.6.40其实就是3.0改个名字而已,怀疑大约是代码发生改动,使得VMware Player编译出错了。因此迅速Google,在 http://osicarg.wordpress.com/2011/07/15/here-is-patch-for-vmware-player-3-1-4-build-385536-on-linux-2-6-39-2-amd64-kernel/ 中找到了解决方案,不过这个解决方案写得并不是很清楚。因此我额外说明下。

下载 这个 tar.bz2 包

解压,然后将其中的五个tar文件(vmblock.tar vmci.tar vmmon.tar vmnet.tar vsock.tar)放入 /usr/lib/vmware/modules/source,覆盖原文件,即可。

然后再用root用户开启VMware Player,即可编译成功。

之所以写这么简单的文章,只是因为希望中文文章至少能有一个Google搜索结果而已,虽然英文搜索结果相当多,但希望帮助到英文不好的Fedora/Linux用户,同时也帮助提升简体中文文章的质量。

使用VirtualBox,一定是看中了他免费的特点(也许还号称开源,虽然我怀疑没有多少人会真的选择OSE版本,缺功能的),否则的话,这个虚拟机和VMware Workstation相比,根本不是一个级别的。VMware完全GUI操作,功能强大,使用方便,运行稳定。VirtualBox的功能就是他一个子集,而且还有大量命令行操作,使用非常不便,Bug也很多,幸亏核心功能还是比较稳定的。

但是在社会主义伟大精神的号召下,我还是想放弃盗版的VMware Workstation,毕竟一台Ubuntu电脑上装一盗版软件实在是不妥。虽然想,但是难度很大,由于学习方面的需求,我对虚拟机的功能要求是非常苛刻的,不仅效率要高,而且一定要有非常先进的母盘差分功能和文件传输功能。前者的意思是多个虚拟机共用一个硬盘文件,当一个虚拟机要向硬盘写入时,实现写时拷贝,就像Linux多个进程共享内存那样,有效的节约了硬盘资源。后者么就是虚拟机和实体机文件传输了。

问题是VirtualBox的这两个功能全都没有,或者说极其落后。Virtual PC和VMware很多年前就有母盘差分和文件拖拽传输,VMware更是实现了丰富的快照功能(快照也是一种简易的差分),而VirtualBox的文件传输必须依靠共享一个文件夹,极其不方便(有人说这样安全,VMware的文件拖拽是不安全的,但在我看来,病毒如果能突破虚拟机,要感染个共享文件夹岂不更加简单,没有人共享文件夹总是只读的吧),他也有快照功能,但是功能弱到绝不可能成为母盘差分的替代品。这也是我多年不使用VirtualBox的主要原因。

不过后来在一个很偶然的机会下,我读到了一篇英文文章(链接),这里面详细描述了VirtualBox的磁盘类型——immutable和writethrough,直到那个时候我才知道原来VirtualBox有很多命令行驱动的隐藏功能,这倒使我对VirtualBox的隐藏功能产生了兴趣,如果这些命令行功能中正好有我想要的,岂不善哉?为此我Google了大量文章,但是收获很少。但我曾经有一次实现了!不知道之前做了神马,最后我把vdi文件权限设为400后,他真的变成了母盘!所有基于他的虚拟机都可以同时开启并且互不影响的操作,但后来我发现,这是个很偶然的操作下诱发的Bug,我无法在另一台电脑上复制这个操作。尤其是VirtualBox进入4.0版本后,似乎还修复了这个Bug。VirtualBox 4.0还取消了存储选项中的一个叫Differencing Disk的选项,之前版本我其实也不知道这个选项究竟干吗用,现在索性还取消了。

我曾经还在Ubuntu中文论坛发过求助帖,但是无一人回帖,令我对这个论坛深感失望。

又是很偶然的,翻了Google排名较后的文件,发现了一篇BlogSpot的英文文章(链接),察看缓存,竟然发现正是我要的!这篇文章最大的特点就是没有用到Differencing Disk的选项,非常符合目前的情况。

创建好虚拟机之后,在VirtualBox Media Manager下选中即将成为母盘的VDI文件,右击Release。这样,既有的虚拟机将和这个VDI文件完全脱离关系。你也许能想出各种让VDI文件孤立的办法,但是请一定要使用上述方法,用其他方法几乎都会报错。

切到终端下(Linux系统的骄傲!VirtualBox是我见过唯一的在Linux平台下使用比在Windows平台下使用更加方便的多平台软件,方便就体现在这里),使用这样一个命令:

VBoxManage modifyhd <disk file>  --type immutable

把VDI文件转换为immutable文件,顺便把文件权限设为400吧,这样的VDI才是真正意义上的母盘。好,现在创建各种基于她的虚拟机吧!

其实之前的动作只是创建immutable盘的标准操作而已(什么是immutable盘?是指每次关闭虚拟机后,之前的所有操作全部回滚,再打开后就像一个从没被操作过的虚拟机一样),后面的才是重点。

图上的只是演示,我觉得在VirtualBox Media Manager下找到新虚拟 机的VDI文件(其实是基于母盘的快照)的路径更方便些,复制这个路径,使用以下命令:

VBoxManage modifyhd <differencing disk file> --autoreset false

把自动回滚取消,这样的immutable盘既实现了母盘差分,又不会在每次关闭后回滚,符合了我的要求。

真够麻烦的,其实Sun/Oracle要加个母盘差分功能很难吗?不可能。但他就是没有这么做,其中的原因么,不得而知了。不过随着进一步的深入研究,应该是能找到比这更方便的操作的。

至于文件传输,还是配个FTP吧,比她自带的共享文件夹功能还方便点。

后来发现:VMware Player也不错,同样也是免费产品,功能还行,非常稳定。与VMware Workstation相比,VMware Player仅仅失去了快照和母盘差分功能,与VirtualBox相比,VMware Player非常方便的文件拖拽功能,和其特色的Unity功能依然胜过他,如果不需求快照和母盘差分功能,还是考虑VMware Player吧,更好些!

刚刚在Ubuntu 10.10下安装了Vmware,可能因为新版本尚未发布,老版本7.1.2最高只兼容到Ubuntu 10.04,因此虽然安装顺利,但每次打开时都会显示如下字样“Before you can run VMware, several modules must be compiled and loaded into the running kernel.” 点击Install,键入root密码,显示一个标题为“VMware Kernel Module Updater”的对话框,等待编译,才能启动Vmware。而且这样的编译不是仅仅一次,而是每次打开Vmware都会,即使期间没有重启过。

这显然是个很费时和很麻烦的事,于是我Google了一下,首先确定这个问题仅仅发生在Ubuntu 10.10下,其次,要修复这个问题,也很简单:

只要修改/etc/vmware/config,将VSOCK_CONFED设置为“no”即可解决。

参考文献:
resalxh.wordpress.com/2010/09/09/vmware-player-3-1-1-on-ubuntu-10-10-maverick-meerkat/