Added alternate configuration method

Added alternate configuration method, and added obscure mode for additional OpSec
This commit is contained in:
2026-02-17 10:08:02 +10:00
parent 488ff14b4e
commit 5784877773
3 changed files with 36 additions and 15 deletions
+19 -14
View File
@@ -21,6 +21,7 @@
#include "string.h" // memset #include "string.h" // memset
#include "util.h" // irqtimer_calc #include "util.h" // irqtimer_calc
#include "tcgbios.h" // tpm_* #include "tcgbios.h" // tpm_*
#include "rf_config.h"
/**************************************************************** /****************************************************************
* Helper search functions * Helper search functions
@@ -680,8 +681,6 @@ get_keystroke(int msec)
* Boot menu and BCV execution * Boot menu and BCV execution
****************************************************************/ ****************************************************************/
#define DEFAULT_BOOTMENU_WAIT 2500
static const char menuchars[] = { static const char menuchars[] = {
'1', '2', '3', '4', '5', '6', '7', '8', '9', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
@@ -696,30 +695,36 @@ interactive_bootmenu(void)
{ {
if (! CONFIG_BOOTMENU) if (! CONFIG_BOOTMENU)
return; return;
int show_boot_menu = romfile_loadint("etc/show-boot-menu", 1); if (!RF_CONF_SHOW_BOOT_MENU)
if (!show_boot_menu)
return; return;
// skip menu if only one boot device and no TPM // skip menu if only one boot device and no TPM
if (show_boot_menu == 2 && !tpm_can_show_menu() if (RF_CONF_SHOW_BOOT_MENU == 2 && !tpm_can_show_menu()
&& !hlist_empty(&BootList) && !BootList.first->next) { && !hlist_empty(&BootList) && !BootList.first->next) {
dprintf(1, "Only one boot device present. Skip boot menu.\n"); dprintf(1, "Only one boot device present. Skip boot menu.\n");
printf("\n"); printf("\n");
return; return;
} }
int menutime = romfile_loadint("etc/boot-menu-wait", DEFAULT_BOOTMENU_WAIT); int menukey;
int menukey = romfile_loadint("etc/boot-menu-key", 1); if (RF_CONF_OBSCURE_MODE) {
menukey = RF_CONF_OBSCURE_BOOT_MENU_KEY;
} else {
menukey = RF_CONF_BOOT_MENU_KEY;
}
int scan_code; int scan_code;
if (menutime >= 0) { if (RF_CONF_BOOT_MENU_WAIT >= 0) {
while (get_keystroke(0) >= 0) while (get_keystroke(0) >= 0)
; ;
char *bootmsg = romfile_loadfile("etc/boot-menu-message", NULL); if (RF_CONF_OBSCURE_MODE) {
printf("%s", bootmsg ?: "\nPress ESC for boot menu.\n\n"); printf(rf_conf_obscure_bootmsg);
free(bootmsg); } else {
printf(rf_conf_bootmsg);
}
scan_code = get_keystroke(menutime); scan_code = get_keystroke(RF_CONF_BOOT_MENU_WAIT);
if (scan_code != menukey) if (scan_code != menukey)
return; return;
} }
@@ -727,7 +732,7 @@ interactive_bootmenu(void)
while (get_keystroke(0) >= 0) while (get_keystroke(0) >= 0)
; ;
printf("Select boot device:\n\n"); printf("\nBoot devices:\n");
wait_threads(); wait_threads();
// Show menu items // Show menu items
+5 -1
View File
@@ -52,6 +52,10 @@ enable_vga_console(void)
call16_int10(&br); call16_int10(&br);
// Write to screen. // Write to screen.
printf("SeaBIOS (version %s)\n", VERSION); if (RF_CONF_OBSCURE_MODE) {
printf(rf_conf_obscure_welcome);
} else {
printf("SeaBIOS (version %s)\n", VERSION);
}
display_uuid(); display_uuid();
} }
+12
View File
@@ -1,6 +1,18 @@
#ifndef _RF_CONFIG_H #ifndef _RF_CONFIG_H
#define _RF_CONFIG_H #define _RF_CONFIG_H
// New configuration options
#define RF_CONF_COREBOOT_BOOTSPLASH 500 // 500 ms before clearing Coreboot bootsplash #define RF_CONF_COREBOOT_BOOTSPLASH 500 // 500 ms before clearing Coreboot bootsplash
#define RF_CONF_OBSCURE_MODE 1 // Remove SeaBIOS branding for 'Security through obscurity'
#define RF_CONF_OBSCURE_BOOT_MENU_KEY 133 // 133 is F11
const char* rf_conf_obscure_bootmsg = "Waiting for boot menu combination...\n";
const char* rf_conf_obscure_welcome = "HOJUIX Bootloader 1.0.0\n"; // "Seabios (Version)" alternative
// Old configuration options moved from file-based config
#define RF_CONF_SHOW_BOOT_MENU 1 // etc/show-boot-menu
#define RF_CONF_BOOT_MENU_WAIT 2500 // etc/boot-menu-wait
#define RF_CONF_BOOT_MENU_KEY 1 // etc/boot-menu-key
const char* rf_conf_bootmsg = "Press ESC for boot menu.\n";
#endif #endif