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