From baca0cc51456c6129f3cb13b508e66687023f64c Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Mon, 31 May 2021 10:09:03 +0200 Subject: Creating PR --- archinstall/lib/installer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index c5e77b7e..47e858c9 100644 --- a/archinstall/lib/installer.py +++ b/archinstall/lib/installer.py @@ -468,7 +468,7 @@ class Installer: 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') + entry.write('linux /vmlinuz-linux\n') # Issue: hardcoded if not is_vm(): vendor = cpu_vendor() if vendor == "AuthenticAMD": -- cgit v1.2.3-70-g09d2 From 3006e5b4c3594ac21714e54d7751b8fec03ae9c2 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Mon, 31 May 2021 11:15:01 +0200 Subject: Creating multiple boot configs, based on the selected kernels. Not 100% sure both initramfs and vmlinuz will have the trailing definitions, but made both {kernel} --- archinstall/lib/installer.py | 62 ++++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index 47e858c9..fc6bb821 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,43 @@ 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') # 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") + 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 + return True elif bootloader == "grub-install": self.pacstrap('grub') -- cgit v1.2.3-70-g09d2 From 7b1bb4af97e9a1bf1d14b0f4e60e8a87c043e832 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Mon, 31 May 2021 12:17:18 +0200 Subject: Fixed a plugin issue where there are no plugins found. --- archinstall/lib/plugins.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archinstall/lib/plugins.py b/archinstall/lib/plugins.py index a61be30b..24fbd8ee 100644 --- a/archinstall/lib/plugins.py +++ b/archinstall/lib/plugins.py @@ -16,7 +16,7 @@ plugins = {} # 1: List archinstall.plugin definitions # 2: Load the plugin entrypoint # 3: Initiate the plugin and store it as .name in plugins -for plugin_definition in metadata.entry_points()['archinstall.plugin']: +for plugin_definition in metadata.entry_points().get('archinstall.plugin', []): plugin_entrypoint = plugin_definition.load() try: plugins[plugin_definition.name] = plugin_entrypoint() -- cgit v1.2.3-70-g09d2 From 62c22f78b17621a70ed5839a6c3ea728cc03a791 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Mon, 31 May 2021 12:26:49 +0200 Subject: Moved return logic to not abort the iteration of kernels. --- archinstall/lib/installer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index fc6bb821..b752e86e 100644 --- a/archinstall/lib/installer.py +++ b/archinstall/lib/installer.py @@ -491,7 +491,6 @@ class Installer: 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 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) -- cgit v1.2.3-70-g09d2