A solução é, de fato, tornar a própria imagem inicializável. Após dias pesquisando as interwebs, descobri que a solução é usar o pacote extlinux , que é um derivativo de syslinux - uma solução para tornar os discos FAT inicializáveis. O extlinux funciona em e2fs e derivativos, isso funciona perfeitamente em qualquer sistema ext2 antigo.
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
Isso tornará a imagem inicializável e desativarão a inicialização da nuvem integrada técnicas e assim por diante.
Notas: Eu não trabalhei como especificar um APPEND que permite usar o "root = LABEL = cloudimage-rootfs".
A imagem resultante pode então ser inicializada usando qemu, kvm ou vmware, sem disquetes adicionais, kernels ou qualquer coisa. E pelo que entendi, o apt-get atualizando o kernel irá fazer com que aquele kernel active a próxima inicialização.
edite : esqueci de mencionar o óbvio que você precisa executar essa montagem de loopback na imagem de disco bruta e, em seguida, converter o arquivo resultante em uma VDI usando vboxmanage convertfromraw cloud-image.img cloud-image.vdi