Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/archinstall/lib/installer.py
diff options
context:
space:
mode:
authorAnton Hvornum <anton@hvornum.se>2021-05-31 12:45:15 +0200
committerGitHub <noreply@github.com>2021-05-31 12:45:15 +0200
commit17c65a0abbac32f37702935a7405cf70439267c9 (patch)
treec63e45c2f2d4f89f775acb271fcc2a2ada927ef0 /archinstall/lib/installer.py
parent630045f4a6c4c845f75ce9af18754d4dd1648519 (diff)
parent62c22f78b17621a70ed5839a6c3ea728cc03a791 (diff)
PR #534: Fixes hardcoded kernels in boot config for systemd
Fixing hardcoded kernel in boot-config
Diffstat (limited to 'archinstall/lib/installer.py')
-rw-r--r--archinstall/lib/installer.py64
1 files changed, 32 insertions, 32 deletions
diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py
index c5e77b7e..b752e86e 100644
--- a/archinstall/lib/installer.py
+++ b/archinstall/lib/installer.py
@@ -40,6 +40,7 @@ class Installer:
base_packages = __packages__[:3]
if kernels is None:
kernels = ['linux']
+ self.kernels = kernels
self.target = target
self.init_time = time.strftime('%Y-%m-%d_%H-%M-%S')
self.milliseconds = int(str(time.time()).split('.')[1])
@@ -53,6 +54,7 @@ class Installer:
for kernel in kernels:
self.base_packages.append(kernel)
+
self.post_base_install = []
storage['session'] = self
@@ -453,45 +455,42 @@ class Installer:
with open(f'{self.target}/boot/loader/loader.conf', 'w') as loader:
for line in loader_data:
if line[:8] == 'default ':
- loader.write(f'default {self.init_time}\n')
+ loader.write(f'default {self.init_time}_{self.kernels[0]}\n')
elif line[:8] == '#timeout' and 'timeout 5' not in loader_data:
# We add in the default timeout to support dual-boot
loader.write(f"{line[1:]}\n")
else:
loader.write(f"{line}\n")
- # For some reason, blkid and /dev/disk/by-uuid are not getting along well.
- # And blkid is wrong in terms of LUKS.
- # UUID = sys_command('blkid -s PARTUUID -o value {drive}{partition_2}'.format(**args)).decode('UTF-8').strip()
- # Setup the loader entry
- with open(f'{self.target}/boot/loader/entries/{self.init_time}.conf', 'w') as entry:
- entry.write('# Created by: archinstall\n')
- entry.write(f'# Created on: {self.init_time}\n')
- entry.write('title Arch Linux\n')
- entry.write('linux /vmlinuz-linux\n')
- if not is_vm():
- vendor = cpu_vendor()
- if vendor == "AuthenticAMD":
- entry.write("initrd /amd-ucode.img\n")
- elif vendor == "GenuineIntel":
- entry.write("initrd /intel-ucode.img\n")
+ for kernel in self.kernels:
+ # Setup the loader entry
+ with open(f'{self.target}/boot/loader/entries/{self.init_time}_{kernel}.conf', 'w') as entry:
+ entry.write('# Created by: archinstall\n')
+ entry.write(f'# Created on: {self.init_time}\n')
+ entry.write('title Arch Linux\n')
+ entry.write(f"linux /vmlinuz-{kernel}\n") # Issue: hardcoded
+ if not is_vm():
+ vendor = cpu_vendor()
+ if vendor == "AuthenticAMD":
+ entry.write("initrd /amd-ucode.img\n")
+ elif vendor == "GenuineIntel":
+ entry.write("initrd /intel-ucode.img\n")
+ else:
+ self.log("unknow cpu vendor, not adding ucode to systemd-boot config")
+ entry.write(f"initrd /initramfs-{kernel}.img\n")
+ # blkid doesn't trigger on loopback devices really well,
+ # so we'll use the old manual method until we get that sorted out.
+
+ if real_device := self.detect_encryption(root_partition):
+ # TODO: We need to detect if the encrypted device is a whole disk encryption,
+ # or simply a partition encryption. Right now we assume it's a partition (and we always have)
+ log(f"Identifying root partition by PART-UUID on {real_device}: '{real_device.uuid}'.", level=logging.DEBUG)
+ entry.write(f'options cryptdevice=PARTUUID={real_device.uuid}:luksdev root=/dev/mapper/luksdev rw intel_pstate=no_hwp {" ".join(self.KERNEL_PARAMS)}\n')
else:
- self.log("unknow cpu vendor, not adding ucode to systemd-boot config")
- entry.write('initrd /initramfs-linux.img\n')
- # blkid doesn't trigger on loopback devices really well,
- # so we'll use the old manual method until we get that sorted out.
-
- if real_device := self.detect_encryption(root_partition):
- # TODO: We need to detect if the encrypted device is a whole disk encryption,
- # or simply a partition encryption. Right now we assume it's a partition (and we always have)
- log(f"Identifying root partition by PART-UUID on {real_device}: '{real_device.uuid}'.", level=logging.DEBUG)
- entry.write(f'options cryptdevice=PARTUUID={real_device.uuid}:luksdev root=/dev/mapper/luksdev rw intel_pstate=no_hwp {" ".join(self.KERNEL_PARAMS)}\n')
- else:
- log(f"Identifying root partition by PART-UUID on {root_partition}, looking for '{root_partition.uuid}'.", level=logging.DEBUG)
- entry.write(f'options root=PARTUUID={root_partition.uuid} rw intel_pstate=no_hwp {" ".join(self.KERNEL_PARAMS)}\n')
+ log(f"Identifying root partition by PART-UUID on {root_partition}, looking for '{root_partition.uuid}'.", level=logging.DEBUG)
+ entry.write(f'options root=PARTUUID={root_partition.uuid} rw intel_pstate=no_hwp {" ".join(self.KERNEL_PARAMS)}\n')
- self.helper_flags['bootloader'] = bootloader
- return True
+ self.helper_flags['bootloader'] = bootloader
elif bootloader == "grub-install":
self.pacstrap('grub')
@@ -509,10 +508,11 @@ class Installer:
o = b''.join(SysCommand(f'/usr/bin/arch-chroot {self.target} grub-install --target=i386-pc /dev/{root_device}'))
SysCommand('/usr/bin/arch-chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg')
self.helper_flags['bootloader'] = True
- return True
else:
raise RequirementError(f"Unknown (or not yet implemented) bootloader requested: {bootloader}")
+ return True
+
def add_additional_packages(self, *packages):
return self.pacstrap(*packages)