afb0baacd6
The BLS config filenames are guaranteed to be unique, so they can be used as GRUB2 entry id and can also be used to sort the menu entries. Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
50 lines
1.7 KiB
Diff
50 lines
1.7 KiB
Diff
From 5f0417c63a4dd2252a5a801568f4369ac74a47e6 Mon Sep 17 00:00:00 2001
|
|
From: Javier Martinez Canillas <javierm@redhat.com>
|
|
Date: Tue, 3 Apr 2018 15:42:47 +0200
|
|
Subject: [PATCH 215/250] Only attempt to scan different BLS directories on EFI
|
|
machines
|
|
|
|
Current BLS support attempted to scan for BLS directories, but this only
|
|
makes sense on EFI, where BLS fragments are in /loader/$vendor/entries.
|
|
|
|
For BIOS, only either the default /loader/entries path should be scanned
|
|
or the BLS directory defined in the blsdir GRUB 2 environment variable.
|
|
|
|
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
|
|
---
|
|
grub-core/commands/blscfg.c | 9 ++++-----
|
|
1 file changed, 4 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/grub-core/commands/blscfg.c b/grub-core/commands/blscfg.c
|
|
index e5617c3bc6c..c0973ff83ea 100644
|
|
--- a/grub-core/commands/blscfg.c
|
|
+++ b/grub-core/commands/blscfg.c
|
|
@@ -676,8 +676,8 @@ static int find_entry (const char *filename,
|
|
const char *devid = grub_env_get ("boot");
|
|
|
|
grub_dprintf("blscfg", "%s got here\n", __func__);
|
|
- if (!grub_strcmp (filename, ".") ||
|
|
- !grub_strcmp (filename, ".."))
|
|
+ if (filename && (!grub_strcmp (filename, ".") ||
|
|
+ !grub_strcmp (filename, "..")))
|
|
return 0;
|
|
|
|
if (info->platform == PLATFORM_EFI && !grub_strcasecmp (filename, "boot"))
|
|
@@ -872,11 +872,10 @@ grub_cmd_blscfg (grub_extcmd_context_t ctxt UNUSED,
|
|
info.platform = PLATFORM_EMU;
|
|
grub_dprintf ("blscfg", "scanning %s%s\n", GRUB_BOOT_DEVICE,
|
|
GRUB_BLS_CONFIG_PATH);
|
|
- r = fs->dir (dev, "/boot/loader/",
|
|
- find_entry, &info);
|
|
+ find_entry(NULL, NULL, &info);
|
|
#else
|
|
grub_dprintf ("blscfg", "scanning %s\n", GRUB_BLS_CONFIG_PATH);
|
|
- r = fs->dir (dev, "/", find_entry, &info);
|
|
+ find_entry(NULL, NULL, &info);
|
|
#endif
|
|
|
|
finish:
|
|
--
|
|
2.17.1
|
|
|