如何更改虚拟磁盘的UUID?

问题描述 投票:120回答:9

我正在尝试使用已有的硬盘使用Oracle VirtualBox创建一个新的虚拟机。当我尝试选择现有的硬盘文件(.vhd文件)时,会显示一条错误消息,指出由于UUID已存在而无法使用虚拟硬盘。

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

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

我收到这个错误。

语法错误:无效的UUID参数

我该如何解决这个问题?

virtual-machine virtualbox
9个回答
153
投票

正确的命令是以下命令。

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

虚拟磁盘的路径包含空格,因此必须用双引号括起来以避免将其解析为两个参数。


28
投票

以下对我有用:

  1. 运行VBoxManage内部命令sethduuid“VDI / VMDK文件”两次(第一次只是为了方便地生成UUID,你可以使用任何其他UUID生成方法代替)
  2. 在文本编辑器中打开.vbox文件
  3. 用您在第一次运行sethduuid时获得的UUID替换Machine uuid =“{...}”中找到的UUID
  4. 用你在第二次运行sethduuid时得到的UUID替换HardDisk uuid =“{...}”和Image uuid =“{}”中的UUID(到最后)

10
投票

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

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


10
投票

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

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

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

8
投票

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

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

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

然后将旧的UUID替换为* .vbox文件中两个位置中新生成的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 ver。 5.1.8在Mac OS X El Capitan上运行。


5
投票

该命令失败,因为它在其中一个文件夹名称中有空格,即'VirtualBox VMs。

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

如果文件夹名称或文件名没有空格,则该命令即使不引用它也可以工作,例如将'VirtualBox VMs'更改为'VBoxVMs'之后

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

3
投票

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


3
投票

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

cd %programfiles%\Oracle\VirtualBox

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

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


2
投票

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

VBoxManage internalcommands sethduuid /home/user/VirtualBox\ VMs/drupal/drupal.vhd
© www.soinside.com 2019 - 2024. All rights reserved.