[Bug 425979] Re: [UEFI boot only] Holding shift fails to display grub2 menu

Daniel Richard G. skunk at iskunk.org
Mon Jul 23 02:12:29 UTC 2018


Hello everyone,

There is a bug report similar to this one on the Debian side:

    https://bugs.debian.org/902928

There, Colin Watson made an interesting comment:

> When I last looked into this, this wasn't possible with UEFI: the
> firmware doesn't tell us about held modifier keys.  You'll probably need
> to use a short but non-zero timeout and press Escape instead.
>
> (It's possible that more recent versions of the UEFI spec have improved
> this; but if so then somebody would need to implement that in GRUB, and
> it would still only work if you had new enough firmware.)

So it would seem that the old way of bringing up the GRUB menu by
holding down the Shift key just doesn't work in this brave new UEFI
world anymore.

It would be interesting to hear if anyone is aware of a system that
boots in UEFI mode and *does* respond to the held Shift key. Currently,
I don't believe it's clear as to whether this is an architectural
limitation of UEFI (i.e. it can't be fixed), or if newer UEFI firmware
versions could potentially make held modifier keys usable.

** Bug watch added: Debian Bug tracker #902928
   https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=902928

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to grub2 in Ubuntu.
https://bugs.launchpad.net/bugs/425979

Title:
  [UEFI boot only] Holding shift fails to display grub2 menu

Status in grub2 package in Ubuntu:
  In Progress

Bug description:
  Binary package hint: grub2

  Ubuntu added a patch on top of mainline GRUB and Debian such that holding down the Shift modifier key during boot will cause it to display
  the hidden boot menu.

  In the original IBM PC/AT design the modifier keys (Shifts, Ctrls, Alts) are handled separately to all other keys. Instead of reporting state transitions there is an I/O port register that is read by the software where each bit position represents the current state of the associated
  modifier key.

  The functionality to read this I/O port register works correctly for
  BIOS systems or UEFI systems starting in Legacy/CSM mode.

  On UEFI systems this does not work. The reasons are:

  1. At the time this Ubuntu-specific functionality was added to Ubuntu
  the UEFI specification, and UEFI implementations by manufacturers, did
  not provide a way to detect the state of the modifier keys.

  2. UEFI only provides the same mechanism as for all other keys: detect
  a transition of state (key_down or key_up).

  3. When GRUB timeout is set to 0 (zero) there is no way to detect a
  key press transition.

  It appears that UEFI specification version 2.4 may now support the
  required reading of modifier key state so I shall be investigating
  whether we can now add support for UEFI systems that implement the
  v2.4 specification.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/425979/+subscriptions



More information about the foundations-bugs mailing list