From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Javier Martinez Canillas Date: Tue, 11 Aug 2020 13:16:39 +0200 Subject: [PATCH] blscfg: Always look for BLS snippets in the root device The blscfg command trying to load the BLS snippets from different devices is a left over from when these where located in the ESP in the EFI case. But now that are always located in the /boot directory, the BLS snippets have to be loaded from the root device just like the other files that are in the /boot directory (kernel and initrd images). This only worked for legacy BIOS because the boot and root variables were set to the same value. But doesn't work when trying to use a common GRUB config file that could be shared between an EFI and legacy BIOS install. That kind of configuration is needed for example on hybrid images that are booted using either EFI or legacy BIOS firmwares. Resolves: rhbz#1850193 Signed-off-by: Javier Martinez Canillas --- grub-core/commands/blscfg.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/grub-core/commands/blscfg.c b/grub-core/commands/blscfg.c index c92e1c845..70ce5c7bf 100644 --- a/grub-core/commands/blscfg.c +++ b/grub-core/commands/blscfg.c @@ -874,14 +874,12 @@ grub_cmd_blscfg (grub_extcmd_context_t ctxt UNUSED, #ifdef GRUB_MACHINE_EMU devid = "host"; -#elif defined(GRUB_MACHINE_EFI) +#else devid = grub_env_get ("root"); -#else - devid = grub_env_get ("boot"); #endif if (!devid) return grub_error (GRUB_ERR_FILE_NOT_FOUND, - N_("variable `%s' isn't set"), "boot"); + N_("variable `%s' isn't set"), "root"); grub_dprintf ("blscfg", "opening %s\n", devid); dev = grub_device_open (devid);