显示标签为“VirtualBox”的博文。显示所有博文
显示标签为“VirtualBox”的博文。显示所有博文
5
Posted on 16:04:00 by Unknown and filed under ,

  之前曾经使用 VirtualBox 安装过 Ubuntu,现在因为测试需要,准备安装一下 Windows XP。

  结果一上来就遇到一个问题,在格式化一步出错,提示:Unable to allocate and lock memory...错误 ID:HostMemoryLow。原来是我把虚拟机的内存设置得太大了(设置的是 128M 好像,主机内存 1G+2G 页面缓存)。后来修改成 64M 就可以了。

  VirtutalBox 的虚拟硬盘是保存成 VDI 文件的,在虚拟系统运行的任何时刻,都可以生成一个当前系统运行状态的快照(Snapshots)。这个备份是保存在 Snapshots 目录下的一个新的 VDI 文件中,在快照生成之后的所有操作都是保存在这个新的 VDI 文件中,原始的文件就不会发生变化了。通过快速修复界面,可以恢复最近的快照。

  注意,当你新生成或者删除某一个快照备份的时候,原始的 VDI 就会发生变化,保存的是当前的系统状态。

  但是,VirtualBox 的快照恢复顺序类似与一个堆栈,只能恢复最近的快照,想要生成更早一点的状态,只能把最近的快照删除才行。这点也很好理解,因为如果想要并行保存两个状态,那势必要占用两份空间,而 VirtualBox 的快照是一个增量备份的过程,所以它只能线性恢复。

  而我们软件测试,是需要在同一个操作系统的不同软件环境下进行,比如需要保存刚刚安装完 Windows 的状态,还要保存已经安装常用软件的状态。这样就需要把虚拟硬盘的 VDI 文件多保存几份了。但是,直接复制 VDI 文件是不行的,因为 VirtualBox 对每个 VDI 文件有一个 uuid,所以直接复制以后无法注册,因为 uuid 是相同的。

  在帮助文件中给出了解决方案,就是通过命令行中使用 VBoxManage 的 clonevdi 的方法来复制一个 VDI 文件,并重新生成一个 uuid。使用方法如下,注意文件名如果有空格,需要用引号括起来。

VBoxManage clonevdi <uuid>|<filename> <outputfile>

  复制的过程相当慢...

  如何压缩虚拟硬盘的大小,在 VBoxManage 中有一个 modifyvdi compact 的命令,如果选用了动态分配磁盘,可以试试。注意到,因为在频繁的文件操作后,将会有大量的空间只被标记为删除,但是并没有真的清空。这样压缩就会没什么效果。

  一种方法是使用 Ghost 备份一下然后再恢复。另一种方法是:

  1. 首先进行磁盘碎片整理。
  2. 然后使用 Sysinternals 的一个命令行工具 SDelete,在 Guest OS 中执行:sdelete -c c:\ ,把C盘中标记为未使用的空间清0。
  3. 在 Host OS 中执行:VBoxManage modifyvdi "文件名.vdi" compact
0
Posted on 00:36:00 by Unknown and filed under ,

  好吧,这个已经不算新闻了...我最近用 VirtualBox 安装了 Ubuntu 8.04,过程很简单,也没有遇到太大的问题。

  安装完以后,需要安装增强工具包(VirtualBox Guest Additions),这样才能正确设置显卡什么的。安装这个比较简单:

cd /media/cdrom

sudo bash ./VBoxLinux*

  虚拟机中传递文件要用到虚拟文件夹,Guest OS 为 Linux 时,使用:

mount -t vboxsf [-o OPTIONS] sharename mountpoint

就可以使用了。

  比如我首先在建立一个目录 /mnt/share,我要挂载 hostshare 这个文件夹,只需要输入:

mount -t vboxsf hostshare /mnt/share

  我发现 VirtualBox 还是很好用的,而且有一个无缝结合的技术非常好玩,它可以把两个操作系统放在一起,可以很智能地切换应用程序。