From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Javier Martinez Canillas <javierm@redhat.com>
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 <javierm@redhat.com>
---
 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);
