如何在虚拟框中更改UUID

Cha*_*kar 125 virtualbox virtual-machine

我正在尝试使用已有的硬盘在虚拟盒中创建一个新VM,但是当我尝试选择现有的硬盘文件(.vhd文件)时,它会显示一个错误,即无法使用虚拟硬盘,因为UUID已经存在.

所以我尝试了这个命令:

VBoxManage internalcommands sethduuid /home/user/VirtualBox VMs/drupal/drupal.vhd
Run Code Online (Sandbox Code Playgroud)

更改.vhd文件的UUID.但后来我得到了这个错误:

VBoxManage internalcommands sethduuid /home/user/VirtualBox VMs/drupal/drupal.vhd
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

Cha*_*kar 158

我找到了

如果我最后使用""它将工作

最后这里是命令

VBoxManage internalcommands sethduuid "/home/user/VirtualBox VMs/drupal/drupal.vhd"
Run Code Online (Sandbox Code Playgroud)

  • 我真的希望VirtualBox有一些UI或窗口,允许我们改变它 (23认同)
  • 由于文件路径中的空间,这需要引用。 (2认同)

bor*_*hvm 29

以下对我有用:

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

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

  3. 用您在第一次运行sethduuid时获得的UUID 替换Machine uuid ="{...}"中找到的UUID

  4. 用你在第二次运行sethduuid时得到的UUID 替换HardDisk uuid ="{...}"Image uuid ="{}"中的UUID(到最后)

  • @FabrizioBertoglio 希望你有答案 - 但你需要停止任何类型的 vbox 服务才能编辑这些文件 - 否则你会得到相同的 ole 相同的 ole。另请确保配置文件底部的 SATA 硬盘 <附加设备> 的 UUID 与配置文件顶部的硬盘部分中的硬盘 UUID 相匹配。在执行任何操作之前,您还需要添加 <Hardware UUID = myMachineUUID > 。 (2认同)

Jav*_* Xu 11

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

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


小智 11

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

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

VBoxManage internalcommands sethduuid "full/path/to/vdi"
Run Code Online (Sandbox Code Playgroud)


Ole*_*ryb 9

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

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

VBoxManage internalcommands sethduuid your-box-disk2.vmdk
UUID changed to: 5d34479f-5597-4b78-a1fa-94e200d16bbb
Run Code Online (Sandbox Code Playgroud)

然后将旧的UUID替换为*.vbox文件中两个位置中新生成的UUID

<MediaRegistry>
  <HardDisks>
    <HardDisk uuid="{5d34479f-5597-4b78-a1fa-94e200d16bbb}" location="box-disk2.vmdk" format="VMDK" type="Normal"/>
  </HardDisks>
Run Code Online (Sandbox Code Playgroud)

并在

    <AttachedDevice type="HardDisk" hotpluggable="false" port="0" device="0">
      <Image uuid="{5d34479f-5597-4b78-a1fa-94e200d16bbb}"/>
    </AttachedDevice>
Run Code Online (Sandbox Code Playgroud)

它适用于VirtualBox ver.5.1.8在Mac OS X El Capitan上运行.


jan*_*rvs 6

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

VBoxManage internalcommands sethduuid /home/user/VirtualBox VMs/drupal/drupal.vhd
Run Code Online (Sandbox Code Playgroud)

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

VBoxManage internalcommands sethduuid /home/user/VBoxVMs/drupal/drupal.vhd
Run Code Online (Sandbox Code Playgroud)


mas*_*ilo 6

与 Windows x64 的 @Al3x 相同的解决方案,位于cmd.exe

cd %programfiles%\Oracle\VirtualBox

VBoxManage internalcommands sethduuid "full/path/to/.vdi"
Run Code Online (Sandbox Code Playgroud)

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