我想将云镜像(之前的UEC镜像)转换为可引导的VirtualBox虚拟硬盘(用于Vagrant)。我可以在kvm中运行该镜像(使用https://help.ubuntu.com/community/UEC/Images作为起点),但是如何将.img磁盘文件转换为可引导的VirtualBox硬盘呢?我不想使用软盘作为引导方式。
mkdir /mnt/image
mount -o loop cloud-image.img /mnt/image
mkdir /mnt/image/extlinux/
extlinux --install /mnt/image/extlinux/
echo "DEFAULT /vmlinuz" > /mnt/image/extlinux/extlinux.conf
echo "APPEND root=/dev/sda init=/usr/lib/cloud-init/uncloud-init" \
"ubuntu-pass=ubuntu ds=nocloud" >> /mnt/image/extlinux/extlinux.conf
umount /mnt/image
这将使镜像可引导,并且 禁用内置云初始化技术 等等。
注:我还没有找出如何指定一个 APPEND,使其能够使用 "root=LABEL=cloudimage-rootfs"。
然后,生成的镜像可以在 qemu、kvm 或 vmware 上引导,无需额外的软盘、内核或其他任何东西。从我所了解的情况来看,通过 apt-get 升级内核 将会使下次引导时该内核生效。
编辑:我忘记提到明显的事实,即您需要在原始磁盘镜像上执行此回环挂载操作,然后使用 vboxmanage convertfromraw cloud-image.img cloud-image.vdi
将生成的文件转换为 VDI。
VBoxManage internalcommands createrawvmdk -filename cloud-image.vmdk -rawdisk cloud-image.img
来创建一个元描述文件,以便在新的虚拟机中使用该镜像。 - Florian