#! /bin/sh -e
# 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
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GRUB is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GRUB. If not, see .
# Modified by Hedayat Vatankhah for grub 1, merely as an example
# This script detects other installed OSes
prefix=/usr
exec_prefix=/usr
libdir=/usr/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
fi
set_root_entry()
{
HDD=$(echo $1 | sed "s|\([^0-9]*\).*|\1|")
PARTNUM=$(echo $1 | sed "s|[^0-9]*\(.*\)|\1|")
GRUB_HDD=$(grep $HDD /boot/grub/device.map | sed "s|(\(.*\)).*|\1|")
printf "\t$2 ($GRUB_HDD,$((PARTNUM-1)))\n"
}
OSPROBED="`os-prober | tr ' ' '^' | paste -s -d ' '`"
if [ -z "${OSPROBED}" ] ; then
# empty os-prober output, nothing doing
exit 0
fi
for OS in ${OSPROBED} ; do
DEVICE="`echo ${OS} | cut -d ':' -f 1`"
LONGNAME="`echo ${OS} | cut -d ':' -f 2 | tr '^' ' '`"
LABEL="`echo ${OS} | cut -d ':' -f 3 | tr '^' ' '`"
BOOT="`echo ${OS} | cut -d ':' -f 4`"
if [ -z "${LONGNAME}" ] ; then
LONGNAME="${LABEL}"
fi
echo "Found ${LONGNAME} on ${DEVICE}" >&2
case ${BOOT} in
chain)
cat << EOF
title ${LONGNAME} (on ${DEVICE})
EOF
set_root_entry ${DEVICE} rootnoverify
case ${LONGNAME} in
Windows\ Vista*|Windows\ 7*)
;;
*)
# cat << EOF
# drivemap -s (hd0) \${root}
#EOF
;;
esac
cat <&2
;;
esac
done