The QEMU options
-display curses and
-nographic -device sga (the serial graphics adapter) are very convenient for running QEMU outside of a graphical environment.
(think: remote ssh connection, rescue system etc.)
Both modes fail to work with framebuffer text mode, though. The new default with some Linux distirbutions (e.g. Fedora 25) seems to be that at some point during boot a framebuffer text mode seems to be activated such that with
-display curses QEMU just displays '1024x768 Graphic mode'. With SGA just nothing is printed.
Thus my question: how can I force the kernel (and the rest of startup) to just use the old-school initial text mode?
nomodeset kernel parameter (and removing the
rhgb one) doesn't make a difference.
Most convenient would be some QEMU configuration that forces the kernel to just detect the most basic text mode - since the guest wouldn't have to be modified.
Setting up a serial console (via e.g. adding the
console=ttyS0 kernel parameter to the guest) works in my environment, but I observed some escape sequence issues with the Gnome terminal. Also this doesn't help with boot loaders that already use the framebuffer (e.g. the one on the Fedora 25 server ISO) - and needs a modification of the guest.
Fedora Guest Example
With Fedora 25 as guest, the switch to the framebuffer happens during initrd runtime, some log messges (from the serial console):
[ 1.485115] Console: switching to colour frame buffer device 128x48 [ 1.493184] bochs-drm 0000:00:02.0: fb0: bochsdrmfb frame buffer device [ 1.502492] [drm] Initialized bochs-drm 1.0.0 20130925 for 0000:00:02.0 on minor 0
These messages also show up with the
vga=normal (guest) kernel parameters.
rd.driver.blacklist=bochs_drmas kernel parameter to the guest partially works - i.e. dracut keeps the text mode during initrd runtime allright - but after that the next boot stage (i.e. systemd+udev) loads the
bochs_drmwhich turns on the framebuffer - because it is not blacklisted everywhere ...
-video stdqemu option and then modify the kernel command to include
-vga stdqemu option? I've tried it in combination with adding
video=vesafb:offto the guest's kernel command line - but the guest still switches to 1024x768 graphics mode. The guest even still loads the