From dc5f3c614bb062d702b09afa8729d2396e99ed7f Mon Sep 17 00:00:00 2001 From: a1ive <10670106+a1ive@users.noreply.github.com> Date: Thu, 20 Feb 2025 21:32:38 +0900 Subject: [PATCH] add f8 & f10 menu --- docs/cmdline.md | 12 ++++++++++++ include/bcd.h | 4 +++- include/cmdline.h | 2 ++ kern/cmdline.c | 10 ++++++++++ libnt/bcd.c | 4 ++++ utils/bcd | Bin 24576 -> 24576 bytes utils/bcd.bat | 4 ++-- 7 files changed, 33 insertions(+), 3 deletions(-) diff --git a/docs/cmdline.md b/docs/cmdline.md index 30b2c0d..181c5f8 100644 --- a/docs/cmdline.md +++ b/docs/cmdline.md @@ -49,6 +49,18 @@ text ``` Force the Windows boot manager to display error messages in text mode. +### f8 +``` +f8 +``` +Enable the F8 `Advanced Boot Options` menu. + +### edit +``` +edit +``` +Enable the `Edit Boot Options` menu. + ### testmode ``` testmode=yes|no diff --git a/include/bcd.h b/include/bcd.h index 65250b7..e526475 100644 --- a/include/bcd.h +++ b/include/bcd.h @@ -51,8 +51,10 @@ #define BCDOPT_TITLE L"12000004" #define BCDOPT_LANG L"12000005" #define BCDOPT_CMDLINE L"12000030" -#define BCDOPT_INHERIT L"14000006" // options & safeboot +#define BCDOPT_INHERIT L"14000006" // options #define BCDOPT_GFXMODE L"15000052" // graphicsresolution +#define BCDOPT_ADVOPT L"16000040" // advanced options +#define BCDOPT_OPTEDIT L"16000041" // options edit #define BCDOPT_TESTMODE L"16000049" // testsigning #define BCDOPT_HIGHRES L"16000054" // highest resolution #define BCDOPT_OSDDEV L"21000001" // os device diff --git a/include/cmdline.h b/include/cmdline.h index 0e5bb3c..2fb21fc 100644 --- a/include/cmdline.h +++ b/include/cmdline.h @@ -50,6 +50,8 @@ struct nt_args uint8_t safemode; uint8_t altshell; uint8_t exportcd; + uint8_t advmenu; + uint8_t optedit; uint64_t nx; uint64_t pae; diff --git a/kern/cmdline.c b/kern/cmdline.c index 6fb0ca2..6dc1d4d 100644 --- a/kern/cmdline.c +++ b/kern/cmdline.c @@ -39,6 +39,8 @@ static struct nt_args args = .safemode = NTARG_BOOL_FALSE, .altshell = NTARG_BOOL_FALSE, .exportcd = NTARG_BOOL_FALSE, + .advmenu = NTARG_BOOL_FALSE, + .optedit = NTARG_BOOL_FALSE, .nx = NX_OPTIN, .pae = PAE_DEFAULT, @@ -223,6 +225,14 @@ void process_cmdline (char *cmdline) { args.exportcd = convert_bool (value); } + else if (strcmp (key, "f8") == 0) + { + args.advmenu = NTARG_BOOL_TRUE; + } + else if (strcmp (key, "edit") == 0) + { + args.optedit = NTARG_BOOL_TRUE; + } else if (strcmp (key, "nx") == 0) { if (! value || strcasecmp (value, "OptIn") == 0) diff --git a/libnt/bcd.c b/libnt/bcd.c index 21bb713..2385d5d 100644 --- a/libnt/bcd.c +++ b/libnt/bcd.c @@ -303,6 +303,10 @@ bcd_patch_data (void) BCDOPT_NOVGA, nt_cmdline->novga); bcd_patch_bool (&hive, objects, GUID_OPTN, BCDOPT_NOVESA, nt_cmdline->novesa); + bcd_patch_bool (&hive, objects, GUID_OPTN, + BCDOPT_ADVOPT, nt_cmdline->advmenu); + bcd_patch_bool (&hive, objects, GUID_OPTN, + BCDOPT_OPTEDIT, nt_cmdline->optedit); bcd_patch_u64 (&hive, objects, GUID_OPTN, BCDOPT_NX, nt_cmdline->nx); bcd_patch_u64 (&hive, objects, GUID_OPTN, diff --git a/utils/bcd b/utils/bcd index 2b38e7c7830c37ba618c13fc4fe400fd29a658c4..9d60d04fc535c0849bc83ed2f993153c5fefd330 100644 GIT binary patch delta 4120 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 diff --git a/utils/bcd.bat b/utils/bcd.bat index e750147..c5a713d 100644 --- a/utils/bcd.bat +++ b/utils/bcd.bat @@ -30,13 +30,13 @@ bcdedit %bcd% /set {bootmgr} timeout 1 bcdedit %bcd% /set {bootmgr} displaybootmenu false bcdedit %bcd% /create {globalsettings} -bcdedit %bcd% /set {globalsettings} optionsedit true -bcdedit %bcd% /set {globalsettings} advancedoptions true bcdedit %bcd% /set {globalsettings} locale en-us bcdedit %bcd% /create {bootloadersettings} bcdedit %bcd% /create %guidopt% /inherit OSLOADER +bcdedit %bcd% /set %guidopt% optionsedit true +bcdedit %bcd% /set %guidopt% advancedoptions true bcdedit %bcd% /set %guidopt% detecthal true bcdedit %bcd% /set %guidopt% winpe true bcdedit %bcd% /set %guidopt% testsigning true