From 3e86b3ab731fdf086c653d791f92ff7094bbb798 Mon Sep 17 00:00:00 2001 From: livio Date: Mon, 29 Apr 2024 14:39:47 +0200 Subject: Implemented failsafe options at boot and inside menus for enabling/disabling serial, spkmodem and gfxterm --- config/grub/config/grub.cfg | 67 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 58 insertions(+), 9 deletions(-) diff --git a/config/grub/config/grub.cfg b/config/grub/config/grub.cfg index 17576b5f..a433000e 100644 --- a/config/grub/config/grub.cfg +++ b/config/grub/config/grub.cfg @@ -14,17 +14,36 @@ terminal_input --append at_keyboard terminal_input --append usb_keyboard terminal_output --append cbmemc -gfxpayload=keep -terminal_output --append gfxterm - -if [ -f (cbfsdisk)/background.png ]; then - insmod png - background_image (cbfsdisk)/background.png -elif [ -f (cbfsdisk)/background.jpg ]; then - insmod jpeg - background_image (cbfsdisk)/background.jpg +# User interface overrides wherever "keystatus" is supported +# Keep SHIFT key pressed before powering on to disable graphics +if keystatus --shift; then + terminal_output --append vga_text +else + gfxpayload=keep + terminal_output --append gfxterm + + if [ -f (cbfsdisk)/background.png ]; then + insmod png + background_image (cbfsdisk)/background.png + elif [ -f (cbfsdisk)/background.jpg ]; then + insmod jpeg + background_image (cbfsdisk)/background.jpg + fi +fi + +# Keep CTRL pressed to enable default serial terminal (COM1 or the like) +if keystatus --ctrl; then + serial + terminal_input --append serial + terminal_output --append serial fi +# Keep ALT pressed to enable spkmodem +if keystatus --alt; then + terminal_output --append spkmodem +fi + + set default="0" if [ -f (cbfsdisk)/timeout.cfg ]; then source (cbfsdisk)/timeout.cfg @@ -198,3 +217,33 @@ menuentry 'Load MemTest86+ [m]' --hotkey='m' { chainloader /img/memtest } fi + +submenu 'Other [z]' --hotkey='z' { + menuentry 'Enable default serial terminal [s]' --hotkey='s' { + serial + terminal_input --append serial + terminal_output --append serial + } + + menuentry 'Disable default serial terminal' { + terminal_input --remove serial + terminal_output --remove serial + } + + menuentry 'Enable gfxterm' { + terminal_output --append gfxterm + terminal_output --remove vga_text + } + menuentry 'Disable gfxterm [g]' --hotkey='g' { + terminal_output --remove gfxterm + terminal_output --append vga_text + } + + menuentry 'Enable spkmodem [a]' --hotkey='a' { + terminal_output --append spkmodem + } + + menuentry 'Disable spkmodem [z]' --hotkey='z' { + terminal_output --remove spkmodem + } +} \ No newline at end of file -- cgit v1.2.1