尝试打开与现有虚拟机具有相同UUID的VM配置


26

尝试添加最初从同一源(通过简单文件复制)复制的两个VirtualBox虚拟机时,在添加第二个虚拟机时,我收到消息

Failed to open virtual machine [...]
Trying to open a VM config [...] which has the same UUID as an existing virtual machine.

(是的,这些机器应该已经被克隆,而不是简单的文件复制,但是在这一点上为时已晚。)

Answers:


40

您可以使用VBoxManage internalcommands sethduuid <VDI/VMDK file>(从VBox安装目录运行)更改HD UUID,但这有两个缺点:它不更新.vbox文件,并且不更改计算机UUID(我没有找到使用VBoxManage进​​行此操作的任何方法。 ),只有HD UUID。

以下对我有用(Win 7,最新的VirtualBox版本):

  1. 运行VBoxManage internalcommands sethduuid <VDI/VMDK file> 两次(第一次只是为了方便地生成UUID,您可以改用任何其他UUID生成方法)
  2. .vbox在文本编辑器中打开文件
  3. <Machine uuid="{...}"sethduuid第一次运行时获得的UUID 替换找到的UUID
  4. 将第二次运行时获得的UUID 替换为<HardDisk uuid="{...}"<Image uuid="{}"(向末尾)找到的UUIDsethduuid

之后,您可以添加虚拟机。这不是一个很干净的解决方案,但似乎不会引起任何问题。


1
这对我有用,但是我在手动复制的VM中也有一张DVD“插入”了。当我编辑.vbox文件时,我不得不更改<DVDImages>...</DVDImages>为仅<DVDImages />“弹出”具有重复UUID的DVD。
JPhi1618

请注意,如果虚拟机具有快照,则还必须对“快照”文件夹中的vdi文件执行相同的步骤。
劳伦特

6

我发现了一种更简单的方法。

克隆现有虚拟机。这会创建一个带有新uuid的新版本,但在所有其他方面,它是同一台机器。

然后将要添加的文件复制到\ user(您的名称)\ Virtual Box VMs \(或虚拟机所在的位置),并覆盖其中的所有现有文件,以替换现有计算机。

为了防止万一,在此之前,我会先备份现有的机器,但是在这里工作得很好。用于将其返回到VM的早期备份,同时将现有版本保留为克隆。


如果您有足够的磁盘空间,这是最简单的方法,谢谢罗伯特。
sddk's

如果有人这样做-他们应该确保vbox文件具有与计算机uuid :: <hardware uuid =“ {...}”>匹配的硬件uuid标记,那么他们可以更改硬盘uuid和计算机uuid,而无需任何问题。<hardware uuid =“ {...}”>
StixO

2

我意识到这是一篇旧文章,但我遇到了这个错误。我通过以下方式解决了它:

  1. 打开虚拟盒子管理器
  2. 右键单击Virtual Box Manager中的虚拟机
  3. 点击“删除”
  4. 将会出现一个弹出窗口。选择“仅删除”,这将仅从Virtual Box Manager中删除虚拟盒的所有痕迹
  5. 关闭虚拟盒子管理器
  6. 使用Linux文件管理器,浏览到包含虚拟机的文件夹
  7. 删除(或移动).vmdk虚拟硬盘文件以外的所有内容
  8. 打开虚拟盒子管理器
  9. 点击“机器”
  10. 点击“新建”
  11. 为新机器命名(我使用的名称与最初使用的名称相同)

    注意:该计算机的名称将成为将包含虚拟机的目录的名称,因此请明智地选择,并且还请注意,如果您希望.vmdk文件位于新目录中,则它将在Virtual Box中采取其他步骤经理

  12. 为出现问题的虚拟机选择正确的类型和版本,然后单击“下一步”
  13. 选择您要虚拟机分配的内存大小,然后单击“下一步”
  14. 选择“使用和现有的虚拟硬盘文件”,然后通过浏览到它的位置来选择它
  15. 选择“创建”

只需按照提示进行操作,然后启动虚拟机。

一切运行正常,无需重新激活Windows等。


1

您也可以克隆现有计算机,然后进入设置并更改存储以使用先前复制的.vmdk。


1

如果由于该错误而无法启动,只需从“ Oracle VM VirtualBox Manager”中“删除...”条目。这样可以清除冲突,然后您就可以从新位置打开VM。

...到那时,您可以执行克隆操作。就我而言,不需要额外的工作,因为我不再需要虚拟机的原始位置。


到目前为止,这是最简单的解决方案,不仅如此,它还可以工作。
shmu

-1

用户TGR正确无误,但我还必须进行其他更改:在vbox XML中,我需要更改Image uuid以匹配HardDisk uuid(在命令行上生成的第二个UUID)

<StorageControllers>
   <StorageController ...>
     <AttachedDevice ...>
       <Image uuid="{ [second UUID] }"/>

-1

我发现比其他方法更简单。您只能从Virtual Box界面中删除虚拟机(如果虚拟机询问您是否要删除VM的文件,请回答NOT !,否则将丢失VM)。然后转到.vbox文件并打开它(带有Virtual Box)。它应该工作,因为您已删除了UUID(同时删除了VM)。至少对我有用...

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.