From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Javier Martinez Canillas Date: Tue, 14 Jan 2020 17:41:29 +0100 Subject: [PATCH] blscfg: Always use the root variable to search for BLS snippets The boot and root variables are set by grub2-mkconfig to tell GRUB what are the devices and partitions used as the EFI System Partition (ESP) and to store the /boot directory (or used as the /boot mount point). But the boot variable is not needed anymore, this was added because the blscfg module used to search for the BLS snippets in the ESP, but was later changed to always search for the BLS files in /boot even for EFI. When doing that change, the logic was made backwards and so the boot variable is wrongly used for legacy BIOS. This only works because this is set to the same value as the root variable. So the correct thing to do is to always use the root variable to search the BLS snippets, since that is set to the partition that stores them. 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 286a5b88d12..aa4e624905e 100644 --- a/grub-core/commands/blscfg.c +++ b/grub-core/commands/blscfg.c @@ -968,14 +968,12 @@ bls_load_entries (const char *path) if (!devid) { #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);