Jeremy Maes
unread,Sep 26, 2022, 11:00:04 AM9/26/22You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
Package: grub-pc
Version: 2.06-3~deb11u2
Severity: important
Dear Maintainer,
As a system does not always boot with the same disk order for its /dev/sdX naming scheme,
sometimes the disk containing the boot partition is not /dev/sda but /dev/sdb (or other
if there are more than 2 disks).
We notice that the upgrade from e.g. grub-pc 2.04-20 to 2.06-3~deb11u1
or 2.06-3~deb11u2 fails when the system boots with e.g. /dev/sdb containing
the boot partition. For some reason it tries to run grub-install on /dev/sda
instead of /dev/sdb, which obviously fails as /dev/sda is the wrong disk.
Errors seen at that point:
* In interactive whiptail window:
"GRUB failed to install to the following devices: /dev/sda."
You get an option to "Continue, Yes or No". When choosing "No" you
can select the correct disk to install to and it continues.
* Text output on the commandline:
Setting up grub-pc (2.06-3~deb11u1) ...
Installing for i386-pc platform.
grub-install: error: unable to identify a filesystem in hostdisk//dev/sda; safety check can't be performed.
While one can manually work around the issue by doing a manual update
and telling grub which disk to use, we expect it to find this correctly
during the package post-install phase. But as we manage hundreds of
Debian 11 servers this would be a very tedious process.
Missing a failed grub-pc package upgrade could render systems unbootable.
Running a command like "grub-probe -t drive /boot/grub" before the
upgrade do show the correct disk.
If the system was booted with /dev/sda as the main disk containing the
boot partition, the upgrade runs smoothly.
So in short:
* Upgrading grub-pc to 2.06-3~deb11u1 or 2.06-3~deb11u2 triggers the issue
when system is booted with boot partition not on /dev/sda
* A manual workaround is possible, but automatic upgrades fail or
hang due to this issue
* grub-pc upgrade hangs and waits for manual intervention. Without
manual intervention this leads to an unbootable system.
* I expect the grub-pc post-install script to correctly detect and
use the correct disk for grub-install, regardless of the disk
naming order after boot.
To reproduce:
* Run Debian 11 with an older grub version (e.g. 2.04-20) and at
least 2 disks.
* Reboot the VM until /dev/sdb is the disk containing the boot
partition
* Upgrade to grub-pc 2.06-3
Kind regards,
Jeremy
-- Package-specific info:
*********************** BEGIN /proc/mounts
/dev/mapper/vg00-root / ext4 rw,relatime,errors=remount-ro 0 0
/dev/sdb1 /boot ext4 rw,relatime 0 0
*********************** END /proc/mounts
*********************** BEGIN /boot/grub/grub.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
set have_grubenv=true
load_env
fi
if [ "${next_entry}" ] ; then
set default="${next_entry}"
set next_entry=
save_env next_entry
set boot_once=true
else
set default="0"
fi
if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
else
menuentry_id_option=""
fi
export menuentry_id_option
if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi
function savedefault {
if [ -z "${boot_once}" ]; then
saved_entry="${chosen}"
save_env saved_entry
fi
}
function load_video {
if [ x$feature_all_video_module = xy ]; then
insmod all_video
else
insmod efi_gop
insmod efi_uga
insmod ieee1275_fb
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
fi
}
if [ x$feature_default_font_path = xy ] ; then
font=unicode
else
insmod part_msdos
insmod lvm
insmod ext2
set root='lvmid/B2f0tR-92oR-LhtW-kVRS-65Fe-gbxB-2biwmu/N2r3qh-zlaE-EQe9-WcBr-c6k8-tcJQ-1SHXEa'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='lvmid/B2f0tR-92oR-LhtW-kVRS-65Fe-gbxB-2biwmu/N2r3qh-zlaE-EQe9-WcBr-c6k8-tcJQ-1SHXEa' d0a31752-2777-48f4-ac55-f583d6274b88
else
search --no-floppy --fs-uuid --set=root d0a31752-2777-48f4-ac55-f583d6274b88
fi
font="/usr/share/grub/unicode.pf2"
fi
if loadfont $font ; then
set gfxmode=auto
load_video
insmod gfxterm
set locale_dir=$prefix/locale
set lang=en_US
insmod gettext
fi
terminal_output gfxterm
if [ "${recordfail}" = 1 ] ; then
set timeout=30
else
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=menu
set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
set timeout=5
fi
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
### END /etc/grub.d/05_debian_theme ###
### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
set gfxpayload="${1}"
}
set linux_gfx_mode=
export linux_gfx_mode
menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-d0a31752-2777-48f4-ac55-f583d6274b88' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 038538c7-e68a-409a-99fc-23064ef7c437
else
search --no-floppy --fs-uuid --set=root 038538c7-e68a-409a-99fc-23064ef7c437
fi
echo 'Loading Linux 5.10.0-16-amd64 ...'
linux /vmlinuz-5.10.0-16-amd64 root=/dev/mapper/vg00-root ro debian-installer=en_US.UTF-8 quiet quiet
echo 'Loading initial ramdisk ...'
initrd /initrd.img-5.10.0-16-amd64
}
submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-d0a31752-2777-48f4-ac55-f583d6274b88' {
menuentry 'Debian GNU/Linux, with Linux 5.10.0-16-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.10.0-16-amd64-advanced-d0a31752-2777-48f4-ac55-f583d6274b88' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 038538c7-e68a-409a-99fc-23064ef7c437
else
search --no-floppy --fs-uuid --set=root 038538c7-e68a-409a-99fc-23064ef7c437
fi
echo 'Loading Linux 5.10.0-16-amd64 ...'
linux /vmlinuz-5.10.0-16-amd64 root=/dev/mapper/vg00-root ro debian-installer=en_US.UTF-8 quiet quiet
echo 'Loading initial ramdisk ...'
initrd /initrd.img-5.10.0-16-amd64
}
menuentry 'Debian GNU/Linux, with Linux 5.10.0-16-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.10.0-16-amd64-recovery-d0a31752-2777-48f4-ac55-f583d6274b88' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 038538c7-e68a-409a-99fc-23064ef7c437
else
search --no-floppy --fs-uuid --set=root 038538c7-e68a-409a-99fc-23064ef7c437
fi
echo 'Loading Linux 5.10.0-16-amd64 ...'
linux /vmlinuz-5.10.0-16-amd64 root=/dev/mapper/vg00-root ro single debian-installer=en_US.UTF-8
echo 'Loading initial ramdisk ...'
initrd /initrd.img-5.10.0-16-amd64
}
menuentry 'Debian GNU/Linux, with Linux 5.10.0-9-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.10.0-9-amd64-advanced-d0a31752-2777-48f4-ac55-f583d6274b88' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 038538c7-e68a-409a-99fc-23064ef7c437
else
search --no-floppy --fs-uuid --set=root 038538c7-e68a-409a-99fc-23064ef7c437
fi
echo 'Loading Linux 5.10.0-9-amd64 ...'
linux /vmlinuz-5.10.0-9-amd64 root=/dev/mapper/vg00-root ro debian-installer=en_US.UTF-8 quiet quiet
echo 'Loading initial ramdisk ...'
initrd /initrd.img-5.10.0-9-amd64
}
menuentry 'Debian GNU/Linux, with Linux 5.10.0-9-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.10.0-9-amd64-recovery-d0a31752-2777-48f4-ac55-f583d6274b88' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 038538c7-e68a-409a-99fc-23064ef7c437
else
search --no-floppy --fs-uuid --set=root 038538c7-e68a-409a-99fc-23064ef7c437
fi
echo 'Loading Linux 5.10.0-9-amd64 ...'
linux /vmlinuz-5.10.0-9-amd64 root=/dev/mapper/vg00-root ro single debian-installer=en_US.UTF-8
echo 'Loading initial ramdisk ...'
initrd /initrd.img-5.10.0-9-amd64
}
menuentry 'Debian GNU/Linux, with Linux 5.10.0-8-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.10.0-8-amd64-advanced-d0a31752-2777-48f4-ac55-f583d6274b88' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 038538c7-e68a-409a-99fc-23064ef7c437
else
search --no-floppy --fs-uuid --set=root 038538c7-e68a-409a-99fc-23064ef7c437
fi
echo 'Loading Linux 5.10.0-8-amd64 ...'
linux /vmlinuz-5.10.0-8-amd64 root=/dev/mapper/vg00-root ro debian-installer=en_US.UTF-8 quiet quiet
echo 'Loading initial ramdisk ...'
initrd /initrd.img-5.10.0-8-amd64
}
menuentry 'Debian GNU/Linux, with Linux 5.10.0-8-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.10.0-8-amd64-recovery-d0a31752-2777-48f4-ac55-f583d6274b88' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 038538c7-e68a-409a-99fc-23064ef7c437
else
search --no-floppy --fs-uuid --set=root 038538c7-e68a-409a-99fc-23064ef7c437
fi
echo 'Loading Linux 5.10.0-8-amd64 ...'
linux /vmlinuz-5.10.0-8-amd64 root=/dev/mapper/vg00-root ro single debian-installer=en_US.UTF-8
echo 'Loading initial ramdisk ...'
initrd /initrd.img-5.10.0-8-amd64
}
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/30_uefi-firmware ###
### END /etc/grub.d/30_uefi-firmware ###
### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###
### BEGIN /etc/grub.d/41_custom ###
if [ -f ${config_directory}/custom.cfg ]; then
source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###
*********************** END /boot/grub/grub.cfg
*********************** BEGIN /proc/mdstat
cat: /proc/mdstat: No such file or directory
*********************** END /proc/mdstat
*********************** BEGIN LVM
--- Volume group ---
VG Name vg00
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size <9.76 GiB
PE Size 4.00 MiB
Total PE 2498
Alloc PE / Size 2498 / <9.76 GiB
Free PE / Size 0 / 0
VG UUID B2f0tR-92oR-LhtW-kVRS-65Fe-gbxB-2biwmu
--- Physical volume ---
PV Name /dev/sdb2
VG Name vg00
PV Size 9.76 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 2498
Free PE 0
Allocated PE 2498
PV UUID RTWvR7-Q33o-tIVn-pzqS-EOj6-EwHF-mY4m3T
--- Logical volume ---
LV Path /dev/vg00/swap_1
LV Name swap_1
VG Name vg00
LV UUID VqpgYS-8zn1-ilGy-tzwU-c4UX-Jthx-wgKT2T
LV Write Access read/write
LV Creation host, time debian, 2021-11-01 05:39:43 +0100
LV Status available
# open 2
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:0
--- Logical volume ---
LV Path /dev/vg00/root
LV Name root
VG Name vg00
LV UUID N2r3qh-zlaE-EQe9-WcBr-c6k8-tcJQ-1SHXEa
LV Write Access read/write
LV Creation host, time debian, 2021-11-01 05:39:43 +0100
LV Status available
# open 1
LV Size <7.76 GiB
Current LE 1986
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:1
*********************** END LVM
*********************** BEGIN /dev/disk/by-id
total 0
lrwxrwxrwx 1 root root 10 Sep 26 14:33 dm-name-vg00-root -> ../../dm-1
lrwxrwxrwx 1 root root 10 Sep 26 14:33 dm-name-vg00-swap_1 -> ../../dm-0
lrwxrwxrwx 1 root root 10 Sep 26 14:33 dm-uuid-LVM-B2f0tR92oRLhtWkVRS65FegbxB2biwmuN2r3qhzlaEEQe9WcBrc6k8tcJQ1SHXEa -> ../../dm-1
lrwxrwxrwx 1 root root 10 Sep 26 14:33 dm-uuid-LVM-B2f0tR92oRLhtWkVRS65FegbxB2biwmuVqpgYS8zn1ilGytzwUc4UXJthxwgKT2T -> ../../dm-0
lrwxrwxrwx 1 root root 10 Sep 26 14:33 lvm-pv-uuid-RTWvR7-Q33o-tIVn-pzqS-EOj6-EwHF-mY4m3T -> ../../sdb2
*********************** END /dev/disk/by-id
*********************** BEGIN /dev/disk/by-uuid
total 0
lrwxrwxrwx 1 root root 10 Sep 26 14:33 038538c7-e68a-409a-99fc-23064ef7c437 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Sep 26 14:33 c8ad1c9c-7aaa-4c17-8ec9-a6c7ce81a185 -> ../../dm-0
lrwxrwxrwx 1 root root 10 Sep 26 14:33 d0a31752-2777-48f4-ac55-f583d6274b88 -> ../../dm-1
*********************** END /dev/disk/by-uuid
-- System Information:
Debian Release: 11.4
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 'stable')
Architecture: amd64 (x86_64)
Kernel: Linux 5.10.0-16-amd64 (SMP w/2 CPU threads)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages grub-pc depends on:
ii debconf [debconf-2.0] 1.5.77
ii grub-common 2.04-20
ii grub-pc-bin 2.04-20
ii grub2-common 2.04-20
ii ucf 3.0043
grub-pc recommends no packages.
grub-pc suggests no packages.
-- debconf information:
grub-pc/install_devices_disks_changed:
grub-pc/mixed_legacy_and_grub2: true
* grub2/linux_cmdline: debian-installer=en_US.UTF-8
grub2/update_nvram: true
grub-pc/kopt_extracted: false
grub-pc/disk_description:
grub-pc/partition_description:
grub2/kfreebsd_cmdline_default: quiet
grub-pc/hidden_timeout: false
grub-pc/install_devices_failed_upgrade: true
grub2/kfreebsd_cmdline:
grub-pc/install_devices_empty: false
grub-pc/timeout: 5
grub-pc/postrm_purge_boot_grub: false
grub2/force_efi_extra_removable: false
* grub-pc/install_devices: /dev/sda
* grub2/linux_cmdline_default: quiet quiet
grub-pc/install_devices_failed: false
grub-pc/chainload_from_menu.lst: true