当*重复*将RAW磁盘映像转换为VirtualBox映像格式时,如何解决UUID不匹配的问题?

3
在Docker容器中,我正在从头开始创建一个完整的PC Linux映像(使用debootstrap和许多其他工具)。
在过程结束时,我使用qemu-img convert -f raw -O vdi infile.raw outfile.vdi来生成适用于VirtualBox的映像文件。
这在本质上可以工作——盘在VirtualBox中启动。
然而,当创建一个新映像并替换outfile.vdi时(当然要先关闭虚拟机),那么VirtualBox会抱怨磁盘映像不正确,因为UUID与存储在VirtualBox媒体注册表中的UUID不匹配。
我被迫使用VirtualBox GUI中的VM设置再次删除和添加文件,以便我可以重新启动VM。
我猜测在vdi文件中直接存储了一些(随机)UUID,但我找不到一种方法使用qemu-img手动指定固定的UUID。
如何解决这个问题?也许另一种VirtualBox兼容的磁盘格式会更好?
如果有影响:所有这些都发生在Windows主机下。
1个回答

0
在我的情况下,这里的答案:如何在虚拟机中更改UUID有所帮助。我是这样做的:
  1. 对于相关驱动器,请发出VBoxManage internalcommands sethduuid my-drive.vdi
  2. 使用输出的UUID值并将其替换为VM的.vbox文件中的值(在我的情况下,有两个位置)。
也许这不是很好的方法,因为我重新启动VirtualBox,没有尝试“实时”操作,但希望这个答案对某人有用。
当然,可以编写脚本以自动执行此操作。
此外,this说uuid可以作为参数提供给VBoxManage internalcommands sethduuid <UUID> <Yourdrive>,但由于我的任务不频繁,因此我没有尝试过。在那里提供了完全使用脚本执行此操作的方法。

命令是 VBoxManage internalcommands sethduuid "/path/to.vdi" "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX"。它可以正常工作。 - Toothbrush

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接