如何更改虚拟磁盘的 UUID?

我正在尝试用 OracleVirtualBox 创建一个新的虚拟机,使用一个已经存在的硬盘。当我尝试选择现有硬盘文件时,一个。在 vhd 文件中,它显示一个错误,说明由于 UUID 已经存在,VHD格式无法使用。

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

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

我得到了这个错误。

语法错误: 无效的 UUID 参数

我该怎么办?

249162 次浏览

正确的命令如下。

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

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

虽然你已经解决了这个问题,我只是在这里张贴的原因,其他一些类似的问题。

原因是您的路径(目录名 VirtualBox VMs)中有一个空格将分隔命令。

命令失败,因为它在其中一个文件夹名称中有空间, 例如,‘ VirtualBox VM。

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

如果文件夹名或文件名没有空格,那么即使没有引号,命令也能正常工作, 例如将「 VirtualBoxVM 」更改为「 VBoxVM 」

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

尽管这个问题已经过时了,但请注意,在 Windows 系统中更改虚拟硬盘上的 UUID 将使 Windows 将其视为未激活的机器(因为它注意到磁盘的更改) ,并要求重新激活!

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

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

以下几点对我很有效:

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

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

  3. 将在 Machine uuid = “{ ... }”中找到的 UUID 替换为第一次运行 sethduid 时获得的 UUID

  4. 用第二次运行 sethduid 时获得的 UUID 替换在 硬盘 uuid = “{ ... }”图像 uuid = “{}”中找到的 UUID (在末尾)

如果已经将磁盘(vmdk 文件)从一台计算机复制到另一台计算机,并且需要在复制中更改磁盘的 UUID,则不需要像另一个答案所建议的那样更改 Machine 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>

对于运行在 Mac OS X El Capitan 上的 VirtualBox 5.1.8版本来说,这个方法很管用。

我已经在网上搜索了一个关于 MAC 操作系统的答案,所以. . 解决方案是

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


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

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

cd %programfiles%\Oracle\VirtualBox


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

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