我正在尝试使用已经存在的硬盘使用 Oracle VirtualBox 创建一个新的虚拟机。当我尝试选择现有的硬盘文件时,一个 .vhd 文件,它显示一个错误,指出无法使用虚拟硬盘,因为 UUID 已经存在。
所以我尝试了以下命令来更改它的 UUID。
VBoxManage internalcommands sethduuid /home/user/VirtualBox VMs/drupal/drupal.vhd
我得到这个错误。
语法错误:无效的 UUID 参数
我该如何解决这个问题?
我正在尝试使用已经存在的硬盘使用 Oracle VirtualBox 创建一个新的虚拟机。当我尝试选择现有的硬盘文件时,一个 .vhd 文件,它显示一个错误,指出无法使用虚拟硬盘,因为 UUID 已经存在。
所以我尝试了以下命令来更改它的 UUID。
VBoxManage internalcommands sethduuid /home/user/VirtualBox VMs/drupal/drupal.vhd
我得到这个错误。
语法错误:无效的 UUID 参数
我该如何解决这个问题?
正确的命令是以下命令。
VBoxManage internalcommands sethduuid "/home/user/VirtualBox VMs/drupal/drupal.vhd"
虚拟磁盘的路径包含一个空格,所以必须用双引号括起来,以免被解析为两个参数。
以下对我有用:
运行VBoxManage internalcommands sethduuid "VDI/VMDK file"两次(第一次只是为了方便生成一个 UUID,你可以使用任何其他 UUID 生成方法代替)
在文本编辑器中打开.vbox 文件
将Machine uuid="{...}"中的 UUID 替换为您第一次运行 sethduuid 时获得的 UUID
将在HardDisk uuid="{...}"和Image uuid="{}"(接近尾声)中找到的 UUID 替换为第二次运行 sethduuid 时获得的 UUID
如果您已将磁盘(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 版本。5.1.8 在 Mac OS X El Capitan 上运行。
我已经在网上搜索了有关 MAC OS 的答案,所以.. 解决方案是
cd /Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/MacOS/
VBoxManage internalcommands sethduuid "full/path/to/vdi"
虽然你已经解决了这个问题,但我只是在这里为其他一些有类似问题的人发布原因。
原因是您的路径(目录名称VirtualBox VMs)中有一个空格,它将分隔命令。所以出现错误。
该命令失败,因为它在文件夹名称之一(即“VirtualBox VMs”)中有空间。
VBoxManage internalcommands sethduuid /home/user/VirtualBox VMs/drupal/drupal.vhd
如果文件夹名或文件名没有空格,则即使不引用该命令也将起作用,例如在将“VirtualBox VMs”更改为“VBoxVMs”之后
VBoxManage internalcommands sethduuid /home/user/VBoxVMs/drupal/drupal.vhd
尽管问的这个问题很老,但请注意,在 Windows 系统中更改虚拟 HDD 上的 UUID 会使 Windows 将其视为未激活的机器(因为它会注意到磁盘更改)并要求重新激活!
与 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中获取并启用快速编辑,然后右键粘贴。
原始解决方案的另一种选择是\在空格之前使用转义字符:
VBoxManage internalcommands sethduuid /home/user/VirtualBox\ VMs/drupal/drupal.vhd