Skip to content

Commit f08da35

Browse files
committed
Refactor creation of BLS entries
1 parent 51497bd commit f08da35

File tree

1 file changed

+32
-31
lines changed

1 file changed

+32
-31
lines changed

archinstall/lib/installer.py

Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import shlex
55
import shutil
66
import subprocess
7+
import textwrap
78
import time
89
from collections.abc import Callable
910
from pathlib import Path
@@ -1044,6 +1045,36 @@ def _get_kernel_params(
10441045

10451046
return kernel_parameters
10461047

1048+
def _create_bls_entries(
1049+
self,
1050+
boot_partition: PartitionModification,
1051+
root: PartitionModification | LvmVolume,
1052+
entry_name: str
1053+
) -> None:
1054+
# Loader entries are stored in $BOOT/loader:
1055+
# https://uapi-group.org/specifications/specs/boot_loader_specification/#mount-points
1056+
entries_dir = self.target / boot_partition.relative_mountpoint / 'loader/entries'
1057+
# Ensure that the $BOOT/loader/entries/ directory exists before trying to create files in it
1058+
entries_dir.mkdir(parents=True, exist_ok=True)
1059+
1060+
entry_template = textwrap.dedent(
1061+
f"""\
1062+
# Created by: archinstall
1063+
# Created on: {self.init_time}
1064+
title Arch Linux ({{kernel}}{{variant}})
1065+
linux /vmlinuz-{{kernel}}
1066+
initrd /initramfs-{{kernel}}{{variant}}.img
1067+
options {" ".join(self._get_kernel_params(root))}
1068+
"""
1069+
)
1070+
1071+
for kernel in self.kernels:
1072+
for variant in ("", "-fallback"):
1073+
# Setup the loader entry
1074+
name = entry_name.format(kernel=kernel, variant=variant)
1075+
entry_conf = entries_dir / name
1076+
entry_conf.write_text(entry_template.format(kernel=kernel, variant=variant))
1077+
10471078
def _add_systemd_bootloader(
10481079
self,
10491080
boot_partition: PartitionModification,
@@ -1091,6 +1122,7 @@ def _add_systemd_bootloader(
10911122
else:
10921123
entry_name = self.init_time + '_{kernel}{variant}.conf'
10931124
default_entry = entry_name.format(kernel=default_kernel, variant='')
1125+
self._create_bls_entries(boot_partition, root, entry_name)
10941126

10951127
default = f'default {default_entry}'
10961128

@@ -1112,37 +1144,6 @@ def _add_systemd_bootloader(
11121144

11131145
loader_conf.write_text('\n'.join(loader_data) + '\n')
11141146

1115-
if uki_enabled:
1116-
return
1117-
1118-
# Loader entries are stored in $BOOT/loader:
1119-
# https://uapi-group.org/specifications/specs/boot_loader_specification/#mount-points
1120-
entries_dir = self.target / boot_partition.relative_mountpoint / 'loader/entries'
1121-
# Ensure that the $BOOT/loader/entries/ directory exists before trying to create files in it
1122-
entries_dir.mkdir(parents=True, exist_ok=True)
1123-
1124-
comments = (
1125-
'# Created by: archinstall',
1126-
f'# Created on: {self.init_time}'
1127-
)
1128-
1129-
options = 'options ' + ' '.join(self._get_kernel_params(root))
1130-
1131-
for kernel in self.kernels:
1132-
for variant in ("", "-fallback"):
1133-
# Setup the loader entry
1134-
entry = [
1135-
*comments,
1136-
f'title Arch Linux ({kernel}{variant})',
1137-
f'linux /vmlinuz-{kernel}',
1138-
f'initrd /initramfs-{kernel}{variant}.img',
1139-
options,
1140-
]
1141-
1142-
name = entry_name.format(kernel=kernel, variant=variant)
1143-
entry_conf = entries_dir / name
1144-
entry_conf.write_text('\n'.join(entry) + '\n')
1145-
11461147
self.helper_flags['bootloader'] = 'systemd'
11471148

11481149
def _add_grub_bootloader(

0 commit comments

Comments
 (0)