Resetting grub_errno to GRUB_ERR_NONE before loading normal does allow it to proceed.
At this point I'm not sure what is the correct behavior. Either explicitly check for error and simply do not even try to automatically jump into normal (it is still possible to load it manually) or reset grub_errno and ignore. The problem was exposed by someone trying to build minimal possible image using grub-mkrescue and so omitting most partition modules. This resulted in insmod for partition modules failure in embedded config. I still tend to think the following patch matches current behavior - we do not abort processing embedded config on error either. Alternative would be to check and abort processing as soon as error is encountered. From: Andrei Borzenkov <arvidj...@gmail.com> Subject: [PATCH] kernel: reset grub_errno before loading normal If last command in embedded config set grub_errno, loading of normal fails. As we do not really check for any errors during processing of embedded config and cannot handle error that happened in the middle of it, just ignore error and hope for best. --- grub-core/kern/main.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/grub-core/kern/main.c b/grub-core/kern/main.c index 9cad0c4..2e46e2c 100644 --- a/grub-core/kern/main.c +++ b/grub-core/kern/main.c @@ -304,6 +304,8 @@ grub_main (void) if (load_config) grub_parser_execute (load_config); + /* Reset error, otherwise loading of normal fails */ + grub_errno = GRUB_ERR_NONE; grub_boot_time ("After execution of embedded config. Attempt to go to normal mode"); -- tg: (018f79d..) u/reset-error-before-normal (depends on: master) _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel