Bug#499176: update-grub fails after yet another hd/sd switch

Ben Hutchings ben at decadent.org.uk
Sat Sep 20 15:40:31 UTC 2008


Package: grub
Version: 0.97-47
Followup-For: Bug #499176

The latest kernel package switched my IDE driver and as a result my
boot drive is now hda, not sda (I thought everything was moving in
the opposite direction!).  So I changed my kopt line to use a volume
label instead of a device name, and ran update-grub, which failed
as previously reported.

Here's a trace:

$ sudo bash -x /usr/sbin/update-grub
+ set -e
++ uname -s
++ tr '[A-Z]' '[a-z]'
+ host_os=linux
++ find_grub_dir
++ echo -n 'Searching for GRUB installation directory ... '
Searching for GRUB installation directory ... ++ for d in /boot/grub /boot/boot/grub
++ '[' -d /boot/grub ']'
++ grub_dir=/boot/grub
++ break
++ '[' -z /boot/grub ']'
++ echo 'found: /boot/grub'
found: /boot/grub
++ echo /boot/grub
+ grub_dir=/boot/grub
+ device_map=/boot/grub/device.map
+ menu_file_basename=menu.lst
+ menu_file=/boot/grub/menu.lst
+ default_file_basename=default
+ default_file=/boot/grub/default
++ find_device /
++ test -e /boot/grub/device.map
++ grub-probe --device-map=/boot/grub/device.map -t device /
+ root_device=/dev/hda8
+ case ${root_device} in
++ find_device /boot
++ test -e /boot/grub/device.map
++ grub-probe --device-map=/boot/grub/device.map -t device /boot
+ boot_device=/dev/hda8
++ make_system_path_relative_to_its_root /boot
++ path=/boot
++ test -e /boot
++ :
+++ readlink -f /boot
++ path=/boot
++ :
++ test -d /boot
++ dir=/boot
+++ stat -c %d /boot
++ num=776
++ :
+++ readlink -f /boot/..
++ parent=/
+++ stat -c %d /
++ '[' x776 = x776 ']'
++ :
++ '[' x/boot = x/ ']'
++ dir=/
++ :
+++ readlink -f //..
++ parent=/
+++ stat -c %d /
++ '[' x776 = x776 ']'
++ :
++ '[' x/ = x/ ']'
++ break
++ '[' / = / ']'
++ dir=
++ echo /boot
++ sed -e 's,^,,g'
+ kernel_dir=/boot
++ grub-probe -t abstraction --device /dev/hda8
+ abstraction=
+ '[' '' = '' ']'
++ grub-probe --device-map=/boot/grub/device.map --device /dev/hda8 --target=fs_uuid
+ root_uuid=
+ linux_root_device=/dev/hda8
+ kopt='root=/dev/hda8 ro'
++ uname -s
++ sed -e s,GNU/,,g
+ title='Debian GNU/Linux'
+ updatedefaultentry=false
++ convert_default /dev/hda8
+++ convert_raid1 /dev/hda8
++ tmp_dev=
++ tmp_dev=/dev/hda8
++ convert /dev/hda8
++ test -e /boot/grub/device.map
++ GRUB_LEGACY_0_BASED_PARTITIONS=1
++ grub-probe --device-map=/boot/grub/device.map -t drive -d /dev/hda8
+ grub_root_device=

It does exit with exit code 1, but in the absence of an error message
this isn't obvious on an interactive session.  And really it should
recover from this by regenerating device.map.

Ben.

-- Package-specific info:

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

*********************** BEGIN /proc/mounts
/dev/disk/by-label/sid-root / ext3 rw,errors=remount-ro,data=ordered 0 0
*********************** END /proc/mounts

*********************** BEGIN /boot/grub/menu.lst
# menu.lst - See: grub(8), info grub, update-grub(8)
#            grub-install(8), grub-floppy(8),
#            grub-md5-crypt, /usr/share/doc/grub
#            and /usr/share/doc/grub-doc/.

## default num
# Set the default entry to the entry number NUM. Numbering starts from 0, and
# the entry number 0 is the default if the command is not used.
#
# You can specify 'saved' instead of a number. In this case, the default entry
# is the entry saved with the command 'savedefault'.
# WARNING: If you are using dmraid do not change this entry to 'saved' or your
# array will desync and will not let you boot your system.
default		0

## timeout sec
# Set a timeout, in SEC seconds, before automatically booting the default entry
# (normally the first entry defined).
timeout		5

# Pretty colours
color cyan/blue white/blue

### PASSWORD LINE REMOVED ###
# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line)  and entries protected by the
# command 'lock'
### PASSWORD LINE REMOVED ###
### PASSWORD LINE REMOVED ###
### PASSWORD LINE REMOVED ###

#
# examples
#
# title		Windows 95/98/NT/2000
# root		(hd0,0)
# makeactive
# chainloader	+1
#
# title		Linux
# root		(hd0,1)
# kernel	/vmlinuz root=/dev/hda2 ro
#

#
# Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST

### BEGIN AUTOMAGIC KERNELS LIST
## lines between the AUTOMAGIC KERNELS LIST markers will be modified
## by the debian update-grub script except for the default options below

## DO NOT UNCOMMENT THEM, Just edit them to your needs

## ## Start Default Options ##
## default kernel options
## default kernel options for automagic boot options
## If you want special options for specific kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.
## e.g. kopt=root=/dev/hda1 ro
##      kopt_2_6_8=root=/dev/hdc1 ro
##      kopt_2_6_8_2_686=root=/dev/hdc2 ro
# kopt=root=LABEL=sid-root ro

## default grub root device
## e.g. groot=(hd0,0)
# groot=(hd0,7)

## should update-grub create alternative automagic boot options
## e.g. alternative=true
##      alternative=false
# alternative=true

## should update-grub lock alternative automagic boot options
## e.g. lockalternative=true
##      lockalternative=false
# lockalternative=false

## additional options to use with the default boot option, but not with the
## alternatives
## e.g. defoptions=vga=791 resume=/dev/hda5
# defoptions=

## should update-grub lock old automagic boot options
## e.g. lockold=false
##      lockold=true
# lockold=false

## Xen hypervisor options to use with the default Xen boot option
# xenhopt=

## Xen Linux kernel options to use with the default Xen boot option
# xenkopt=console=tty0

## altoption boot targets option
## multiple altoptions lines are allowed
## e.g. altoptions=(extra menu suffix) extra boot options
##      altoptions=(single-user) single
# altoptions=(single-user mode) single

## controls how many kernels should be put into the menu.lst
## only counts the first occurence of a kernel, not the
## alternative kernel options
## e.g. howmany=all
##      howmany=7
# howmany=all

## should update-grub create memtest86 boot option
## e.g. memtest86=true
##      memtest86=false
# memtest86=true

## should update-grub adjust the value of the default booted system
## can be true or false
# updatedefaultentry=false

## should update-grub add savedefault to the default options
## can be true or false
# savedefault=false

## ## End Default Options ##

title		Debian GNU/Linux, kernel 2.6.26-1-686
root		(hd0,7)
kernel		/boot/vmlinuz-2.6.26-1-686 root=/dev/sda8 ro 
initrd		/boot/initrd.img-2.6.26-1-686

title		Debian GNU/Linux, kernel 2.6.26-1-686 (single-user mode)
root		(hd0,7)
kernel		/boot/vmlinuz-2.6.26-1-686 root=/dev/sda8 ro single
initrd		/boot/initrd.img-2.6.26-1-686

### END DEBIAN AUTOMAGIC KERNELS LIST

*********************** END /boot/grub/menu.lst

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

Kernel: Linux 2.6.26-1-686 (SMP w/1 CPU core)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages grub depends on:
ii  grub-common             1.96+20080724-10 GRand Unified Bootloader, version 
ii  libc6                   2.7-13           GNU C Library: Shared libraries
ii  libncurses5             5.6+20080913-1   shared libraries for terminal hand

grub recommends no packages.

Versions of packages grub suggests:
pn  grub-legacy-doc               <none>     (no description available)
pn  mdadm                         <none>     (no description available)
pn  multiboot-doc                 <none>     (no description available)

-- no debconf information





More information about the Pkg-grub-devel mailing list