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