From: Paulo Flabiano Smorigo <pfsmor...@br.ibm.com> This patch makes grub look for its config file on efi where the app was found.
Resolves: rhbz#857936, rhbz#1616395 Co-authored-by: Matthew Garrett Co-authored-by: Javier Martinez Canillas <javi...@redhat.com> Co-authored-by: Robbie Harwood <rharw...@redhat.com> Signed-off-by: Paulo Flabiano Smorigo <pfsmor...@br.ibm.com> Signed-off-by: Javier Martinez Canillas <javi...@redhat.com> Signed-off-by: Robbie Harwood <rharw...@redhat.com> --- grub-core/kern/main.c | 14 +++++++------- grub-core/normal/main.c | 25 ++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/grub-core/kern/main.c b/grub-core/kern/main.c index 731c07c290..e1e6cf7a02 100644 --- a/grub-core/kern/main.c +++ b/grub-core/kern/main.c @@ -128,16 +128,16 @@ grub_set_prefix_and_root (void) grub_machine_get_bootlocation (&fwdevice, &fwpath); - if (fwdevice) + if (fwdevice && fwpath) { - char *cmdpath; + char *fw_path; - cmdpath = grub_xasprintf ("(%s)%s", fwdevice, fwpath ? : ""); - if (cmdpath) + fw_path = grub_xasprintf ("(%s)/%s", fwdevice, fwpath); + if (fw_path) { - grub_env_set ("cmdpath", cmdpath); - grub_env_export ("cmdpath"); - grub_free (cmdpath); + grub_env_set ("fw_path", fw_path); + grub_env_export ("fw_path"); + grub_free (fw_path); } } diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c index bd44310005..a557ba5c9c 100644 --- a/grub-core/normal/main.c +++ b/grub-core/normal/main.c @@ -320,7 +320,30 @@ grub_cmd_normal (struct grub_command *cmd __attribute__ ((unused)), /* Guess the config filename. It is necessary to make CONFIG static, so that it won't get broken by longjmp. */ char *config; - const char *prefix; + const char *prefix, *fw_path; + + fw_path = grub_env_get ("fw_path"); + if (fw_path) + { + config = grub_xasprintf ("%s/grub.cfg", fw_path); + if (config) + { + grub_file_t file; + + file = grub_file_open (config, GRUB_FILE_TYPE_CONFIG); + if (file) + { + grub_file_close (file); + grub_enter_normal_mode (config); + } + else + { + /* Ignore all errors. */ + grub_errno = 0; + } + grub_free (config); + } + } prefix = grub_env_get ("prefix"); if (prefix) -- 2.39.0 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel