Bug#478547: grub-install raid1 ext3 failure - regression from Etch

2008-04-30 Thread Robert Millan
On Tue, Apr 29, 2008 at 11:04:21AM -0700, Mike Bird wrote:
 Package: grub
 Version: 0.97-37
 Severity: critical
 Justification: breaks the whole system
 
 
 grub-install '(hd0)' reports The file /boot/grub/stage1 not read
 correctly.
 
 The problem occurs when grub-install is using dump for some kind
 of verification.  The log is written to /tmp file with a random
 name:
 
 # cat grubJM5Q31 
 
 
 GNU GRUB  version 0.97  (640K lower / 3072K upper memory)
 
[ Minimal BASH-like line editing is supported.   For
  the   first   word,  TAB  lists  possible  command
  completions.  Anywhere else TAB lists the possible
  completions of a device/filename. ]
 grub dump (md0)/grub/stage1 /tmp/grubrakRL1
 
 Error 23: Error while parsing number

Please could you test the attached patch?

-- 
Robert Millan

GPLv2 I know my rights; I want my phone call!
DRM What use is a phone call… if you are unable to speak?
(as seen on /.)
--- util/grub-install	2008-04-26 19:38:51.0 +0200
+++ /tmp/grub-install	2008-04-30 12:37:34.0 +0200
@@ -125,11 +125,57 @@
 		sed -n 1p
 }
 
+## borrowed from update-grub
+# Usage: convert_raid1 os_device
+# Checks if os_device is a software raid1.
+# If so, converts to first physical device in array.
+convert_raid1 ()
+{
+case $1 in
+/dev/md[0-9] | /dev/md/[0-9])
+: ;; # Continue
+*)
+return 1 ;;
+esac
+
+[ -x /sbin/mdadm ] || return 1
+
+# Check that the raid device is raid1
+raidlevel=$(mdadm -D -b $1 | grep ^ARRAY | \
+sed s/^.*level=// | cut -d  -f1)
+[ $raidlevel = raid1 ] || return 1
+
+# Take only the first device that makes up the raid
+raiddev=$(mdadm -D $1 | grep -A1 Number | grep dev \
+  | sed s/^.*\(\/dev\/.*\)$/\1/)
+[ -n $raiddev ] || return 1
+
+echo $raiddev
+return 0
+}
+
+## borrowed from update-grub (renamed from convert)
+# Usage: convert_nonraid os_device
+# Convert an OS device to the corresponding GRUB drive.
+convert_nonraid () {
+	if ! test -e ${device_map} ; then
+		echo quit | grub --batch --no-floppy --device-map=${device_map}  /dev/null
+	fi
+	GRUB_LEGACY_0_BASED_PARTITIONS=1 grub-probe --device-map=${device_map} -t drive -d $1
+}
+
+## borrowed from update-grub (renamed from convert_default)
 # Usage: convert os_device
 # Convert an OS device to the corresponding GRUB drive.
-# This part is OS-specific.
 convert () {
-	GRUB_LEGACY_0_BASED_PARTITIONS=1 grub-probe --device-map=${device_map} -t drive -d $1
+	# Check if device is software raid1 array
+	if tmp_dev=$(convert_raid1 $1 2/dev/null) ; then
+		: # Use device returned by convert_raid1
+	else
+		tmp_dev=$1
+	fi
+
+	convert_nonraid $tmp_dev
 }
 
 # Usage: resolve_symlink file


Bug#478547: grub-install raid1 ext3 failure - regression from Etch

2008-04-30 Thread Mike Bird
On Wed April 30 2008 03:38:29 Robert Millan wrote:
 Please could you test the attached patch?

The patched version of grub-install ran without errors on
the raid1 ext3 system and the system was was subsequently
rebooted successfully.

Thanks,

--Mike Bird




-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#478547: grub-install raid1 ext3 failure - regression from Etch

2008-04-30 Thread Mike Bird
On Wed April 30 2008 11:21:49 Mike Bird wrote:
 On Wed April 30 2008 03:38:29 Robert Millan wrote:
  Please could you test the attached patch?

 The patched version of grub-install ran without errors on
 the raid1 ext3 system and the system was was subsequently
 rebooted successfully.

Also confirmed on second raid1 ext3 system and on a non-RAID
ext3 system.

--Mike Bird



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#478547: grub-install raid1 ext3 failure - regression from Etch

2008-04-30 Thread Robert Millan
On Wed, Apr 30, 2008 at 11:21:49AM -0700, Mike Bird wrote:
 On Wed April 30 2008 03:38:29 Robert Millan wrote:
  Please could you test the attached patch?
 
 The patched version of grub-install ran without errors on
 the raid1 ext3 system and the system was was subsequently
 rebooted successfully.

Thank you.

-- 
Robert Millan

GPLv2 I know my rights; I want my phone call!
DRM What use is a phone call… if you are unable to speak?
(as seen on /.)



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#478547: grub-install raid1 ext3 failure - regression from Etch

2008-04-29 Thread Mike Bird
Package: grub
Version: 0.97-37
Severity: critical
Justification: breaks the whole system


grub-install '(hd0)' reports The file /boot/grub/stage1 not read
correctly.

The problem occurs when grub-install is using dump for some kind
of verification.  The log is written to /tmp file with a random
name:

# cat grubJM5Q31 


GNU GRUB  version 0.97  (640K lower / 3072K upper memory)

   [ Minimal BASH-like line editing is supported.   For
 the   first   word,  TAB  lists  possible  command
 completions.  Anywhere else TAB lists the possible
 completions of a device/filename. ]
grub dump (md0)/grub/stage1 /tmp/grubrakRL1

Error 23: Error while parsing number
grub quit

This is a regression from Etch.  In fact, simply copying
/usr/sbin/grub-install from Etch into another directory
and running it without replacing any other grub component
works.

This happens on a lot of systems but most people don't run
grub-install on a working system.  We have a policy of
always running grub-install after updating the grub package
so we see this problem sooner than most.

-- Package-specific info:

*** BEGIN /boot/grub/device.map
(fd0)   /dev/fd0
(hd0)   /dev/hde
(hd1)   /dev/hdg
*** END /boot/grub/device.map

*** BEGIN /proc/mounts
/dev/md1 / ext3 rw,errors=remount-ro,data=ordered 0 0
/dev/md1 /dev/.static/dev ext3 rw,errors=remount-ro,data=ordered 0 0
/dev/mapper/VG0-ACCT /store/ACCT ext3 rw,data=ordered 0 0
/dev/mapper/VG0-IMS++ /cache/IMS++ ext3 rw,data=ordered 0 0
/dev/mapper/VG0-JPG /cache/JPG ext3 rw,data=ordered 0 0
/dev/mapper/VG0-MP3 /store/MP3 ext3 rw,data=ordered 0 0
/dev/mapper/VG0-OLD /store/OLD ext3 rw,noatime,data=ordered 0 0
/dev/mapper/VG0-mpa--sf.yosemite.net.1 /BACKUP/mpa-sf.yosemite.net.1 ext3 
rw,noatime,data=ordered 0 0
/dev/mapper/VG0-mpa--sf.yosemite.net.2 /BACKUP/mpa-sf.yosemite.net.2 ext3 
rw,noatime,data=ordered 0 0
/dev/mapper/VG0-mpa--sf.yosemite.net.3 /BACKUP/mpa-sf.yosemite.net.3 ext3 
rw,noatime,data=ordered 0 0
/dev/md0 /boot ext3 rw,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=/dev/md1 ro panic=60

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

## 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

##