grub-efi-amd64 postinst fails to install GRUB if previous GRUB install is not detected
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
grub2 (Ubuntu) |
Opinion
|
Undecided
|
Unassigned |
Bug Description
This concerns grub-efi-amd64 2.04-1ubuntu26 in Ubuntu focal.
Currently, when grub-efi-amd64 (or grub-efi-
1. Package postinst script runs
2. postinst checks if /boot/grub/
3. "/usr/lib/
The check in #2 is accompanied by this comment:
# Check /boot/grub to see if we previously installed to an ESP. We don't
# want to trigger the install code just by installing the package,
# normally the installer installs grub itself first.
I very much *want* the package install (or configuration) to do the GRUB install, even if GRUB was not previously installed by the Ubuntu installer. I am specifically concerned with the case of a system with grub-pc being transitioned over to grub-efi-amd64. If a standard system image with the former is installed onto an EFI system, then this conversion is needed. (There is also the case of systems that are themselves converted from BIOS booting to EFI.)
I do not know the motivation for the "only install if previously installed" check, but if the goal is to avoid installing GRUB to a plain /boot/efi/ directory (one that is not a separate special EFI partition), then it should be enough to check that /boot/efi/ is a mountpoint. I think it is reasonable to expect the user to set up the EFI partition and mount it prior to installing the package.
(Ideally, the package would alert the user if it cannot install GRUB due to /boot/efi/ not being set up correctly.)
This is so that,
- a specific grub package is installed
- a specific grub target is used to boot
are separate states.
Then the installer can decide which grub(s) to install, and those will be-reinstalled on package updates.
I believe this is by design. You can just run grub-install once by hand, and it will all update correctly afterwards.