VirtualBox 使用中遇到的问题和解决方法

   Updated: 2016-09-30 21:34       VirtualBox 使用中遇到的问题和解决方法无评论

环境:VirtualBox+Windows 宿主系统

如何复制已经安装好的虚拟机

VirtualBox 中已经安装好的虚拟系统为.vdi 文件,直接复制后是不能使用的,因为两个.vdi 文件的 UUID 一样,VirtualBox 中要求 UUID 不能一致,所以解决办法就是更改.vdi 文件的 UUID。

什么是 UUID?参考 wikipedia 的 UUID 条目。我们使用的 Windows 操作系统就有 UUID 这个东西,只是我们平时使用的网络环境很少提及它。Ghost 的系统就存在 UUID 重复的情况。工作组环境,UUID 重复不会有任何问题,但在域环境中,重复的 UUID 是不允许的。

VirtualBox 没有图形化的更改 UUID 的操作界面,网上搜索到的命令也是老版本的 VirtualBox 适用,新版本的 VirtualBox 的命令已经有所变化。由于 VirtualBox 有很详细的 UserGuide,虽然为英文,但看起来也不是很难。

有两种方法:

  1. 用命令克隆已经存在的.vdi 文件,克隆后会自动更改 UUID。打开 cmd 窗口,cd 到 VirtualBox 的安装目录,命令如下:

    VBoxManage clonevdi < 源 vdi 文件路径> < 目标 vdi 文件路径>

  2. 先手动复制.vdi 文件,然后用命令更改 UUID。用如下命令更改 UUID:

    VBoxManage internalcommands sethduuid < 目标 vdi 文件路径>

注:注意有下划线的单词,网上搜索到的不是我这里这样的命令,而是 setvdiuuid,这个命令应该是针对 4.0 以前的 VirtualBox 适用。

如何禁用客户机的时间同步

默认情况下,客户机的日期和时间会自动与主机的同步,即使你更改了客户机的系统时间,它也会马上更正,以和主机时间保持一致。有时候需要让客户机的时间不一致的时候就很不方便了。VMWare 里面可以在 VMTooles 里直接禁用时间同步,VirtualBox 里虽然也有类似 VMTools 的工具(叫 VirtualBox Guest Additions),但是不能设置。

方法如下:

  1. 进入客户机系统,禁用 windows time 服务
  2. 打开注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\VBoxService,修改 ImagePath 值为:system32\VBoxService.exe --disable-timesync(就是在原来的值后添加一个禁用时间同步的参数)
  3. 重启后生效

但即使这样设置了,虚拟机启动的时候还是会与主机做时间同步,所以每次启动还得手动修改时间。

经测试,如此设置后,客户机的日期还是会与主机的同步,但是时间就不会同步了。个人感觉基本没用。

所以我现在如要调整客户机的时间,就首先调整主机的时间,马上就会自动同步过去。

如何将几台虚拟机组建成局域网

只要你将虚拟机的几种网络配置方式(VMWare、VirtualBox 等都是这几种方式)弄明白了就很容易。一般将所有虚拟机网络连接方式设置成 Bridged Adapter,这样虚拟机就相当于真实的计算机了,只要与主机设置在同一网络,他们相互之间就能访问。

另外,要注意 Windows 系统的防火墙,你设置了 IP 在同一网络,却发现还是不能互相访问,关闭防火墙就 OK 了。

如何设置虚拟机访问主机上的数据

在 VirtualBox 中设置 「共享文件夹」。如果想虚拟成一个分区并自动挂载,设置共享文件夹的时候勾选 「自动挂载」 和 「固定分配」。

使可以安装 64 位操作系统的虚拟机

默认情况,VirtialBox 只能安装 32 位的系统。

要使能安装 64 位系统,需要开启主机 BIOS 中的虚拟化技术(VT)。

主机开机进入 BIOS->Security->Virtualization,选择 Enable,然后开机打开 VirtualBox,就可以选择安装 64 位系统了

Ubuntu 下如何安装增强功能

Windows 虚拟机下安装增强功能很简单:先点击 「设备」 下的 「安装增强功能」,以加载一个叫 「VBoxGuestAdditions」 的 ISO 镜像文件到光驱中,然后双击安装程序即可。

Ubuntu 下也是这么个过程,只是明白 Windows 系统下程序安装的人,却不一定明白 Ubuntu 下程序的安装。所以 Ubuntu 下的安装步骤为:

  1. 先启动虚拟机,在点击 「设备」 下的 「安装增强功能」(以加载镜像文件)
  2. 打开 「终端」,依次执行如下命令(注意区分大小写):

    cd /media/VBOXADDITIONS_4.4.4_70112(根据实际修改)

    sudo ./VBoxLinuxAdditions.run

    输入管理密码,等待安装完成即可。

如何设置可以直接拖动主机上的文件到虚拟机中

这个是不行的,VMWare 可以,VirtualPC 可以,就是 VirtualBox 不行,没有办法。只能使用 「数据空间」 来相互复制粘贴文件。

新版本已经可以,在 「设置」 里开启拖放即可(默认禁用)。共享粘贴板也是一样,默认禁用。

VDI 镜像文件压缩

这里针对虚拟机系统为 Windows 系统的。其他系统参考 「参考资料」 的链接。

1、首先进入虚拟机系统,下载微软的 SDelete 工具做清零操作

SDelete 的使用方法,命令:

sdelete -z C:  \\C: 表示 C 盘,如果还有其他分区,同样操作。

搜索出来的别人的文章用的命令都是使用参数-c,我看了参数说明,-c 表示 Clean free space,-z 表示 Zero free space(good for virtual disk optimizaton)。经测试,使用-z 参数能极大的压缩空间。

2、关闭虚拟机

3、物理主机上执行命令(cd 到 VirtualBox 的安装目录):

VBoxManage modifyhd /the-path-of-VDI.vdi --compact  \\执行命令时出错的话,重启一下物理主机试试

4、完成

平时遇到的一些错误

1、启动虚拟电脑的时候提示错误:VT-x is disabled in the BIOS for all CPU modes

Windows XP 环境,这个是由于 32 位 Windows XP 最大支持 3.25G 内存,将分配给此虚拟电脑的内存降低到 3.25G 以内即可

2、升级 Windows 后,虚拟机找不到宿主主机的网卡

卸载 VirtualBox,重启电脑,然后重新安装 VirtualBox 后正常

参考资料:

  1. Oracle VM VirtualBox® User Manual
  2. VirtualBox: 如何复制已安装好系统的 VDI 文件作为新的 Guest 系统磁盘使用?
  3. Wikipedia 条目:UUID
  4. 如何禁用 VirtualBox 的时间同步
  5. virtual box 安装增强功能 (Ubuntu10.04)
  6. VirtualBox VDI 磁盘镜像 - 压缩

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注