[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