summaryrefslogtreecommitdiffstats
path: root/src/utils/uefi.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils/uefi.py')
-rw-r--r--src/utils/uefi.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/utils/uefi.py b/src/utils/uefi.py
index 27b7ba0..10095a7 100644
--- a/src/utils/uefi.py
+++ b/src/utils/uefi.py
@@ -125,6 +125,24 @@ def efibootmgr_create_bootentry(disk, part, loader, label, add_to_bootorder=True
except OSError as e:
raise OgError(f'Unexpected error adding boot entry to nvram. UEFI firmware might be buggy') from e
+def efibootmgr_set_entry_order(label, position):
+ logging.info(f'Setting {label} entry to position {position} of boot order')
+ boot_info = run_efibootmgr_json(validate=False)
+ boot_entries = boot_info.get('vars', [])
+ boot_order = boot_info.get('BootOrder', [])
+
+ entry = _find_bootentry(boot_entries, label)
+ target_grub_entry = _strip_boot_prefix(entry)
+
+ if target_grub_entry in boot_order:
+ boot_order.remove(target_grub_entry)
+
+ boot_order.insert(position, target_grub_entry)
+
+ try:
+ proc = subprocess.run([EFIBOOTMGR_BIN, "-o", ",".join(boot_order)], check=True, text=True)
+ except OSError as e:
+ raise OgError(f'Unexpected error setting boot order to NVRAM. UEFI firmware might be buggy') from e
def _find_efi_loader(loader_paths):
for efi_app in loader_paths: