141

我正在尝试使用已经存在的硬盘使用 Oracle VirtualBox 创建一个新的虚拟机。当我尝试选择现有的硬盘文件时,一个 .vhd 文件,它显示一个错误,指出无法使用虚拟硬盘,因为 UUID 已经存在。

所以我尝试了以下命令来更改它的 UUID。

VBoxManage internalcommands sethduuid /home/user/VirtualBox VMs/drupal/drupal.vhd

我得到这个错误。

语法错误:无效的 UUID 参数

我该如何解决这个问题?

4

9 回答 9

182

正确的命令是以下命令。

VBoxManage internalcommands sethduuid "/home/user/VirtualBox VMs/drupal/drupal.vhd"

虚拟磁盘的路径包含一个空格,所以必须用双引号括起来,以免被解析为两个参数。

于 2013-07-23T07:21:30.187 回答
41

以下对我有用:

  1. 运行VBoxManage internalcommands sethduuid "VDI/VMDK file"两次(第一次只是为了方便生成一个 UUID,你可以使用任何其他 UUID 生成方法代替)

  2. 在文本编辑器中打开.vbox 文件

  3. Machine uuid="{...}"中的 UUID 替换为您第一次运行 sethduuid 时获得的 UUID

  4. 将在HardDisk uuid="{...}"Image uuid="{}"(接近尾声)中找到的 UUID 替换为第二次运行 sethduuid 时获得的 UUID

于 2016-03-31T08:24:34.813 回答
15

如果您已将磁盘(vmdk 文件)从一台机器复制到另一台机器,并且需要在副本中更改磁盘的 UUID,则无需像另一个答案所建议的那样更改机器 UUID。

您需要做的就是为磁盘映像分配一个新的 UUID:

VBoxManage internalcommands sethduuid your-box-disk2.vmdk
UUID changed to: 5d34479f-5597-4b78-a1fa-94e200d16bbb

然后在 *.vbox 文件中的两个位置用新生成的 UUID 替换旧的 UUID

<MediaRegistry>
  <HardDisks>
    <HardDisk uuid="{5d34479f-5597-4b78-a1fa-94e200d16bbb}" location="box-disk2.vmdk" format="VMDK" type="Normal"/>
  </HardDisks>

并且在

    <AttachedDevice type="HardDisk" hotpluggable="false" port="0" device="0">
      <Image uuid="{5d34479f-5597-4b78-a1fa-94e200d16bbb}"/>
    </AttachedDevice>

它适用于 VirtualBox 版本。5.1.8 在 Mac OS X El Capitan 上运行。

于 2016-12-15T23:09:14.420 回答
12

我已经在网上搜索了有关 MAC OS 的答案,所以.. 解决方案是

cd /Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/MacOS/

VBoxManage internalcommands sethduuid "full/path/to/vdi"
于 2017-04-14T17:40:36.357 回答
11

虽然你已经解决了这个问题,但我只是在这里为其他一些有类似问题的人发布原因。

原因是您的路径(目录名称VirtualBox VMs)中有一个空格,它将分隔命令。所以出现错误。

于 2013-08-27T01:36:46.200 回答
6

该命令失败,因为它在文件夹名称之一(即“VirtualBox VMs”)中有空间。

VBoxManage internalcommands sethduuid /home/user/VirtualBox VMs/drupal/drupal.vhd

如果文件夹名或文件名没有空格,则即使不引用该命令也将起作用,例如在将“VirtualBox VMs”更改为“VBoxVMs”之后

VBoxManage internalcommands sethduuid /home/user/VBoxVMs/drupal/drupal.vhd
于 2014-02-20T11:56:29.003 回答
4

尽管问的这个问题很老,但请注意,在 Windows 系统中更改虚拟 HDD 上的 UUID 会使 Windows 将其视为未激活的机器(因为它会注意到磁盘更改)并要求重新激活!

于 2015-07-02T10:28:32.990 回答
4

与 Windows x64 的 @Al3x 相同的解决方案,在cmd.exe

cd %programfiles%\Oracle\VirtualBox

VBoxManage internalcommands sethduuid "full/path/to/.vdi"

这会随机化磁盘的 UUID。专业提示:按住shift右键.vdi文件,选择“复制为路径”,"full/path/to/.vdi"在cmd.exe中获取并启用快速编辑,然后右键粘贴。

于 2018-11-14T09:03:58.170 回答
2

原始解决方案的另一种选择是\在空格之前使用转义字符:

VBoxManage internalcommands sethduuid /home/user/VirtualBox\ VMs/drupal/drupal.vhd
于 2015-09-09T00:21:22.710 回答