diff --git a/Makefile.util.def b/Makefile.util.def
index 0beae52ce..532ff65b7 100644
--- a/Makefile.util.def
+++ b/Makefile.util.def
@@ -345,17 +345,7 @@ script = {
installdir = sbin;
name = grub-install;
- mips = util/grub-install.in;
- i386_pc = util/grub-install.in;
- i386_qemu = util/grub-install.in;
- i386_coreboot = util/grub-install.in;
- i386_multiboot = util/grub-install.in;
- sparc64_ieee1275 = util/grub-install.in;
- i386_ieee1275 = util/grub-install.in;
- powerpc_ieee1275 = util/grub-install.in;
-
- x86_efi = util/i386/efi/grub-install.in;
-
+ common = util/grub-install.in;
enable = noemu;
};
diff --git a/util/grub-install.in b/util/grub-install.in
index 7511522c7..910549d30 100644
--- a/util/grub-install.in
+++ b/util/grub-install.in
@@ -425,30 +425,35 @@ else
fi
case "${target_cpu}-${platform}" in
- i386-pc) mkimage_target=i386-pc ;;
sparc64-ieee1275) mkimage_target=sparc64-ieee1275-raw ;;
mips-yeeloong) mkimage_target=mipsel-yeeloong-elf ;;
- i386-coreboot) mkimage_target=i386-coreboot ;;
- i386-multiboot) mkimage_target=i386-multiboot ;;
- i386-qemu) mkimage_target=i386-multiboot ;;
- i386-ieee1275) mkimage_target=i386-ieee1275 ;;
- powerpc-ieee1275) mkimage_target=powerpc-ieee1275 ;;
- *) echo "Unknown platform"; exit 1 ;;
+ *) mkimage_target="${target_cpu}-${platform}" ;;
esac
-$grub_mkimage ${config_opt} -O ${mkimage_target} --output=${grubdir}/core.img --prefix=${prefix_drive}${relative_grubdir} $modules || exit 1
+case "${target_cpu}-${platform}" in
+ i386-efi | x86_64-efi) imgext=efi ;;
+ mips-yeeloong | i386-coreboot | i386-multiboot | i386-ieee1275 \
+ | powerpc-ieeee1275) imgext=elf ;;
+ *) imgext=img ;;
+esac
-# Copy to traditional location for compatibility
+
+$grub_mkimage ${config_opt} -O ${mkimage_target} --output=${grubdir}/core.${imgext} --prefix=${prefix_drive}${relative_grubdir} $modules || exit 1
+
+# Backward-compatibility kludges
if [ "${target_cpu}-${platform}" = "mips-yeeloong" ]; then
- cp ${grubdir}/core.img /boot/grub.elf
+ cp ${grubdir}/core.${imgext} /boot/grub.elf
elif [ "${target_cpu}-${platform}" = "i386-ieee1275" ] || [ "${target_cpu}-${platform}" = "powerpc-ieee1275" ]; then
- cp ${grubdir}/core.img /boot/grub
+ cp ${grubdir}/core.${imgext} /boot/grub
+elif [ "${target_cpu}-${platform}" = "i386-efi" ] || [ "${target_cpu}-${platform}" = "x86_64-efi" ]; then
+ $grub_mkimage ${config_opt} -O ${mkimage_target} --output=${grubdir}/grub.efi --prefix="" $modules || exit 1
fi
+# Perform the platform-dependent install
if [ "${target_cpu}-${platform}" = "i386-pc" ] || [ "${target_cpu}-${platform}" = "sparc64-ieee1275" ] ; then
# Now perform the installation.
- $grub_setup ${setup_verbose} ${setup_force} --directory=${grubdir} --device-map=${device_map} \
- ${install_device} || exit 1
+ $grub_setup ${setup_verbose} ${setup_force} --directory=${grubdir} \
+ --device-map=${device_map} ${install_device} || exit 1
elif [ "${target_cpu}-${platform}" = "i386-ieee1275" ] || [ "${target_cpu}-${platform}" = "powerpc-ieee1275" ]; then
if [ x"$update_nvram" = xyes ]; then
set $ofpathname dummy
@@ -475,7 +480,7 @@ elif [ "${target_cpu}-${platform}" = "i386-ieee1275" ] || [ "${target_cpu}-${pla
}
# Point boot-device at the new grub install
- boot_device="$ofpath:$partno,"`grub-mkrelpath ${grubdir}/core.img | sed 's,/,\\,g'`
+ boot_device="$ofpath:$partno,"`grub-mkrelpath ${grubdir}/core.${imgext} | sed 's,/,\\,g'`
"$nvsetenv" boot-device "$boot_device" || {
echo "$nvsetenv failed."
echo "You will have to set boot-device manually. At the Open Firmware prompt, type:"
diff --git a/util/i386/efi/grub-install.in b/util/i386/efi/grub-install.in
deleted file mode 100644
index d8554a328..000000000
--- a/util/i386/efi/grub-install.in
+++ /dev/null
@@ -1,261 +0,0 @@
-#! /bin/sh
-
-# Install GRUB on your EFI partition.
-# Copyright (C) 1999,2000,2001,2002,2003,2004,2005,2006,2007,2008 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 .
-
-# Initialize some variables.
-transform="@program_transform_name@"
-
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-sbindir=@sbindir@
-bindir=@bindir@
-libdir=@libdir@
-PACKAGE_NAME=@PACKAGE_NAME@
-PACKAGE_TARNAME=@PACKAGE_TARNAME@
-PACKAGE_VERSION=@PACKAGE_VERSION@
-target_cpu=@target_cpu@
-platform=@platform@
-host_os=@host_os@
-pkglibdir=${libdir}/`echo ${PACKAGE_TARNAME}/${target_cpu}-${platform} | sed ${transform}`
-localedir=@datadir@/locale
-
-self=`basename $0`
-
-grub_mkimage=${bindir}/`echo grub-mkimage | sed ${transform}`
-grub_mkdevicemap=${sbindir}/`echo grub-mkdevicemap | sed ${transform}`
-grub_probe=${sbindir}/`echo grub-probe | sed ${transform}`
-grub_editenv=${bindir}/`echo grub-editenv | sed ${transform}`
-rootdir=
-grub_prefix=`echo /boot/grub | sed ${transform}`
-modules=
-
-no_floppy=
-force_lba=
-recheck=no
-debug=no
-
-# Usage: usage
-# Print the usage.
-usage () {
- cat <.
-EOF
-}
-
-argument () {
- opt=$1
- shift
-
- if test $# -eq 0; then
- echo "$0: option requires an argument -- '$opt'" 1>&2
- exit 1
- fi
- echo $1
-}
-
-# Check the arguments.
-while test $# -gt 0
-do
- option=$1
- shift
-
- case "$option" in
- -h | --help)
- usage
- exit 0 ;;
- -v | --version)
- echo "$self (${PACKAGE_NAME}) ${PACKAGE_VERSION}"
- exit 0 ;;
-
- --modules)
- modules=`argument $option "$@"`; shift ;;
- --modules=*)
- modules=`echo "$option" | sed 's/--modules=//'` ;;
-
- --root-directory)
- rootdir=`argument $option "$@"`; shift ;;
- --root-directory=*)
- rootdir=`echo "$option" | sed 's/--root-directory=//'` ;;
-
- --grub-mkimage)
- grub_mkimage=`argument $option "$@"`; shift ;;
- --grub-mkimage=*)
- grub_mkimage=`echo "$option" | sed 's/--grub-mkimage=//'` ;;
-
- --grub-mkdevicemap)
- grub_mkdevicemap=`argument $option "$@"`; shift ;;
- --grub-mkdevicemap=*)
- grub_mkdevicemap=`echo "$option" | sed 's/--grub-mkdevicemap=//'` ;;
-
- --grub-probe)
- grub_probe=`argument $option "$@"`; shift ;;
- --grub-probe=*)
- grub_probe=`echo "$option" | sed 's/--grub-probe=//'` ;;
-
- --no-floppy)
- no_floppy="--no-floppy" ;;
- --recheck)
- recheck=yes ;;
- # This is an undocumented feature...
- --debug)
- debug=yes ;;
- *)
- echo "Unrecognized option \`$option'" 1>&2
- usage
- exit 1
- ;;
- esac
-done
-
-# If the debugging feature is enabled, print commands.
-if test $debug = yes; then
- set -x
-fi
-
-# Initialize these directories here, since ROOTDIR was initialized.
-case "$host_os" in
-netbsd* | openbsd*)
- # Because /boot is used for the boot block in NetBSD and OpenBSD, use /grub
- # instead of /boot/grub.
- grub_prefix=`echo /grub | sed ${transform}`
- bootdir=${rootdir}
- ;;
-*)
- # Use /boot/grub by default.
- bootdir=${rootdir}/boot
- ;;
-esac
-
-grubdir=${bootdir}/`echo grub | sed ${transform}`
-device_map=${grubdir}/device.map
-
-# Check if GRUB is installed.
-set $grub_mkimage dummy
-if test -f "$1"; then
- :
-else
- echo "$1: Not found." 1>&2
- exit 1
-fi
-
-set $grub_mkdevicemap dummy
-if test -f "$1"; then
- :
-else
- echo "$1: Not found." 1>&2
- exit 1
-fi
-
-# Create the GRUB directory if it is not present.
-mkdir -p "$grubdir" || exit 1
-
-# If --recheck is specified, remove the device map, if present.
-if test $recheck = yes; then
- rm -f $device_map
-fi
-
-# Create the device map file if it is not present.
-if test -f "$device_map"; then
- :
-else
- # Create a safe temporary file.
- test -n "$mklog" && log_file=`$mklog`
-
- $grub_mkdevicemap --device-map=$device_map $no_floppy || exit 1
-fi
-
-# Make sure that there is no duplicated entry.
-tmp=`sed -n '/^([fh]d[0-9]*)/s/\(^(.*)\).*/\1/p' $device_map \
- | sort | uniq -d | sed -n 1p`
-if test -n "$tmp"; then
- echo "The drive $tmp is defined multiple times in the device map $device_map" 1>&2
- exit 1
-fi
-
-# Copy the GRUB images to the GRUB directory.
-for file in ${grubdir}/*.mod ${grubdir}/*.lst; do
- if test -f $file && [ "`basename $file`" != menu.lst ]; then
- rm -f $file || exit 1
- fi
-done
-for file in ${pkglibdir}/*.mod ${pkglibdir}/*.lst; do
- cp -f $file ${grubdir} || exit 1
-done
-
-# Copy gettext files
-mkdir -p ${grubdir}/locale/
-for dir in ${localedir}/*; do
- if test -f "$dir/LC_MESSAGES/grub.mo"; then
- cp -f "$dir/LC_MESSAGES/grub.mo" "${grubdir}/locale/${dir##*/}.mo"
- fi
-done
-
-if ! test -f ${grubdir}/grubenv; then
- $grub_editenv ${grubdir}/grubenv create
-fi
-
-# Create the core image. First, auto-detect the filesystem module.
-fs_module=`$grub_probe --target=fs --device-map=${device_map} ${grubdir}`
-if test "x$fs_module" = xfat; then :; else
- echo "${grubdir} doesn't look like an EFI partition." 1>&2
- exit 1
-fi
-
-# Then the partition map module. In order to support partition-less media,
-# this command is allowed to fail (--target=fs already grants us that the
-# filesystem will be accessible).
-partmap_module=
-for x in `$grub_probe --target=partmap --device-map=${device_map} ${grubdir} 2> /dev/null`; do
- partmap_module="$partmap_module part_$x";
-done
-
-# Device abstraction module, if any (lvm, raid).
-devabstraction_module=`$grub_probe --target=abstraction --device-map=${device_map} ${grubdir}`
-
-# The order in this list is critical. Be careful when modifying it.
-modules="$modules $fs_module $partmap_module $devabstraction_module"
-
-$grub_mkimage -p "" -O ${target_cpu}-efi --output=${grubdir}/grub.efi $modules || exit 1
-
-# Prompt the user to check if the device map is correct.
-echo "Installation finished. No error reported."
-echo "This is the contents of the device map $device_map."
-echo "Check if this is correct or not. If any of the lines is incorrect,"
-echo "fix it and re-run the script \`$self'."
-echo
-
-cat $device_map
-
-# Bye.
-exit 0