如何*重复*将RAW磁盘映像转换为VirtualBox映像格式时如何修复UUID不匹配?

时间:2015-08-25 16:53:10

标签: virtualbox qemu diskimage

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

在流程结束时,我正在使用qemu-img convert -f raw -O vdi infile.raw outfile.vdi生成适合VirtualBox的图像文件。

这实际上起作用 - 虚拟框内的磁盘启动。

但是,在创建图像和替换 outfile.vdi时(当然关闭VM),VirtualBox会抱怨磁盘映像不是好的,因为UUID与VirtualBox媒体注册表中存储的UUID不匹配。

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

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

我该如何解决这个问题?也许另一种兼容VirtualBox的磁盘格式会更好用吗?

如果重要:这一切都发生在Windows主机

1 个答案:

答案 0 :(得分:0)

在我的情况下,答案在这里:How to change UUID in virtual box有帮助。我是这样做的:

  1. 在相关驱动器上发出VBoxManage internalcommands sethduuid my-drive.vdi
  2. 使用输出UUID值并将其替换为VM .vbox文件(在我的情况下,在两个地方)。
  3. 可能是不太好的方式,因为我重新启动VirtualBox,没有尝试“实时”,但希望这个答案对某人有用。

    当然,可以让脚本自动完成。

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