Решение действительно должно сделать само загружаемое изображение. После нескольких дней поиска в interwebs я обнаружил, что решение заключается в использовании пакета extlinux, который является производным от syslinux - решения для загрузки загрузочных дисков FAT. extlinux работает с e2fs и производными, это отлично работает на любой старой системе ext2.
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
Это сделает загрузочное изображение и extlinux и т. д.
Примечания: Я не определил, как указать APPEND, который позволяет ему использовать «root = LABEL = cloudimage-rootfs».
Полученное изображение может затем загрузиться с помощью qemu, kvm или vmware, без дополнительных дискет, ядер или чего-то еще. И из того, что я понимаю, apt-get для обновления ядра сделает это ядро активным следующей загрузкой.
будет : Я забыл упомянуть очевидное, что вам нужно выполнить этот цикл -back на изображении необработанного диска, а затем преобразовать полученный файл в VDI с помощью vboxmanage convertfromraw cloud-image.img cloud-image.vdi