如何将大型动态虚拟机 VDI 映像转换为小型映像文件以将其作为便携式安装写入 USB 驱动器?

Arc*_*ahi 3 virtualbox

我有一个最大大小为 70 GB 的 Xubuntu 20.04 的 VirtualBox 动态图像。图像的当前大小为 9 GB。

当我尝试使用命令将其转换为 .img 文件时 VBoxManage clonehd 'xubuntu.vdi' xubuntu.img --format RAW

图像大小不断增长,远远超过 9 GB,它可能会持续到 70 GB(当它超过 20 GB 时我停止了该过程)。

如何将其转换为 9 GB 大小的映像,以便稍后我可以将其作为便携式安装写入 16 GB USB 驱动器?

主机操作系统是 Kubuntu 20.04。

N0r*_*ert 5

您必须先使用以下命令压缩 VDI 磁盘文件:

VBoxManage modifymedium xubuntu.vdi --compact
Run Code Online (Sandbox Code Playgroud)

8.22 VBoxManage modifymediumhttp://download.virtualbox.org/virtualbox/6.1.22/UserManual.pdf了解详情。

然后使用以下命令将其转换为 RAW:

qemu-img convert xubuntu.vdi -O raw xubuntu.raw
Run Code Online (Sandbox Code Playgroud)

如果生成的 RAW 文件仍然很大,那么您必须使用以下命令使用 Gparted(在此处移动,调整分区大小)来进一步缩小它:

sudo losetup -P /dev/loop137 xubuntu.raw
gparted /dev/loop137
Run Code Online (Sandbox Code Playgroud)

使用 GParted 缩小分区后,您可以卸载映像。

sudo losetup -d /dev/loop137
Run Code Online (Sandbox Code Playgroud)

您可以通过运行来检查 RAW 图像中的实际分区fdisk -l xubuntu.raw

然后您可以缩小 RAW 图像以适合其分区:

qemu-img resize --shrink xubuntu.raw 9216M
Run Code Online (Sandbox Code Playgroud)

然后最后在VM中测试镜像

kvm -m 2048 -drive file=xubuntu.raw,format=raw
Run Code Online (Sandbox Code Playgroud)

然后使用 GNOME 磁盘或 Etcher 或ddddrescue(我更喜欢它而不是普通dd,因为它显示进度、时间估计和速度)将其写入 USB 驱动器。

然后,打开 Gparted,将 U 盘中的分区扩展到最大可能大小。否则,即使 USB 驱动器的大小为(假设)32 GB,根分区也会卡在(假设)9 GB,并且即使驱动器上有可用空间,您也将无法安装新程序.

注意:如果 USB 驱动器显示缺少 UUID 错误(因为 UUID 可能会更改),那么您可以使用 GRUB 菜单中的高级选项中的回退模式启动。