From 7e8129a902f76817d6d7d635b1c4b2985f275a9c Mon Sep 17 00:00:00 2001 From: JoernSchoenyan Date: Tue, 15 Mar 2016 13:11:25 +0100 Subject: [PATCH] Enable support for 32bit UEFI systems with Grub Read the UEFI bitness exposed to the file system and install the correct variant of Grub, depending on the UEFI bitness. --- src/modules/bootloader/main.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/modules/bootloader/main.py b/src/modules/bootloader/main.py index 808784fa3..846b04382 100644 --- a/src/modules/bootloader/main.py +++ b/src/modules/bootloader/main.py @@ -176,7 +176,16 @@ def install_grub(efi_directory, fw_type): distribution = branding["bootloaderEntryName"] file_name_sanitizer = str.maketrans(" /", "_-") efi_bootloader_id = distribution.translate(file_name_sanitizer) - check_target_env_call([libcalamares.job.configuration["grubInstall"], "--target=x86_64-efi", + # get bitness of the underlying UEFI + try: + f = open("/sys/firmware/efi/fw_platform_size", "r") + efi_bitness = f.read(2) + except: + # if the kernel is older than 4.0, the UEFI bitness likely isn't exposed to the userspace + # so we assume a 64 bit UEFI here + efi_bitness = "64" + bitness_translate = {"32": "--target=i386-efi", "64": "--target=x86_64-efi"} + check_target_env_call([libcalamares.job.configuration["grubInstall"], bitness_translate[efi_bitness], "--efi-directory={!s}".format(efi_directory), "--bootloader-id={!s}".format(efi_bootloader_id), "--force"])