[Bug 1891721] Re: grub-multi-install attempts to mount a non-existing device after migrating to another system
Dawid Wróbel
1891721 at bugs.launchpad.net
Thu Oct 29 15:47:10 UTC 2020
@Seth, I tried dpkg-reconfigure through and through, it didn't help.
--
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/1891721
Title:
grub-multi-install attempts to mount a non-existing device after
migrating to another system
Status in grub2 package in Ubuntu:
Confirmed
Bug description:
I recently moved my Ubuntu installation from Parallels to Virtualbox,
which naturally resulted in updated disks' UUIDs. Normally that should
be a problem as Ubuntu should autodetect such change and act
accordingly.
However, upon upgrading grub-efi-amd64-signed, dpkg kept failing with:
Setting up grub-efi-amd64-signed (1.142.4+2.04-1ubuntu26.2) ...
mount: /var/lib/grub/esp: special device /dev/disk/by-id/ata-Ubuntu_Linux-1_SSD_SF74YQ6DP1KMD07F8JED-part1 do
es not exist.
The Parallel's disk ID that it attempts to mount indeed no longer
exists. The EFI partition is correctly mounted at /boot/efi, since the
/etc/fstab uses partition' UUID to address it and that didn't change
during the migration, so there's no reason why the script should be
failing.
The debconf shows the following:
dawidw at ubuntu:~$ sudo debconf-get-selections | grep grub-efi
grub-efi-amd64 grub2/kfreebsd_cmdline string
grub-efi-amd64 grub-efi/install_devices multiselect /dev/disk/by-id/ata-Ubuntu_Linux-1_SSD_SF74YQ6DP1KMD07F8JED-part1, /dev/disk/by-id/ata-VBOX_HARDDISK_VB1-1a2b3c4d-part1
grub-efi-amd64 grub2/force_efi_extra_removable boolean false
grub-efi-amd64 grub2/linux_cmdline_default string quiet splash i8042.nopnp
grub-efi-amd64 grub2/update_nvram boolean true
grub-efi-amd64 grub2/linux_cmdline string
grub-efi-amd64 grub2/unsigned_kernels note
grub-efi-amd64 grub2/no_efi_extra_removable boolean true
grub-efi-amd64 grub2/device_map_regenerated note
grub-efi-amd64 grub-efi/install_devices_disks_changed multiselect /dev/disk/by-id/ata-Ubuntu_Linux-1_SSD_SF74YQ6DP1KMD07F8JED-part1, /dev/disk/by-id/ata-VBOX_HARDDISK_VB1-1a2b3c4d-part1
grub-efi-amd64 grub-efi/install_devices_empty boolean false
grub-efi-amd64 grub-efi/install_devices_failed boolean false
grub-efi-amd64 grub2/kfreebsd_cmdline_default string quiet splash
Note that it recored the new, correct "/dev/disk/by-id/ata-
VBOX_HARDDISK_VB1-1a2b3c4d-part1" UUID of the disk that contains the
EFI partition.
I debugged it further and can see that the failure happens in /usr/lib/grub/grub-multi-install (which is part of grub-common 2.04-1ubuntu26.2 package):
1) in "# We either migrate /boot/efi over, or we check if we have invalid devices" section, it correctly detects that the Parallels device does not exist ("if [ ! -e "${device%,}" ]", setting the valid=0
2) given that valid=0, my understanding is that at this point the "install_devices_disks_changed" prompt should be triggered, but it is not.
3) the "$RET" variable still contains both of the disks from grub-efi/install_devices
4) in "# Run the installer" section, the script iterates over each of the disks, attempting to mount ("mount $real_device $mntpoint) the non-existing one, which results in the aforementioned script failure.
My understanding here is that there are two problems:
1) "install_devices_disks_changed" prompt was not shown
2) there's no check for whether the device exists at all before the script proceeds with mounting and grub-installation attempt
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1891721/+subscriptions
More information about the foundations-bugs
mailing list