[Bug 1896608] Re: [regression-in-stable] grub-multi-install fails with exit 1 when question grub-efi/install_devices_empty is skipped
Brian Murray
1896608 at bugs.launchpad.net
Tue Oct 6 23:03:46 UTC 2020
Hello Michael, or anyone else affected,
Accepted grub2 into focal-proposed. The package will build now and be
available at https://launchpad.net/ubuntu/+source/grub2/2.04-1ubuntu26.6
in a few hours, and then in the -proposed repository.
Please help us by testing this new package. See
https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how
to enable and use -proposed. Your feedback will aid us getting this
update out to other Ubuntu users.
If this package fixes the bug for you, please add a comment to this bug,
mentioning the version of the package you tested, what testing has been
performed on the package and change the tag from verification-needed-
focal to verification-done-focal. If it does not fix the bug for you,
please add a comment stating that, and change the tag to verification-
failed-focal. In either case, without details of your testing we will
not be able to proceed.
Further information regarding the verification process can be found at
https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in
advance for helping!
N.B. The updated package will be released to -updates after the bug(s)
fixed by this package have been verified and the package has been in
-proposed for a minimum of 7 days.
** Changed in: grub2 (Ubuntu Focal)
Status: Confirmed => Fix Committed
** Tags added: verification-needed verification-needed-focal
--
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/1896608
Title:
[regression-in-stable] grub-multi-install fails with exit 1 when
question grub-efi/install_devices_empty is skipped
Status in grub2 package in Ubuntu:
Fix Released
Status in grub2 source package in Bionic:
Confirmed
Status in grub2 source package in Focal:
Fix Committed
Status in grub2 source package in Groovy:
Fix Released
Bug description:
[Impact]
* When both grub-pc & grub-efi-*-signed are installed, it is ok for one of them to not install onto any devices and mark install_devices_empty as true such that machine is booted with just one boot loader type, and not both.
* In such cases, the recently SRUed postinst will behave incorrectly upon reconfigure, instead demanding user to install both types of bootloaders somewhere.
* Error can only be triggered by abandonned grub-pc install, as grub-multi-install validates install_devices values and resets configuration logic.
[Test Case]
* Install in efi mode. Ensure that grub-pc is installed, configure debconf to have seen grub-pc/install_devices_empty question and have it as true, and have grub-pc/install_devices seen and empty.
* Attempt reconfigure of grub-pc, it should be successful.
All this can be done in chroot as follows:
mkdir -p /boot/grub/i386-pc
touch /boot/grub/i386-pc/core.img
dpkg-reconfigure grub-pc
(answer defaults, and choose to not install GRUB to any devices)
Then:
dpkg-reconfigure -u grub-pc
should succed, with exit code 0, when this bug is fixed. The current broken packages return exit code 1.
* Populate grub-efi/install_devices & grub-pc/install_devices with
invalid devices and set install_devices_empty to false, attempt non-
interactive reconfigure. It should still fail. (A check that previous
bug-fix does not regress).
[Regression Potential]
* This partially revert previous update which made that code path
error out. One too many error paths got added by xnox. The other bug,
to ensure when installing onto missing devices noninteractively the
package configure fails is still being check for (test #3).
[Other Info]
* original bug report
A 20.04 machine with grub-efi-amd64-signed that recently got upgraded fails with:
"""
dpkg: error processing package grub-efi-amd64-signed (--configure):
installed grub-efi-amd64-signed package post-installation script subprocess returned error exit status 1
"""
unfortunately not much more context was provided. After some debugging
it turns out that there are the following lines in /usr/lib/grub/grub-
multi-install:
"""
db_get "$question"
if [ -z "$RET" ]; then
# Reset the seen flag if the current answer is false, since
# otherwise we'll loop with no indication of why.
db_get grub-efi/install_devices_empty
if [ "$RET" = false ]; then
db_fset grub-efi/install_devices_empty seen false
fi
if db_input critical grub-efi/install_devices_empty; then
db_go
db_get grub-efi/install_devices_empty
if [ "$RET" = true ]; then
break
else
db_fset "$question" seen false
db_fset grub-efi/install_devices_empty seen false
fi
else
exit 1 # noninteractive
fi
"""
when grub-efi/install_devices_empty has the flag "seen" the line
if db_input critical grub-efi/install_devices_empty; then
will return "30" if the question was already shown but the rfset eset
happens only if the anser was "false" earlier. So the code jumps to
"exit 1".
So either the code need to always reset the seen flag ( db_fset grub-
efi/install_devices_empty seen false) or deal with exit code 30 from
"db_input critical grub-efi/install_devices_empty" more gracefully.
I can provide a /var/cache/debconf/config.dat to reproduce. I'm not
entirely sure how to reproduce from a clean install, the bug will only
happen after the first upgrade.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1896608/+subscriptions
More information about the foundations-bugs
mailing list