[Bug 1800722] Re: EFI booting + /boot on LVM == inaccessible boot menu
Mathieu Trudel-Lapierre
mathieu.tl at gmail.com
Tue Jan 29 21:19:31 UTC 2019
Verification-done for bionic with grub2 / grub2-signed:
ubuntu at ubuntu:~$ dpkg -l grub-efi\* | grep ii | awk '{print $2" "$3 }'
grub-efi-amd64 2.02-2ubuntu8.10
grub-efi-amd64-bin 2.02-2ubuntu8.10
grub-efi-amd64-signed 1.93.11+2.02-2ubuntu8.10
GRUB correctly shows the menu at every boot when the system is installed
with full-disk LVM on EFI: /boot is on / which is on LVM, only /boot/efi
is on a primary partition.
** Tags removed: verification-needed-bionic
** Tags added: verification-done-bionic
--
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 Committed
Status in grub2 source package in Cosmic:
Fix Committed
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