From ba72b900822f76541d416be2b0554344aaffe96e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lauri=20Kentt=C3=A4?= Date: Sat, 25 Nov 2023 21:16:13 +0200 Subject: [PATCH] Add logging to verify entry creation --- src/Efi.cs | 7 ++++++- src/Setup.cs | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Efi.cs b/src/Efi.cs index 4b4921d..4f6d7fd 100644 --- a/src/Efi.cs +++ b/src/Efi.cs @@ -472,7 +472,12 @@ public class Efi { var bootOrderInts = new List(BytesToUInt16s(bootOrder.Data)); // Windows can't enumerate EFI variables, and trying them all is too slow. // BootOrder + BootCurrent + the first 0xff entries should be enough. - foreach (var num in BytesToUInt16s(bootCurrent.Data).Concat(bootOrderInts).Concat(Enumerable.Range(0, 0xff).Select(i => (UInt16) i))) { + var seen = new HashSet(); + foreach (var num in bootOrderInts.Concat(BytesToUInt16s(bootCurrent.Data)).Concat(Enumerable.Range(0, 0xff).Select(i => (UInt16) i))) { + if (seen.Contains(num)) { + continue; + } + seen.Add(num); var entry = GetVariable(String.Format("Boot{0:X04}", num)); if (entry.Data != null) { Setup.Log($"LogBootOrder: {entry}"); diff --git a/src/Setup.cs b/src/Setup.cs index 86d5e48..9d23902 100644 --- a/src/Setup.cs +++ b/src/Setup.cs @@ -400,6 +400,9 @@ public class Setup { } var fwbootmgr = "{fwbootmgr}"; Execute("bcdedit", $"/set {fwbootmgr} displayorder {guid} /addfirst", true); + // Verify that the entry was created. + Execute("bcdedit", "/enum firmware", true); + Execute("bcdedit", $"/enum {guid}", true); } catch (Exception e) { Log($"EnableBCDEdit failed: {e.ToString()}"); throw new SetupException("Failed to enable HackBGRT with BCDEdit!"); @@ -441,6 +444,8 @@ public class Setup { protected void EnableEntry() { Efi.MakeAndEnableBootEntry("HackBGRT", "\\EFI\\HackBGRT\\loader.efi", DryRun); WriteLine("Enabled NVRAM entry for HackBGRT."); + // Verify that the entry was created. + Efi.LogBootEntries(); } /**