From 645e8d0144311caa7fe6af84bbf7ca90eeae7f8d Mon Sep 17 00:00:00 2001 From: mintsuki <36459316+mintsuki@users.noreply.github.com> Date: Sun, 2 Mar 2025 00:33:07 +0100 Subject: [PATCH] Enable UKI support for the Limine bootloader option (#3207) --- archinstall/lib/installer.py | 24 ++++++++++++++++-------- archinstall/lib/models/bootloader.py | 2 +- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index e413fe95..84052651 100644 --- a/archinstall/lib/installer.py +++ b/archinstall/lib/installer.py @@ -1231,7 +1231,8 @@ class Installer: self, boot_partition: PartitionModification, efi_partition: PartitionModification | None, - root: PartitionModification | LvmVolume + root: PartitionModification | LvmVolume, + uki_enabled: bool = False ) -> None: debug('Installing limine bootloader') @@ -1306,12 +1307,19 @@ Exec = /bin/sh -c "{hook_command}" for kernel in self.kernels: for variant in ('', '-fallback'): - entry = [ - 'protocol: linux', - f'kernel_path: boot():/vmlinuz-{kernel}', - f'kernel_cmdline: {kernel_params}', - f'module_path: boot():/initramfs-{kernel}{variant}.img', - ] + if uki_enabled: + entry = [ + 'protocol: efi', + f'path: boot():/EFI/Linux/arch-{kernel}.efi', + f'cmdline: {kernel_params}', + ] + else: + entry = [ + 'protocol: linux', + f'path: boot():/vmlinuz-{kernel}', + f'cmdline: {kernel_params}', + f'module_path: boot():/initramfs-{kernel}{variant}.img', + ] config_contents += f'\n/Arch Linux ({kernel}{variant})\n' config_contents += '\n'.join([f' {it}' for it in entry]) + '\n' @@ -1463,7 +1471,7 @@ Exec = /bin/sh -c "{hook_command}" case Bootloader.Efistub: self._add_efistub_bootloader(boot_partition, root, uki_enabled) case Bootloader.Limine: - self._add_limine_bootloader(boot_partition, efi_partition, root) + self._add_limine_bootloader(boot_partition, efi_partition, root, uki_enabled) def add_additional_packages(self, packages: str | list[str]) -> None: return self.pacman.strap(packages) diff --git a/archinstall/lib/models/bootloader.py b/archinstall/lib/models/bootloader.py index 467bb990..cea67d80 100644 --- a/archinstall/lib/models/bootloader.py +++ b/archinstall/lib/models/bootloader.py @@ -15,7 +15,7 @@ class Bootloader(Enum): def has_uki_support(self) -> bool: match self: - case Bootloader.Efistub | Bootloader.Systemd: + case Bootloader.Efistub | Bootloader.Limine | Bootloader.Systemd: return True case _: return False