【问题标题】:How do I change the UUID of a virtual disk?如何更改虚拟磁盘的 UUID?
【发布时间】:2013-07-22 02:49:56
【问题描述】:

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

所以我尝试了以下命令来更改它的 UUID。

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

我收到此错误。

语法错误:UUID 参数无效

我该如何解决这个问题?

【问题讨论】:

  • 路径应该用双引号括起来,正如您已经发现的那样。

标签: virtual-machine virtualbox


【解决方案1】:

正确的命令如下。

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

虚拟磁盘的路径包含空格,所以必须用双引号括起来,以免被解析为两个参数。

【讨论】:

  • 我真的希望 VirtualBox 有一些 UI 或窗口可以让我们改变这一点
  • 由于文件路径有空格,这里需要引用。
  • 如果在您尝试打开已知磁盘时,VirtualBox UI 提供了生成新 UUID 的选项,那就太好了。老实说,我并没有真正将磁盘管理器用于任何事情,我宁愿 VirtualBox 只是将虚拟磁盘视为文件路径,而不是试图将它们视为管理和跟踪的资源。
【解决方案2】:

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

cd %programfiles%\Oracle\VirtualBox

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

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

【讨论】:

    【解决方案3】:

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

    cd /Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/MacOS/
    
    VBoxManage internalcommands sethduuid "full/path/to/vdi"
    

    【讨论】:

      【解决方案4】:

      如果您已将磁盘(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 上运行。

      【讨论】:

      • 你可能是对的。我按照您的指示进行操作,即使硬盘在 file -&gt; Virtual Media Manager 和具有正确 UUID 的机器设置上都正确显示,我仍然遇到错误 Querying UUID Failed
      • 我不确定你的情况。我上面描述的正是我所做的,它在带有 VB 5.1.8 的 Mac 上对我有用
      • 我已经通过以下步骤解决了问题: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. 问题已解决。
      • @OlegGryb 这可能取决于主机操作系统和客户操作系统。
      【解决方案5】:

      以下内容对我有用:

      1. 运行VBoxManage internalcommands sethduuid "VDI/VMDK file"两次(第一次只是为了方便生成一个UUID,你可以改用任何其他的UUID生成方法)

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

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

      4. HardDisk uuid="{...}"Image uuid="{}"(接近尾声)中的 UUID 替换为第二次运行 sethduuid 时得到的 UUID

      【讨论】:

      • 我觉得这个答案对任何想复制虚拟机的人(包括我)来说更有帮助。
      • 只是想知道 - 为什么需要更改机器 uuid?如果我只想将 vmdk 磁盘从一台机器复制到另一台机器,我不需要那个,对吧?
      • 如果在同一台机器上复制虚拟磁盘,则需要更改Machine uuid
      • 在我的情况下工作完美-谢谢!我不需要调整机器 UUID。
      • @FabrizioBertoglio 希望你能得到答案——但你需要停止任何类型的 vbox 服务才能编辑这些文件——否则你会得到相同的 ole。还要确保配置文件底部的 SATA 硬盘 的 UUID 与配置文件顶部硬盘部分中硬盘的 UUID 匹配。在您执行任何此操作之前,您还需要添加一个 .
      【解决方案6】:

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

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

      【讨论】:

        【解决方案7】:

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

        【讨论】:

          【解决方案8】:

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

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

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

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

          【讨论】:

            【解决方案9】:

            虽然你已经解决了问题,但我只是在这里为其他一些有类似问题的人发布原因。

            原因是你的路径(目录名VirtualBox VMs)中有一个空格,它将分隔命令。于是就出现了错误。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2018-03-08
              • 2020-01-12
              • 2011-02-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-09-09
              相关资源
              最近更新 更多