Bug#478254: grub-pc: grub-probe and grub don't agree on (hd#) numbering

yzhh yezonghui at gmail.com
Mon Apr 28 11:35:52 UTC 2008


Package: grub-pc
Version: 1.96+20080413-1
Severity: critical
Justification: breaks the whole system


As shown in the /proc/mounts bellow, my machine has 2 hard disks: one
SATA disk /dev/sda and one IDE disk /dev/hda.

While update-grub generates (hd1) for /dev/sda and (hd0) for /dev/hda
grub.cfg, grub will only work when I manually exchange (hd1) and (hd0) 
in that file.  And the names (hd#) is actually given by the output of
grub-probe.

So I have the conclusion that grub-probe and grub use different criteria
to assign numbers to hard disks, which results in conflict ordering of
(hd#) numbering for my machine.

My hardware: Intel E2140 on Gigabyte 945G (I don't remember very clear
whether it is 945G or 945). In the BIOS I have to firstly set boot
ordering of harddisk/cdrom/floppy then set ordering of the 2 disks, and
grub respects this setting (sees the first one listed here as hd0). At
the time of reporting the SATA disk (/dev/sda) is set as the first
one.

PS, the grub.cfg included here is one that I have made the exchange of
(hd0) and (hd1). Exchange them back and you get the generated version.

-- Package-specific info:

*********************** BEGIN /proc/mounts
/dev/sda5 / ext3 rw,data=ordered 0 0
/dev/sda5 /dev/.static/dev ext3 rw,data=ordered 0 0
/dev/hda6 /mnt/winE vfat rw,fmask=0000,dmask=0000,codepage=cp437,iocharset=cp936 0 0
/dev/hda7 /mnt/oldroot ext3 rw,data=ordered 0 0
/dev/sda1 /mnt/sda1 vfat rw,fmask=0000,dmask=0000,codepage=cp437,iocharset=cp936 0 0
/dev/sda6 /home ext3 rw,data=ordered 0 0
/dev/sda7 /mnt/sda7 vfat rw,fmask=0000,dmask=0000,codepage=cp437,iocharset=cp936 0 0
*********************** END /proc/mounts

*********************** BEGIN /boot/grub/device.map
(hd0)	/dev/hda
(hd1)	/dev/sda
*********************** END /boot/grub/device.map

*********************** BEGIN /boot/grub/grub.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/update-grub using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
set default=0
set timeout=5
set root=(hd0,5)
if font (hd0,5)/usr/share/grub/unicode.pff ; then
  set gfxmode=640x480
  insmod gfxterm
  insmod vbe
  terminal gfxterm
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_hurd ###
### END /etc/grub.d/10_hurd ###

### BEGIN /etc/grub.d/10_linux ###
menuentry "Debian GNU/Linux, linux 2.6.24-1-686" {
	linux	(hd0,5)/boot/vmlinuz-2.6.24-1-686 root=/dev/sda5 ro 
	initrd	(hd0,5)/boot/initrd.img-2.6.24-1-686
}
menuentry "Debian GNU/Linux, linux 2.6.24-1-686 (single-user mode)" {
	linux	(hd0,5)/boot/vmlinuz-2.6.24-1-686 root=/dev/sda5 ro single 
	initrd	(hd0,5)/boot/initrd.img-2.6.24-1-686
}
menuentry "Debian GNU/Linux, linux 2.6.22-3-686" {
	linux	(hd0,5)/boot/vmlinuz-2.6.22-3-686 root=/dev/sda5 ro 
	initrd	(hd0,5)/boot/initrd.img-2.6.22-3-686
}
menuentry "Debian GNU/Linux, linux 2.6.22-3-686 (single-user mode)" {
	linux	(hd0,5)/boot/vmlinuz-2.6.22-3-686 root=/dev/sda5 ro single 
	initrd	(hd0,5)/boot/initrd.img-2.6.22-3-686
}
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Microsoft Windows XP Professional (on /dev/hda1)" {
	set root=(hd1,1)
	chainloader +1
}
menuentry "Debian GNU/Linux, kernel 2.6.22-2-686 (on /dev/hda7)" {
	set root=(hd1,7)
	linux /boot/vmlinuz-2.6.22-2-686 root=/dev/hda7 ro
	initrd /boot/initrd.img-2.6.22-2-686
}
menuentry "Debian GNU/Linux, kernel 2.6.22-2-686 (recovery mode) (on /dev/hda7)" {
	set root=(hd1,7)
	linux /boot/vmlinuz-2.6.22-2-686 root=/dev/hda7 ro single
	initrd /boot/initrd.img-2.6.22-2-686
}
menuentry "Debian GNU/Linux, kernel 2.6.21-2-686 (on /dev/hda7)" {
	set root=(hd1,7)
	linux /boot/vmlinuz-2.6.21-2-686 root=/dev/hda7 ro
	initrd /boot/initrd.img-2.6.21-2-686
}
menuentry "Debian GNU/Linux, kernel 2.6.21-2-686 (recovery mode) (on /dev/hda7)" {
	set root=(hd1,7)
	linux /boot/vmlinuz-2.6.21-2-686 root=/dev/hda7 ro single
	initrd /boot/initrd.img-2.6.21-2-686
}
menuentry "Debian GNU/Linux, kernel 2.6.21-2-686 (resume from disk) (on /dev/hda7)" {
	set root=(hd1,7)
	linux /boot/vmlinuz-2.6.21-2-686 root=/dev/hda7 ro resume=/dev/hda8
	initrd /boot/initrd.img-2.6.21-2-686
}
### END /etc/grub.d/30_os-prober ###
*********************** END /boot/grub/grub.cfg

-- System Information:
Debian Release: lenny/sid
  APT prefers testing
  APT policy: (1100, 'testing')
Architecture: i386 (i686)

Kernel: Linux 2.6.24-1-686 (SMP w/2 CPU cores)
Locale: LANG=zh_CN, LC_CTYPE=zh_CN (charmap=GB2312)
Shell: /bin/sh linked to /bin/bash

Versions of packages grub-pc depends on:
ii  debconf [debconf-2.0]    1.5.20          Debian configuration management sy
ii  grub-common              1.96+20080413-1 GRand Unified Bootloader, version 
ii  libc6                    2.7-10          GNU C Library: Shared libraries
ii  liblzo1                  1.08-3          data compression library (old vers
ii  libncurses5              5.6+20080308-1  Shared libraries for terminal hand

Versions of packages grub-pc recommends:
ii  os-prober                     1.24       utility to detect other OSes on a 

-- debconf information:
* grub-pc/linux_cmdline:
* grub-pc/chainload_from_menu.lst: true





More information about the Pkg-grub-devel mailing list