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?
Addendum
Adding the 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 nofb
and vga=normal
(guest) kernel parameters.
nofb
orvga=normal
rd.driver.blacklist=bochs_drm
as 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 thebochs_drm
which turns on the framebuffer - because it is not blacklisted everywhere ...-video std
qemu option and then modify the kernel command to includevideo=vesafb:off
-vga std
qemu option? I've tried it in combination with addingvideo=vesafb:off
to the guest's kernel command line - but the guest still switches to 1024x768 graphics mode. The guest even still loads thebochs_drm
module.