grub-efi-amd64 postinst fails to install GRUB if previous GRUB install is not detected

Bug #1879558 reported by Daniel Richard G.
6
This bug affects 1 person
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-amd64-signed) is installed or reconfigured, the following steps occur:

  1. Package postinst script runs

  2. postinst checks if /boot/grub/x86_64-efi/core.efi is present, and if so...

  3. "/usr/lib/grub/grub-multi-install x86_64-efi" is invoked

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.)

Tags: focal
Revision history for this message
Mate Kukri (mkukri) wrote :

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.

Changed in grub2 (Ubuntu):
status: New → Opinion
Revision history for this message
Daniel Richard G. (skunk) wrote :

> You can just run grub-install once by hand, and it will all update correctly afterwards.

The package already has a good debconf-driven install process for GRUB---requiring the user to do it manually not only discards the benefit of that, it's a delicate and error-prone operation that most users are not accustomed to doing (hence wrapping it in debconf).

The core of the problem is the chicken-and-egg scenario of requiring GRUB to be installed in order to install GRUB. I just want to do e.g. "dpkg-reconfigure grub-efi-amd64" on a newborn system, and have the instalL_devices question come up. Right now, in order to get that, I have to fool the postinst script by running "touch /boot/grub/x86_64-efi/core.efi" beforehand. That's not a reasonable UI.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.