--- /dev/null
+--- grub-0.95/util/grub-install.in.md2 2005-01-03 14:49:18.133866107 -0500
++++ grub-0.95/util/grub-install.in 2005-01-03 16:35:44.923732271 -0500
+@@ -35,6 +35,7 @@
+ rootdir=
+ grub_prefix=/boot/grub
+
++install_drives=
+ install_device=
+ no_floppy=
+ force_lba=
+@@ -272,6 +273,30 @@
+ done
+ }
+
++
++dump_boot_block () {
++ sync
++ $grub_shell --batch $no_floppy --device-map=$device_map <<EOF >$log_file
++dump ${root_drive}${tmp} ${img_file}
++quit
++EOF
++}
++
++
++install_boot_block () {
++ # Before all invocations of the grub shell, call sync to make sure
++ # the raw device is in sync with any bufferring in filesystems.
++ sync
++
++ # Now perform the installation.
++ $grub_shell --batch $no_floppy --device-map=$device_map <<EOF >>$log_file
++root $1
++setup $force_lba --stage2=$grubdir/stage2 --prefix=$grub_prefix $2
++quit
++EOF
++}
++
++
+ # Check the arguments.
+ for option in "$@"; do
+ case "$option" in
+@@ -416,28 +441,32 @@
+ # Check for INSTALL_DEVICE.
+ case "$install_device" in
+ /dev/*)
+- # If we are running md on a Linux box, just use the first physical device
+- # at this point.
+ install_device=`resolve_symlink "$install_device"`
+- install_device=`find_real_devs $install_device | awk '{print $1}'`
+-
+- install_drive=`convert "$install_device"`
+- # I don't know why, but some shells wouldn't die if exit is
+- # called in a function.
+- if test "x$install_drive" = x; then
++ for install_drive in `find_real_devs $install_device` ; do
++ install_drive=`convert $install_drive`
++ if [ "x$install_drive" = "x" ]; then
++ exit 1
++ fi
++ install_drives="${install_drives} ${install_drive}"
++ done
++ unset install_drive
++
++ if test "x$install_drives" = x ; then
+ exit 1
+ fi ;;
+ \([hf]d[0-9]*\))
+- install_drive="$install_device" ;;
++ install_drives="$install_device" ;;
+ [hf]d[0-9]*)
+ # The GRUB format with no parenthesis.
+- install_drive="($install_device)" ;;
++ install_drives="($install_device)" ;;
+ *)
+ echo "Format of install_device not recognized." 1>&2
+ usage
+ exit 1 ;;
+ esac
+
++unset install_device
++
+ # Get the root drive.
+ root_device=`find_device ${rootdir}`
+ bootdir_device=`find_device ${bootdir}`
+@@ -465,41 +494,39 @@
+ test -n "$mkimg" && img_file=`$mkimg`
+ test -n "$mklog" && log_file=`$mklog`
+
+-for real_device in `find_real_devs $root_device`; do
+- # Convert the root deviceto a GRUB drive.
+- root_drive=`convert "$real_device"`
+- if [ "x$root_drive" = x ]; then
+- exit 1
+- fi
++# There's not a real root device, so just pick the first
++if is_raid1_device $root_device ; then
++ root_device=`find_real_devs $root_device | awk '{print $1}'`
++fi
+
+- for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do
+- count=5
+- tmp=`echo $file | sed "s|^${grubdir}|${grub_prefix}|"`
+- while test $count -gt 0; do
+- sync
+- $grub_shell --batch $no_floppy --device-map=$device_map \
+- <<EOF >$log_file
+-dump ${root_drive}${tmp} ${img_file}
+-quit
+-EOF
+- if grep "Error [0-9]*: " $log_file >/dev/null; then
+- :
+- elif cmp $file $img_file >/dev/null; then
+- break
+- fi
+- sleep 1
+- count=`expr $count - 1`
+- done
+- if test $count -eq 0; then
+- echo "The file $file not read correctly." 1>&2
+- exit 1
+- fi
+- done
++# Convert the root deviceto a GRUB drive.
++root_drive=`convert "$root_device"`
++if [ "x$root_drive" = x ]; then
++ exit 1
++fi
+
+- rm -f $img_file
+- rm -f $log_file
++for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do
++ count=5
++ tmp=`echo $file | sed "s|^${grubdir}|${grub_prefix}|"`
++ while test $count -gt 0; do
++ dump_boot_block $root_drive $img_file
++ if grep "Error [0-9]*: " $log_file >/dev/null; then
++ :
++ elif cmp $file $img_file >/dev/null; then
++ break
++ fi
++ sleep 1
++ count=`expr $count - 1`
++ done
++ if test $count -eq 0; then
++ echo "The file $file not read correctly." 1>&2
++ exit 1
++ fi
+ done
+
++rm -f $img_file
++rm -f $log_file
++
+ if ! test -e ${grubdir}/grub.conf ; then
+ test -e ${grubdir}/menu.lst && ln -s ./menu.lst ${grubdir}/grub.conf
+ fi
+@@ -507,24 +534,13 @@
+ # Create a safe temporary file.
+ test -n "$mklog" && log_file=`$mklog`
+
+-for real_device in `find_real_devs $root_device`; do
++for install_drive in $install_drives; do
+ # Convert the root deviceto a GRUB drive.
+- root_drive=`convert "$real_device"`
++ root_drive=`convert "$root_device"`
+ if [ "x$root_drive" = x ]; then
+ exit 1
+ fi
+-
+- # Before all invocations of the grub shell, call sync to make sure
+- # the raw device is in sync with any bufferring in filesystems.
+- sync
+-
+- # Now perform the installation.
+- $grub_shell --batch $no_floppy --device-map=$device_map <<EOF >>$log_file
+-root $root_drive
+-setup $force_lba --stage2=$grubdir/stage2 --prefix=$grub_prefix $root_drive
+-quit
+-EOF
+-
++ install_boot_block $root_drive $install_drive
+ done
+
+ if grep "Error [0-9]*: " $log_file >/dev/null ; then