2009-06-07 Felix Zielcke * util/grub.d/30_os-prober.in: Source ${libdir}/grub/grub-mkconfig_lib. Use prepare_grub_to_access_device to set the root device. diff --git a/util/grub.d/30_os-prober.in b/util/grub.d/30_os-prober.in index 7d4d17e..9a6dff4 100644 --- a/util/grub.d/30_os-prober.in +++ b/util/grub.d/30_os-prober.in @@ -1,7 +1,7 @@ #! /bin/sh -e -# update-grub helper script. -# Copyright (C) 2006,2007,2008 Free Software Foundation, Inc. +# grub-mkconfig helper script. +# Copyright (C) 2006,2007,2008,2009 Free Software Foundation, Inc. # # GRUB is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -16,6 +16,12 @@ # You should have received a copy of the GNU General Public License # along with GRUB. If not, see . address@hidden@ address@hidden@ address@hidden@ + +. ${libdir}/grub/grub-mkconfig_lib + if [ -z "`which os-prober 2> /dev/null`" -o -z "`which linux-boot-prober 2> /dev/null`" ] ; then # missing os-prober and/or linux-boot-prober exit 0 @@ -45,7 +51,15 @@ for OS in ${OSPROBED} ; do cat << EOF menuentry "${LONGNAME} (on ${DEVICE})" { - set root=${CHAINROOT} +EOF + prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/" + + if [ `echo ${CHAINROOT} | sed -e 's/,[0-9]*[a-z]*//g'` != "(hd0)" ] ; then + cat << EOF + drivemap -s (hd0) \$root +EOF + fi + cat << EOF chainloader +1 } EOF @@ -61,15 +75,15 @@ EOF LINITRD="`echo ${LINUX} | cut -d ':' -f 5`" LPARAMS="`echo ${LINUX} | cut -d ':' -f 6- | tr '^' ' '`" - LINUXROOT="`grub-probe --target=drive --device ${LBOOT} 2> /dev/null`" - if [ -z "${LLABEL}" ] ; then LLABEL="${LONGNAME}" fi cat << EOF menuentry "${LLABEL} (on ${DEVICE})" { - set root=${LINUXROOT} +EOF + prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/" + cat << EOF linux ${LKERNEL} ${LPARAMS} EOF if [ -n "${LINITRD}" ] ; then @@ -88,7 +102,9 @@ EOF OSXDISK=disk"`echo ${OSXROOT} | awk -F , '{ print $1 ; }' | sed 's/(hd//;'`"s"`echo ${OSXROOT} | awk -F , '{ print $2 ; }' | sed 's/)//;'`" cat << EOF menuentry "${LONGNAME} (on ${DEVICE})" { - set root=${OSXROOT} +EOF + prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/" + cat << EOF insmod vbe do_resume=0 if [ /var/vm/sleepimage -nt10 / ]; then