From f5fa62feef86462b694a6684beae8247014994d2 Mon Sep 17 00:00:00 2001 From: Philip Date: Sun, 14 Jan 2018 15:55:30 -0500 Subject: [PATCH] [bootloader] merge with upstream master branch --- src/modules/bootloader/bootloader.conf | 28 ++++++++++++------- src/modules/bootloader/main.py | 37 ++++++++++++++------------ 2 files changed, 38 insertions(+), 27 deletions(-) diff --git a/src/modules/bootloader/bootloader.conf b/src/modules/bootloader/bootloader.conf index a47783811..70f1ef22d 100644 --- a/src/modules/bootloader/bootloader.conf +++ b/src/modules/bootloader/bootloader.conf @@ -5,23 +5,31 @@ efiBootLoader: "grub" # systemd-boot configuration files settings, set kernel and initramfs file names # and amount of time before default selection boots -kernel: "_ALL_kver_" -img: "_default_image_" -fallback: "_fallback_image_" +kernel: "/vmlinuz-linux" +img: "/initramfs-linux.img" +fallback: "/initramfs-linux-fallback.img" timeout: "10" # Optionally set the menu entry name and kernel name to use in systemd-boot. # If not specified here, these settings will be taken from branding.desc. -# bootloaderEntryName: "Manjaro" -kernelLine: ", with _manjaro_kernel_" -fallbackKernelLine: ", with _manjaro_kernel_ (fallback initramfs)" +# bootloaderEntryName: "Generic GNU/Linux" +# kernelLine: ", with Stable-Kernel" +# fallbackKernelLine: ", with Stable-Kernel (fallback initramfs)" # GRUB 2 binary names and boot directory # Some distributions (e.g. Fedora) use grub2-* (resp. /boot/grub2/) names. grubInstall: "grub-install" grubMkconfig: "grub-mkconfig" grubCfg: "/boot/grub/grub.cfg" -# Optionally set the --bootloader-id to use for EFI. If not set, this defaults -# to the bootloaderEntryName from branding.desc with problematic characters -# replaced. If an efiBootloaderId is specified here, it is taken to already be a -# valid directory name, so no such postprocessing is done in this case. + +# Optionally set the bootloader ID to use for EFI. This is passed to +# grub-install --bootloader-id. +# +# If not set here, the value from bootloaderEntryName from branding.desc +# is used, with problematic characters (space and slash) replaced. +# +# The ID is also used as a directory name within the EFI environment, +# and the bootloader is copied from /boot/efi/EFI// . When +# setting the option here, take care to use only valid directory +# names since no sanitizing is done. +# # efiBootloaderId: "dirname" diff --git a/src/modules/bootloader/main.py b/src/modules/bootloader/main.py index cb1b08f84..c9309b82a 100644 --- a/src/modules/bootloader/main.py +++ b/src/modules/bootloader/main.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# === This file is part of Calamares - === +# === This file is part of Calamares - === # # Copyright 2014, Aurélien Gâteau # Copyright 2014, Anke Boersma @@ -13,6 +13,7 @@ # Copyright 2017, Alf Gaida # Copyright 2017, Adriaan de Groot # Copyright 2017, Gabriel Craciunescu +# Copyright 2017, Ben Green # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -111,7 +112,7 @@ def create_systemd_boot_conf(uuid, conf_path, kernel_line): # - encrypted root sets cryptdevice_params for partition in partitions: has_luks = "luksMapperName" in partition - if partition["fs"].lower() == "linuxswap" and not has_luks: + if partition["fs"] == "linuxswap" and not has_luks: swap_uuid = partition["uuid"] if partition["mountPoint"] == "/" and has_luks: @@ -235,10 +236,18 @@ def install_grub(efi_directory, fw_type): # 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"} + + if efi_bitness == "32": + efi_target = "i386-efi" + efi_grub_file = "grubia32.efi" + efi_boot_file = "bootia32.efi" + elif efi_bitness == "64": + efi_target = "x86_64-efi" + efi_grub_file = "grubx64.efi" + efi_boot_file = "bootx64.efi" + check_target_env_call([libcalamares.job.configuration["grubInstall"], - bitness_translate[efi_bitness], + "--target=" + efi_target, "--efi-directory=" + efi_directory, "--bootloader-id=" + efi_bootloader_id, "--force"]) @@ -260,19 +269,13 @@ def install_grub(efi_directory, fw_type): os.makedirs(install_efi_boot_directory) # Workaround for some UEFI firmwares - efi_file_source = {"32": os.path.join(install_efi_directory_firmware, - efi_bootloader_id, - "grubia32.efi"), - "64": os.path.join(install_efi_directory_firmware, - efi_bootloader_id, - "grubx64.efi")} + efi_file_source = os.path.join(install_efi_directory_firmware, + efi_bootloader_id, + efi_grub_file) + efi_file_target = os.path.join(install_efi_boot_directory, + efi_boot_file) - efi_file_target = {"32": os.path.join(install_efi_boot_directory, - "bootia32.efi"), - "64": os.path.join(install_efi_boot_directory, - "bootx64.efi")} - - shutil.copy2(efi_file_source[efi_bitness], efi_file_target[efi_bitness]) + shutil.copy2(efi_file_source, efi_file_target) else: print("Bootloader: grub (bios)") if libcalamares.globalstorage.value("bootLoader") is None: