nixos/systemd-boot: update bootloader if needed
This commit is contained in:
parent
d6d07f262b
commit
7e3519a7cf
@ -197,6 +197,22 @@ def main():
|
|||||||
subprocess.check_call(["@systemd@/bin/bootctl", "--path=@efiSysMountPoint@", "install"])
|
subprocess.check_call(["@systemd@/bin/bootctl", "--path=@efiSysMountPoint@", "install"])
|
||||||
else:
|
else:
|
||||||
subprocess.check_call(["@systemd@/bin/bootctl", "--path=@efiSysMountPoint@", "--no-variables", "install"])
|
subprocess.check_call(["@systemd@/bin/bootctl", "--path=@efiSysMountPoint@", "--no-variables", "install"])
|
||||||
|
else:
|
||||||
|
# Update bootloader to latest if needed
|
||||||
|
systemd_version = subprocess.check_output(["@systemd@/bin/bootctl", "--version"], universal_newlines=True).split()[1]
|
||||||
|
sdboot_status = subprocess.check_output(["@systemd@/bin/bootctl", "--path=@efiSysMountPoint@", "status"], universal_newlines=True)
|
||||||
|
|
||||||
|
# See status_binaries() in systemd bootctl.c for code which generates this
|
||||||
|
m = re.search("^\W+File:.*/EFI/(BOOT|systemd)/.*\.efi \(systemd-boot (\d+)\)$",
|
||||||
|
sdboot_status, re.IGNORECASE | re.MULTILINE)
|
||||||
|
if m is None:
|
||||||
|
print("could not find any previously installed systemd-boot")
|
||||||
|
else:
|
||||||
|
sdboot_version = m.group(2)
|
||||||
|
if systemd_version > sdboot_version:
|
||||||
|
print("updating systemd-boot from %s to %s" % (sdboot_version, systemd_version))
|
||||||
|
subprocess.check_call(["@systemd@/bin/bootctl", "--path=@efiSysMountPoint@", "update"])
|
||||||
|
|
||||||
|
|
||||||
mkdir_p("@efiSysMountPoint@/efi/nixos")
|
mkdir_p("@efiSysMountPoint@/efi/nixos")
|
||||||
mkdir_p("@efiSysMountPoint@/loader/entries")
|
mkdir_p("@efiSysMountPoint@/loader/entries")
|
||||||
|
Loading…
Reference in New Issue
Block a user