VGA bootsplash isn't displayed because video mode is set which clears the display. Video mode has already been set by some VGA BIOS. User can choose by config option to disable setting of VGA video mode by seabios (CONFIG_BOOT_SET_VIDEO_MODE). Works well under QEMU/KVM with VGA BIOS and seabios.
Default behaviour is the same as before where VGA mode is set by seabios.
Signed-off-by: Gerhard Wiesinger lists@wiesinger.com --- src/Kconfig | 5 +++++ src/bootsplash.c | 13 ++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/src/Kconfig b/src/Kconfig index 250663a..08325cc 100644 --- a/src/Kconfig +++ b/src/Kconfig @@ -52,6 +52,11 @@ menu "General Features" default y help Support showing a graphical boot splash screen. + config BOOT_SET_VIDEO_MODE + bool "Set video mode on initialization" + default y + help + Option should not be set when the VGA init string should be displayed. config BOOTORDER depends on BOOT bool "Boot ordering" diff --git a/src/bootsplash.c b/src/bootsplash.c index 76b72c1..09ad0a1 100644 --- a/src/bootsplash.c +++ b/src/bootsplash.c @@ -38,12 +38,15 @@ void enable_vga_console(void) { dprintf(1, "Turning on vga text mode console\n"); - struct bregs br;
- /* Enable VGA text mode */ - memset(&br, 0, sizeof(br)); - br.ax = 0x0003; - call16_int10(&br); + if (CONFIG_BOOT_SET_VIDEO_MODE) { + struct bregs br; + + /* Enable VGA text mode */ + memset(&br, 0, sizeof(br)); + br.ax = 0x0003; + call16_int10(&br); + }
// Write to screen. printf("SeaBIOS (version %s)\n\n", VERSION);