Skip to content

Commit

Permalink
Only mount necessary loop device and partitions when installing bootl…
Browse files Browse the repository at this point in the history
…oaders
  • Loading branch information
DaanDeMeyer committed Aug 3, 2020
1 parent cae715f commit 46ceca8
Showing 1 changed file with 14 additions and 18 deletions.
32 changes: 14 additions & 18 deletions mkosi
Original file line number Diff line number Diff line change
Expand Up @@ -2644,13 +2644,11 @@ def install_grub(args: CommandLineArguments, root: str, loopdev: str, grub: str)
return line
patch_file(os.path.join(root, "etc/default/grub"), jj)

nspawn_params = [
"--bind-ro=/dev",
"--property=DeviceAllow=" + loopdev,
"--console=pipe",
]
if args.root_partno is not None:
nspawn_params += ["--property=DeviceAllow=" + partition(loopdev, args.root_partno)]
nspawn_params = [f"--bind-ro={loopdev}", f"--property=DeviceAllow={loopdev}"]
for partno in (args.root_partno, args.xbootldr_partno, args.bios_partno):
if partno is not None:
p = partition(loopdev, partno)
nspawn_params += [f"--bind-ro={p}", f"--property=DeviceAllow={p}"]

run_workspace_command(
args, root, f"{grub}-install",
Expand Down Expand Up @@ -2709,18 +2707,16 @@ def install_boot_loader_clear(args: CommandLineArguments, root: str, loopdev: st
nspawn_params = [
# clr-boot-manager uses blkid in the device backing "/" to
# figure out uuid and related parameters.
"--bind-ro=/dev",

# clr-boot-manager compiled in Clear Linux will assume EFI
# partition is mounted in "/boot".
"--bind=" + os.path.join(root, "efi") + ":/boot",
f"--bind-ro={loopdev}",
f"--bind-ro=/dev/block",
f"--bind-ro=/dev/disk",
f"--property=DeviceAllow={loopdev}",
]
if loopdev is not None:
nspawn_params += ["--property=DeviceAllow=" + loopdev]
if args.esp_partno is not None:
nspawn_params += ["--property=DeviceAllow=" + partition(loopdev, args.esp_partno)]
if args.root_partno is not None:
nspawn_params += ["--property=DeviceAllow=" + partition(loopdev, args.root_partno)]

for partno in (args.esp_partno, args.bios_partno, args.root_partno, args.xbootldr_partno):
if partno is not None:
p = partition(loopdev, partno)
nspawn_params += [f"--bind-ro={p}", f"--property=DeviceAllow={p}"]

run_workspace_command(args, root, "/usr/bin/clr-boot-manager", "update", "-i", nspawn_params=nspawn_params)

Expand Down

0 comments on commit 46ceca8

Please sign in to comment.