Public bug reported:

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@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

** Affects: grub2 (Ubuntu)
     Importance: Undecided
         Status: New

** Description changed:

  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 mount it and that didn't change, so
  there's no reason why the script should fail.
  
  The debconf shows the following:
  
  dawidw@ubuntu:~$ sudo debconf-get-selections | grep grub-efi
- grub-efi-amd64        grub2/kfreebsd_cmdline  string  
+ 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/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        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 detected 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 following happens in 
/usr/lib/grub/grub-multi-install (which is part of grub-common package): 
+ I debugged it further and can see that the following 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

** Package changed: grub2-signed (Ubuntu) => grub2 (Ubuntu)

** Description changed:

  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 mount it and that didn't change, so
- there's no reason why the script should fail.
+ /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 fail.
  
  The debconf shows the following:
  
  dawidw@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 detected 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 following 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

** Description changed:

  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 fail.
+ during the migration, so there's no reason why the script should be
+ failing.
  
  The debconf shows the following:
  
  dawidw@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 detected 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 following 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

** Description changed:

  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@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 detected the new, correct "/dev/disk/by-id/ata-
+ 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 following 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

** Description changed:

  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@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 following happens in 
/usr/lib/grub/grub-multi-install (which is part of grub-common 2.04-1ubuntu26.2 
package):
+ 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

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1891721

Title:
  grub-multi-install attempts to mount a non-existing device after
  migrating to another system

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1891721/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to