--- a/grub-core/term/efi/console.c +++ b/grub-core/term/efi/console.c @@ -446,7 +446,17 @@ grub_efi_console_output_fini (struct grub_term_output *term) { if (text_mode != GRUB_TEXT_MODE_AVAILABLE) - return 0; + { + /* + * No text has been output, so text-mode was never set by us. But some + * firmware (e.g. old Apple EFI) starts in text-mode, which keeps the + * graphics drawn by the next terminal (gfxterm) invisible. Make sure + * the console is in graphics-mode when leaving it. + */ + if (!grub_efi_is_finished) + grub_efi_set_text_mode (0); + return 0; + } grub_console_setcursor (term, 0); grub_efi_set_text_mode (0);