3

在 Docker 容器中,我从头开始创建完整的 PC Linux 映像(使用debootstrap和许多其他工具)。

在我qemu-img convert -f raw -O vdi infile.raw outfile.vdi用来生成适用于 VirtualBox 的图像文件的过程结束时。

这本质上是有效的——磁盘在 VirtualBox 内启动。

然而,当创建一个镜像并替换 outfile.vdi时(当然是在关闭虚拟机的情况下),VirtualBox 会抱怨磁盘镜像不正确,因为 UUID 与存储在 VirtualBox 媒体注册表中的不匹配。

我被迫使用 VirtualBox GUI 在 VM 设置中删除并再次添加该文件,以便我可以再次启动 VM。

我猜有一些(随机)UUID直接存储在.vdi文件中,但我找不到手动指定固定 UUID 的方法qemu-img

我怎么解决这个问题?也许另一种与 VirtualBox 兼容的磁盘格式会更好用?

以防万一:这一切都发生在 Windows 主机下

4

1 回答 1

0

就我而言,这里的答案是:如何在虚拟框中更改 UUID有所帮助。我这样做:

  1. VBoxManage internalcommands sethduuid my-drive.vdi在有问题的驱动器上发出
  2. 使用输出 UUID 值并在 VM 文件中替换它.vbox(在我的例子中,在两个地方)。

可能这不是一个很好的方法,因为我重新启动了 VirtualBox,而不是尝试“实时”进行,但希望这个答案对某人有用。

当然,可以使脚本自动执行此操作。

此外,表示 uuid 可以作为参数给出VBoxManage internalcommands sethduuid <UUID> <Yourdrive>,但我没有尝试过,因为我的任务不常见。在那里给出的脚本中完全完成它的方法。

于 2016-04-16T17:06:24.160 回答