2020-11-03 11:49:37 +00:00
|
|
|
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
|
2022-05-10 07:20:45 +00:00
|
|
|
index c92e1c845..70ce5c7bf 100644
|
2020-11-03 11:49:37 +00:00
|
|
|
--- 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);
|