Just managed to get it to work:
Suppose your virtual domain is
myGuest, your preferred editor is
vi, and your guest is installed with
systemd. If the last assumption is not true, you might have a look at Working with the serial console.
libguestfs-toolson the host:
sudo apt install libguestfs-tools. You will need this when working with headless guests.
Second, shut down your guest:
virsh shutdown myGuest.
Next, mount the virtual disk:
guestmount -g myGuest -i /mnt (or use any other existing directory as mountpoint). Now in
/mnt you should be able to see the filesystem of the guest.
systemd, you only have to modify the grub configuration:
vi /mnt/etc/default/grub, and modify like
GRUB_SERIAL_COMMAND="serial --speed=19200 --unit=0 --word=8 --parity=no --stop=1"
As you will have to run
update-grubon the guest, for the first start you have to also modify
/mnt/boot/grub/grub.cfg. Find the default boot menu item and append the console information to the
linuxentry to look similar to
linux /boot/vmlinuz-4.4.0-75-generic root=UUID=76f3e237-d791-4e9d-8ad7-fe5c9165ae55 ro console=ttyS0,19200 earlyprint=serial,ttyS0,19200
Maybe you need root privileges to mount and edit the files.
Now restart the guest and start the virtual console:
virsh start myGuest && virsh console myGuest
You should see the kernel log and then a login prompt.
After logging in, don't forget to run