如何更改虚拟框中的UUID

我尝试使用已有的硬盘在虚拟盒子中创build一个新的虚拟机,但是当我尝试select现有的硬盘文件(一个.vhd文件)时,会显示虚拟硬盘无法使用的错误, UUID已经存在。

所以我试了命令:

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

更改.vhd文件的UUID。 但是,然后我得到这个错误:

 sethduuid <filepath> [<uuid>] Assigns a new UUID to the given image file. This way, multiple copies of a container can be registered. WARNING: This is a development tool and shall only be used to analyse problems. It is completely unsupported and will change in incompatible ways without warning. Syntax error: Invalid UUID parameter 

我该如何解决这个问题?

我find了

如果我使用“”在最后它将工作

最后这里是命令

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

以下为我工作:

  1. 运行VBoxManage内部命令sethduuid“VDI / VMDK文件”两次(第一次只是方便地生成一个UUID,你可以使用任何其他的UUID生成方法)

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

  3. 用您在第一次运行sethduuid时获得的UUIDreplace在机器uuid =“{…}”中find的UUID

  4. 用您在第二次运行sethduuid时获得的UUIDreplace在HardDisk uuid =“{…}”Image uuid =“{}” (结尾处)中find的UUID

虽然你已经解决了这个问题,但是我只是把这个原因提交给其他一些类似问题的人。

原因是你的path中有一个空间(目录名VirtualBox VMs )将分开的命令。 所以出现错误。

该命令失败,因为它有一个文件夹名称中的空间,即'VirtualBox虚拟机。

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

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

 VBoxManage internalcommands sethduuid /home/user/VBoxVMs/drupal/drupal.vhd 

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

您只需要为磁盘映像指定一个新的UUID:

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

然后用你的* .vbox文件中两个地方的新生成的UUIDreplace旧的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上运行。

即使这个问题是旧的,请注意,更改Windows系统中的虚拟硬盘上的UUID将使Windows视为未激活的机器(因为它注意到磁盘更改),并会要求重新激活!

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

 cd /Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/MacOS/ VBoxManage internalcommands sethduuid "full/path/to/vdi" 

原始解决scheme的另一种替代方法是在空间之前使用转义字符\

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