如何更改虚拟框中的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