I ran into this bug trying to use cloud images on Hyper-V.
The workaround in #40 does work - add a serial console to the VM, and change /etc/default/grub.d/50-cloudimg-settings.cfg
If you still want to be able to use a serial console if available, but not require it to be able to boot, just change the line from 'GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0"' to 'GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0 console=tty1"'
Then run update-grub.
It seems /dev/console takes on whichever console is listed LAST in the kernel options. If that's ttyS0 and there is no serial port connected, that breaks things. Swapping the order ensures /dev/console goes to tty1, and the boot process works with or without a serial port attached to the VM. If there is a serial port, the serial console will still work with this method.
I ran into this bug trying to use cloud images on Hyper-V.
The workaround in #40 does work - add a serial console to the VM, and change /etc/default/ grub.d/ 50-cloudimg- settings. cfg
If you still want to be able to use a serial console if available, but not require it to be able to boot, just change the line from 'GRUB_CMDLINE_ LINUX_DEFAULT= "console= tty1 console=ttyS0"' to 'GRUB_CMDLINE_ LINUX_DEFAULT= "console= ttyS0 console=tty1"'
Then run update-grub.
It seems /dev/console takes on whichever console is listed LAST in the kernel options. If that's ttyS0 and there is no serial port connected, that breaks things. Swapping the order ensures /dev/console goes to tty1, and the boot process works with or without a serial port attached to the VM. If there is a serial port, the serial console will still work with this method.