[bootloader] Refactor efi-next-boot
- move the setup-next-boot code to a function on its own - credit to Gaë
This commit is contained in:
parent
7c633f1253
commit
9e344f50a7
3
CHANGES
3
CHANGES
@ -16,7 +16,8 @@ This release contains contributions from (alphabetically by first name):
|
|||||||
- The *productWallpaper* setting is documented and works. (Thanks Bill)
|
- The *productWallpaper* setting is documented and works. (Thanks Bill)
|
||||||
|
|
||||||
## Modules ##
|
## Modules ##
|
||||||
- No module changes yet
|
- The *bootloader* module can force a UEFI-based machine to boot into
|
||||||
|
the newly-installed system. #1394 (Thanks Gaël)
|
||||||
|
|
||||||
|
|
||||||
# 3.2.23 (2020-04-17) #
|
# 3.2.23 (2020-04-17) #
|
||||||
|
@ -237,6 +237,25 @@ def efi_word_size():
|
|||||||
return efi_bitness
|
return efi_bitness
|
||||||
|
|
||||||
|
|
||||||
|
def efi_boot_next():
|
||||||
|
"""
|
||||||
|
Tell EFI to definitely boot into the just-installed
|
||||||
|
system next time.
|
||||||
|
"""
|
||||||
|
boot_mgr = libcalamares.job.configuration["efiBootMgr"]
|
||||||
|
boot_entry = None
|
||||||
|
efi_bootvars = subprocess.check_output([boot_mgr], text=True)
|
||||||
|
for line in efi_bootvars.split('\n'):
|
||||||
|
if not line:
|
||||||
|
continue
|
||||||
|
words = line.split()
|
||||||
|
if len(words) >= 2 and words[0] == "BootOrder:":
|
||||||
|
boot_entry = words[1].split(',')[0]
|
||||||
|
break
|
||||||
|
if boot_entry:
|
||||||
|
subprocess.call([boot_mgr, "-n", boot_entry])
|
||||||
|
|
||||||
|
|
||||||
def install_systemd_boot(efi_directory):
|
def install_systemd_boot(efi_directory):
|
||||||
"""
|
"""
|
||||||
Installs systemd-boot as bootloader for EFI setups.
|
Installs systemd-boot as bootloader for EFI setups.
|
||||||
@ -403,20 +422,7 @@ def install_secureboot(efi_directory):
|
|||||||
"-p", efi_partition_number,
|
"-p", efi_partition_number,
|
||||||
"-l", install_efi_directory + "/" + install_efi_bin])
|
"-l", install_efi_directory + "/" + install_efi_bin])
|
||||||
|
|
||||||
boot_entry = None
|
efi_boot_next()
|
||||||
efi_bootvars = subprocess.check_output(
|
|
||||||
[libcalamares.job.configuration["efiBootMgr"]], text=True)
|
|
||||||
for line in efi_bootvars.split('\n'):
|
|
||||||
if not line:
|
|
||||||
continue
|
|
||||||
words = line.split()
|
|
||||||
if len(words) >= 2 and words[0] == "BootOrder:":
|
|
||||||
boot_entry = words[1].split(',')[0]
|
|
||||||
break
|
|
||||||
if boot_entry:
|
|
||||||
subprocess.call([
|
|
||||||
libcalamares.job.configuration["efiBootMgr"],
|
|
||||||
"-n", boot_entry])
|
|
||||||
|
|
||||||
# The input file /etc/default/grub should already be filled out by the
|
# The input file /etc/default/grub should already be filled out by the
|
||||||
# grubcfg job module.
|
# grubcfg job module.
|
||||||
|
Loading…
Reference in New Issue
Block a user