Bug#614097: grub2: System doesn't boot after update to Squeeze: UUIDs used in fstab but not in root configuration in grub.cfg
Wouter Van Hemel
debian at publica.duodecim.org
Sat Feb 19 17:14:14 UTC 2011
Package: grub2
Version: 1.98+20100804-14
Severity: important
Hello,
After updating a remote system to Squeeze, the system didn't boot anymore. Usage of UUIDs goes wrong on systems running kernels that don't support UUID *BEFORE* the reboot.
- the kernel of the old system (2.6.20.4) didn't support udev
- the Squeeze update changed /etc/fstab mount points to UUIDs
- grub2 used the old mount point /dev/hda1 as a root device because of this line in /etc/grub.d/10_linux:
# || ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
So grub2 installs "root = /dev/hda1" instead of the UUID the Squeeze upgrade just came up with. Upon reboot, grub can't find /dev/hda1 during initramfs, resulting in an unbootable system.
This despite an explicit "GRUB_DISABLE_LINUX_UUID=false" in /etc/default/grub!
It seems the grub installation script can't upgrade from a pre-udev system to a udev-based system -- there's no easy way out instead of manually changing the /etc/grub.d/10_linux script.
Grub should probably just use whatever is in /etc/fstab.
Thanks,
Wouter
-- Package-specific info:
*********************** BEGIN /proc/mounts
/dev/disk/by-uuid/4c65d502-1c51-4516-a820-611faef98270 / ext3 rw,relatime,errors=remount-ro,data=ordered 0 0
/dev/sda7 /home ext3 rw,nosuid,nodev,relatime,errors=continue,data=ordered 0 0
/dev/sda5 /usr ext3 rw,relatime,errors=continue,data=ordered 0 0
/dev/sda6 /var ext3 rw,nosuid,nodev,relatime,errors=continue,data=ordered 0 0
*********************** END /proc/mounts
*********************** BEGIN /boot/grub/device.map
(hd0) /dev/hda
*********************** END /boot/grub/device.map
*********************** 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
load_env
fi
set default="0"
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 {
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
}
insmod part_msdos
insmod ext2
set root='(hd0,msdos5)'
search --no-floppy --fs-uuid --set 1d5769e7-e1d7-4562-b53e-e4fab6375d8a
if loadfont /share/grub/unicode.pf2 ; then
set gfxmode=640x480
load_video
insmod gfxterm
fi
terminal_output gfxterm
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set 4c65d502-1c51-4516-a820-611faef98270
set locale_dir=($root)/boot/grub/locale
set lang=
insmod gettext
set timeout=5
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###
insmod part_msdos
insmod ext2
set root='(hd0,msdos5)'
search --no-floppy --fs-uuid --set 1d5769e7-e1d7-4562-b53e-e4fab6375d8a
insmod png
if background_image /share/images/desktop-base/spacefun-grub.png; then
set color_normal=light-gray/black
set color_highlight=white/black
else
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
fi
### END /etc/grub.d/05_debian_theme ###
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-686' --class debian --class gnu-linux --class gnu --class os {
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set 4c65d502-1c51-4516-a820-611faef98270
echo 'Loading Linux 2.6.32-5-686 ...'
linux /boot/vmlinuz-2.6.32-5-686 root=UUID=4c65d502-1c51-4516-a820-611faef98270 ro quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-2.6.32-5-686
}
menuentry 'Debian GNU/Linux, with Linux 2.6.20.4' --class debian --class gnu-linux --class gnu --class os {
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set 4c65d502-1c51-4516-a820-611faef98270
echo 'Loading Linux 2.6.20.4 ...'
linux /boot/vmlinuz-2.6.20.4 root=/dev/hda1 ro quiet
}
menuentry 'Debian GNU/Linux, with Linux 2.6.19.1' --class debian --class gnu-linux --class gnu --class os {
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set 4c65d502-1c51-4516-a820-611faef98270
echo 'Loading Linux 2.6.19.1 ...'
linux /boot/vmlinuz-2.6.19.1 root=/dev/hda1 ro quiet
}
menuentry 'Debian GNU/Linux, with Linux 2.6.17.6' --class debian --class gnu-linux --class gnu --class os {
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set 4c65d502-1c51-4516-a820-611faef98270
echo 'Loading Linux 2.6.17.6 ...'
linux /boot/vmlinuz-2.6.17.6 root=/dev/hda1 ro quiet
}
menuentry 'Debian GNU/Linux, with Linux 2.6.17.5' --class debian --class gnu-linux --class gnu --class os {
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set 4c65d502-1c51-4516-a820-611faef98270
echo 'Loading Linux 2.6.17.5 ...'
linux /boot/vmlinuz-2.6.17.5 root=/dev/hda1 ro quiet
}
menuentry 'Debian GNU/Linux, with Linux 2.6.8' --class debian --class gnu-linux --class gnu --class os {
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set 4c65d502-1c51-4516-a820-611faef98270
echo 'Loading Linux 2.6.8 ...'
linux /boot/vmlinuz-2.6.8 root=/dev/hda1 ro quiet
}
### 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/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 $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###
*********************** END /boot/grub/grub.cfg
-- System Information:
Debian Release: 6.0
APT prefers stable
APT policy: (500, 'stable')
Architecture: i386 (i686)
Kernel: Linux 2.6.32-5-686 (SMP w/1 CPU core)
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/bash
Versions of packages grub2 depends on:
ii grub-pc 1.98+20100804-14 GRand Unified Bootloader, version
grub2 recommends no packages.
grub2 suggests no packages.
-- no debconf information
More information about the Pkg-grub-devel
mailing list