[Bug 1800722] Re: EFI booting + /boot on LVM == inaccessible boot menu

Diftraku diftraku at gmail.com
Mon Mar 4 13:53:54 UTC 2019


Fixing the spelling on the recordfail timeout changes the timeout on both the recordfail and efi blocks:
if [ "${recordfail}" = 1 ] ; then
  set timeout=0
else
  if [ x$feature_timeout_style = xy ] ; then
    set timeout_style=hidden
    set timeout=0
  # Fallback hidden-timeout code in case the timeout_style feature is
  # unavailable.
  elif sleep --interruptible 0 ; then
    set timeout=0
  fi
fi
if [ $grub_platform = efi ]; then
  set timeout=0
  if [ x$feature_timeout_style = xy ] ; then
    set timeout_style=menu
  fi
fi

This still leaves `GRUB_TIMEOUT_STYLE=hidden`, as the timeout style is
forcefully set to `menu` if running on EFI. The menu indeed does not
show when both the normal and recordfail timeouts are set to 0 (as
expected).

-- 
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/1800722

Title:
  EFI booting + /boot on LVM == inaccessible boot menu

Status in grub2 package in Ubuntu:
  Fix Released
Status in grub2 source package in Bionic:
  Fix Released
Status in grub2 source package in Cosmic:
  Fix Released

Bug description:
  [Impact]
  This issue makes it impossible for UEFI users to access to boot menu and choose their kernel if /boot is installed on LVM.

  [Test case]
  1) Install Ubuntu on UEFI; put /boot on a LVM LV.
  2) Reboot after the install
  3) Verify that you will get a GRUB menu at boot.

  [Regression potential]
  Give particular attention to boot behavior on different disk setups: failure to show the menu on LVM or other disk setups when holding the SHIFT key, or showing the menu at every boot unnecessarily on other types of disk configurations: /boot on a physical partition, etc.

  ---

  Because EFI does not support instantaneous read of modifier keys (i.e.
  holding down shift at boot), the only way to reliably show a boot menu
  is by letting the system boot, interrupting the boot, and letting the
  menu be displayed because 'recordfail' has been set.

  If /boot/grub is on LVM, recordfail does not work, because grub
  doesn't have write support on LVM, so saveenv doesn't work.  Indeed,
  from the grub.cfg on such a system, the recordfail function is written
  as:

  function recordfail {
    set recordfail=1
    # GRUB lacks write support for lvm, so recordfail support is disabled.
  }

  The interaction of these two limitations means that systems with
  /boot/grub on LVM cannot reliably get a grub menu, ever.

  While I think that in the long term we should always put /boot/grub on
  the ESP (which means it will always be writable by grub), which is in
  fact what we did for Ubuntu Core, in the meantime I believe what we
  need to do here is always show the boot menu if we are booted under
  EFI and we have a non-writable grubenv.

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



More information about the foundations-bugs mailing list