Bug#1146562: Please return efi_uga.mod to x86_64-efi grub
Mikhail Ryazanov
mikhail.ryazanov at jila.colorado.edu
Mon Sep 14 00:12:27 BST 2026
Mate, you apparently forgot to CC your last reply to the bugs.debian.org
address, so I'm leaving the full quote here (see my reply below it):
On 2026-09-08 03:01, Mate Kukri wrote:
> All text modes work fine on the non-Apple UEFI computers I have tested
> on, ranging from 2010 to brand new.
> On those, GRUB sets the mode using the EFI text output protocol
> without the non-standard "console control protocol" and it works fine.
> (This is how reading the firmware standard and edk2 code would make
> you expect it to behave).
>
> It seems like on the Apple device in question, beyond setting the
> specific text mode via the EFI text output protocol, an _additional_
> call to this console control protocol is required to switch it from
> graphics to text output (which is not something the firmware standard
> requires). This is not required by EDKII code or the plain text of the
> firmware standard.
> This still needs to be confirmed, as 2019 firmware is suspiciously too
> new to require this (I have known about this being required
> on 2006 era EDK), there could be a different bug in play.
>
> At this point I do not believe text mode is broken by this change on
> non-Apple Hardware, but I would be happy to be proven wrong.
I did test 2.14-3 on my non-Apple PC, and "terminal_output console" does
work there (although see below). So yes, it seems that this is
specifically an Apple issue.
To confirm, I've downloaded the source package
("grub2_2.14-3.debian.tar.xz" and "grub2_2.14.orig.tar.xz") and built it
locally (required minor tweaking for gcc-16). It reproduced the behavior
that I've observed with the binary package.
Then I've partially reverted the parts related to console in
"efi-Drop-support-for-UGA-Draw-and-Console-Control-protoco.patch",
rebuilt and tested again. This made "terminal_output console" working on
MacBook again (without breaking it on non-Apple PC), which proves that
those parts are indeed needed at least for that particular MacBook
model. They are quite small, and I don't think that keeping them in GRUB
will harm, so please return them to 2.14 and Debian and to 2.16 upstream.
During all these tests, I've also noticed some other bugs not directly
related to the patch in question (they are present in both 2.14-1 and
2.14-3), but presumably indicating some problems with GRUB terminal
initialization, so I'll mention them here because maybe that call to the
Console Control protocol on Apple is not really needed but just
circumvents some missing steps.
1. After switching the GRUB terminal from "console" to "gfxterm" and
back to "console", the cursor becomes invisible. On both MacBook and
non-Apple PC.
On MacBook, GRUB can actually be started in the "gfxterm" mode, then
"terminal_output console" works fine (shows visible cursor) the first
time, but subsequent switching hides the cursor in the "console" mode.
On non-Apple PC, the only possibility to see the cursor in the "console"
mode is to start GRUB in that mode.
However, the "gfxterm" mode always has a visible cursor, so I suspect
that there is something wrong in setting the cursor for "console".
2. Running "videotest" from the "gfxterm" mode leaves the system
visually unresponsive.
On non-Apple PC, running "videotest" from the "console" mode works fine
(pressing any key return to the terminal and prints some information
about colors). Running from the "gfxterm" mode requires pressing any key
and then blindly executing "terminal_output console" to see anything.
On MacBook, even running from the "console" mode does not return
properly, requiring blindly switching the terminal_output mode in any case.
Executing "clear" does not help. Executing "terminal_output" with the
current mode also does not help (probably just skips the
initialization). So it seems that "videotest" cannot restore the
video/terminal mode properly, and manually changing the terminal_output
mode is required.
(It also would be nice if "videotest" would show "Press any key to
continue". Because currently it is unclear whether it is supposed to
"hang" and require rebooting or is just buggy.)
More information about the Pkg-grub-devel
mailing list