如何更改虚拟磁盘的UUID?


131

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

因此,我尝试使用以下命令更改其UUID。

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

我得到这个错误。

语法错误:无效的UUID参数

我该如何解决?


1
正如您已经发现的那样,具有空格字符的路径应该用双引号引起来。
AB

Answers:


171

正确的命令是以下命令。

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

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


25
我真的希望VirtualBox拥有一些UI或窗口来允许我们更改它
fedmich 2015年

1
由于文件路径中的空间,需要对此进行引用。
克里斯·斯特里钦斯基

如果在您尝试打开已知磁盘时,VirtualBox UI提供了生成新UUID的选项,那就太好了。老实说,我并没有真正使用磁盘管理器,我宁愿VirtualBox只是将虚拟磁盘视为文件路径,而不是尝试将它们视为要管理和跟踪的资源。
jrh

34

以下为我工作:

  1. 两次运行VBoxManage internalcommands sethduuid“ VDI / VMDK文件”(第一次只是为了方便地生成UUID,您可以改用任何其他UUID生成方法)

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

  3. 用第一次运行sethduuid时获得的UUID 替换在计算机uuid =“ {...}”中找到的UUID

  4. 用第二次运行sethduuid时获得的UUID 替换Harddisk uuid =“ {...}”Image uuid =“ {}”(最后)中找到的UUID


1
我认为这个答案对想要复制虚拟机的任何人(包括我)都更有帮助。
cbuchart '16

1
只是想知道-为什么您需要更改Machine uuid?如果我只想将vmdk磁盘从一台计算机复制到另一台计算机,则不需要它,对吗?
Oleg Gryb '16

1
如果您在同一台计算机上复制虚拟磁盘,则需要更改计算机的uuid
borchvm 2016年

1
在我的情况下工作完美-谢谢!我不需要调整计算机的UUID。
Benco '18

1
希望@FabrizioBertoglio有您的答案-但您需要停止任何形式的vbox服务才能编辑这些文件-否则,您将获得相同的权限。另外,请确保配置文件底部的SATA HardDisk <连接的设备>的UUID与配置文件顶部“硬盘驱动器”部分中的硬盘的UUID匹配。在执行任何此操作之前,您还需要添加<Hardware UUID = myMachineUUID>。
肯(Ken)

12

如果您已将磁盘(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 ver。对我有用。5.1.8在Mac OS X El Capitan上运行。


你可能是对的。我按照了您的指示进行操作,即使硬盘file -> Virtual Media Manager在机器设置上和机器设置上均以正确的UUID 正确显示,我仍然遇到“查询UUID失败”的错误
Fabrizio Bertoglio

我不确定您的情况是什么。我上面所描述的正是我所做的,并且它在Mac上使用VB 5.1.8的工作
原理

我已通过以下步骤解决了该问题:1. re-installing virtual box using synaptic package manager然后2. In the virtual box machine configuration, I did not disable the Floppy disk and EFI Setting. I kept them enabled.该问题已解决。
Fabrizio Bertoglio

@OlegGryb它可能取决于主机操作系统以及来宾操作系统。
肯(Ken)

11

尽管您已经解决了问题,但我还是在这里为其他一些存在类似问题的人发布了原因。

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


11

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

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

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

1
超级有帮助!
Addo Solutions

6

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

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

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

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

4

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


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中的快速编辑,然后右键单击以进行粘贴。


2

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

VBoxManage internalcommands sethduuid /home/user/VirtualBox\ VMs/drupal/drupal.vhd
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.