Package: cloud.debian.org Debian8 openstack image uses extlinux. Debian9 switched to grub. Unfortunately the default config for grub uses 'terminal_output gfxterm'. While this runs fine on my openstack setup, it does not boot at all on a simple libvirt+qemu system I have which utilizes rather barebones libvirt guest configs. (guest uses 100% cpu, guest kernel never starts booting)
Unless there's a good reason for using gfxterm, I'd suggest adding 'GRUB_TERMINAL=console' to /etc/default/grub and using that to generate grub.cfg. This fixes my qemu booting issue and is in line with what the debian8 image did. (Or maybe even do GRUB_TERMINAL=serial considering the kernel is told to use the serial console.)