tag 489006 patch thanks On Thu, 18 Jun 2009, Raphael Hertzog wrote: > I would suggest to force install grub-pc when boot partition is on RAID > and replace (hd0) by (md0) for installation in MBR. Maybe we need a > supplementary check that ensures that (hd0) is part of (md0). > > I might try to come up with a patch.
Here's a (raw) patch. I quickly tested it and it seems to work. I do not check if (hd0) is part of (md0) however... you might want to avoid entirely the problem by installing both to (hd0) and (md0). The call to grub-mkdevicemap is needed otherwise grub-probe doesn't work. Cheers, -- Raphaël Hertzog Contribuez à Debian et gagnez un cahier de l'admin Debian Lenny : http://www.ouaza.com/wp/2009/03/02/contribuer-a-debian-gagner-un-livre/
diff -Nru grub-installer-1.36/grub-installer grub-installer-1.36slis1/grub-installer --- grub-installer-1.36/grub-installer 2009-01-23 02:51:34.000000000 +0100 +++ grub-installer-1.36slis1/grub-installer 2009-06-22 12:45:42.000000000 +0200 @@ -253,9 +253,13 @@ prefix=$(echo "$bootfs" | \ sed 's:\(/dev/\(cciss\|ida\)/c[0-9]d[0-9]\|/dev/mmcblk[0-9]\|/dev/[a-z]\+\).*:\1:') +boot_on_md="" case $prefix in /dev/md) disc_offered_devfs="$bootfs" + grub_package="grub-pc" + boot_on_md="1" + log "Boot partition $bootfs is on RAID device, use grub-pc and (mdX) device for MBR installation." ;; /dev/mapper) disc_offered_devfs="$bootfs" @@ -312,18 +316,18 @@ # Note: depends on partman-efi to load the efivars module! if [ -d /sys/firmware/efi ]; then # This point can't be reached (yet). See debian/isinstallable. - grub_package="grub-efi" + grub_package=${grub_package:-grub-efi} else # On PC/BIOS, default to GRUB Legacy - grub_package="grub" + grub_package=${grub_package:-grub} fi ;; i386/*|amd64/*) # On PC/BIOS, default to GRUB Legacy - grub_package="grub" + grub_package=${grub_package:-grub} ;; powerpc/*) - grub_package="grub-of" + grub_package=${grub_package:-grub-of} ;; esac @@ -490,7 +494,14 @@ fi db_get $q if [ "$RET" = true ]; then - bootdev="(hd0)" + if [ -n "$boot_on_md" ]; then + if [ ! -e $ROOT/boot/grub/device.map ]; then + $chroot $ROOT grub-mkdevicemap + fi + bootdev=$($chroot $ROOT grub-probe -t drive -d $bootfs) + else + bootdev="(hd0)" + fi break else # Exit to menu if /boot is on SATA RAID/multipath; we