[Thanks: To Paolo Bonzini for writing the original patch; and to Alexander Graf for mentioning this on IRC some months ago, I had to go and look up the logs.]
I forget to remember: to avoid QEMU being terminated on SIGINT (Ctrl+c), instead of just
stdio, supply the special parameter
-serial option (which redirects the virtual serial port to a host character device). The subtle difference between them:
-serial stdio: Redirects the virtual serial port onto
stdio; upon Ctrl+c, QEMU immediately terminates.
-serial mon:stdio: In this mode, the virtual serial port and QEMU monitor are multiplexed onto
stdio. And Ctrl+c is handled, i.e. QEMU won’t be terminated, and the signal will be passed to the guest.
In summary, a working example command-line:
$ qemu-system-x86_64 \ -display none \ -nodefconfig \ -nodefaults \ -m 2048 \ -device virtio-scsi-pci,id=scsi \ -device virtio-serial-pci \
-serial mon:stdio\ -drive file=./fedora23.qcow2,format=qcow2,if=virtio
To toggle between QEMU monitor prompt and the serial console, use Ctrl+a, followed by typing ‘c’. To terminate QEMU, while at monitor prompt,
(qemu), type ‘quit’.