[Bug 1896608] Re: grub-multi-install fails with exit 1 when question grub-efi/install_devices_empty is skipped

Michael Vogt 1896608 at bugs.launchpad.net
Tue Sep 22 17:21:33 UTC 2020


Some debug lines from setting "sh -x" inside the grub-multi-install
https://paste.ubuntu.com/p/9CBGGvJjz9/


and the debconf db grub entries: https://paste.ubuntu.com/p/j2DwtQHzSb/

I think the only relevant part here is that grub-
efi/install_devices_empty was already seen *and* is set to "True" as
this leads to the issue.

-- 
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:
  grub-multi-install fails with exit 1 when question grub-
  efi/install_devices_empty is skipped

Status in grub2 package in Ubuntu:
  New

Bug description:
  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