如何更改虚拟框中的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" 
以下为我工作:
- 
运行VBoxManage内部命令sethduuid“VDI / VMDK文件”两次(第一次只是方便地生成一个UUID,你可以使用任何其他的UUID生成方法) 
- 
在文本编辑器中打开.vbox文件 
- 
用您在第一次运行sethduuid时获得的UUIDreplace在机器uuid =“{…}”中find的UUID 
- 
用您在第二次运行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