diff -Nur grub2-1.95+20070507.old/conf/i386-efi.rmk grub2-1.95+20070507/conf/i386-efi.rmk --- grub2-1.95+20070507.old/conf/i386-efi.rmk 2007-05-15 19:45:29.000000000 +0200 +++ grub2-1.95+20070507/conf/i386-efi.rmk 2007-05-15 19:45:48.000000000 +0200 @@ -6,7 +6,7 @@ # Utilities. bin_UTILITIES = grub-mkimage -#sbin_UTILITIES = grub-setup grub-mkdevicemap grub-probe +sbin_UTILITIES = grub-mkdevicemap grub-probe #ifeq ($(enable_grub_emu), yes) #sbin_UTILITIES += grub-emu #endif @@ -24,15 +24,16 @@ # kern/fs.c kern/env.c fs/fshelp.c # For grub-mkdevicemap. -#grub_mkdevicemap_SOURCES = util/i386/pc/grub-mkdevicemap.c util/misc.c +grub_mkdevicemap_SOURCES = util/i386/pc/grub-mkdevicemap.c util/misc.c # For grub-probe. -#grub_probe_SOURCES = util/i386/pc/grub-probe.c \ -# util/i386/pc/biosdisk.c util/misc.c util/i386/pc/getroot.c \ -# kern/device.c kern/disk.c kern/err.c kern/misc.c fs/fat.c \ -# fs/ext2.c kern/parser.c kern/partition.c partmap/pc.c fs/ufs.c \ -# fs/minix.c fs/hfs.c fs/jfs.c kern/fs.c kern/env.c fs/fshelp.c \ -# fs/xfs.c fs/affs.c fs/sfs.c fs/hfsplus.c +grub_probe_SOURCES = util/i386/pc/grub-probe.c \ + util/i386/pc/biosdisk.c util/misc.c util/i386/pc/getroot.c \ + kern/device.c kern/disk.c kern/err.c kern/misc.c fs/fat.c \ + fs/ext2.c kern/parser.c kern/partition.c partmap/pc.c \ + partmap/gpt.c fs/ufs.c fs/minix.c fs/hfs.c fs/jfs.c kern/fs.c \ + kern/env.c fs/fshelp.c fs/xfs.c fs/affs.c fs/sfs.c fs/hfsplus.c \ + disk/lvm.c disk/raid.c # For grub-emu. grub_emu_DEPENDENCIES = grub_script.tab.c grub_script.tab.h \ @@ -63,10 +64,10 @@ grub_emu_LDFLAGS = $(LIBCURSES) # Scripts. -#sbin_SCRIPTS = grub-install +sbin_SCRIPTS = grub-install # For grub-install. -#grub_install_SOURCES = util/efi/pc/grub-install.in +grub_install_SOURCES = util/i386/efi/grub-install.in # Modules. pkgdata_MODULES = kernel.mod normal.mod _chain.mod chain.mod \ diff -Nur grub2-1.95+20070507.old/util/i386/efi/grub-install.in grub2-1.95+20070507/util/i386/efi/grub-install.in --- grub2-1.95+20070507.old/util/i386/efi/grub-install.in 1970-01-01 01:00:00.000000000 +0100 +++ grub2-1.95+20070507/util/i386/efi/grub-install.in 2007-05-15 19:45:40.000000000 +0200 @@ -0,0 +1,212 @@ +#! /bin/sh + +# Install GRUB on your EFI partition. +# Copyright (C) 1999,2000,2001,2002,2003,2004,2005,2006 Free Software Foundation, Inc. +# +# This file 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 2 of the License, or +# (at your option) any later version. +# +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St - Suite 330, Boston, MA 02110, USA. + +# Initialize some variables. +transform="@program_transform_name@" + address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ +pkglibdir=${libdir}/`echo ${PACKAGE_TARNAME}/${target_cpu}-${platform} | sed ${transform}` + +grub_mkimage=${bindir}/`echo grub-mkimage | sed ${transform}` +grub_mkdevicemap=${sbindir}/`echo grub-mkdevicemap | sed ${transform}` +grub_probe=${sbindir}/`echo grub-probe | 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 +} + +# Check the arguments. +for option in "$@"; do + case "$option" in + -h | --help) + usage + exit 0 ;; + -v | --version) + echo "grub-install (GNU GRUB ${PACKAGE_VERSION})" + exit 0 ;; + --modules=*) + modules=`echo "$option" | sed 's/--modules=//'` ;; + --root-directory=*) + rootdir=`echo "$option" | sed 's/--root-directory=//'` ;; + --grub-mkimage=*) + grub_mkimage=`echo "$option" | sed 's/--grub-mkimage=//'` ;; + --grub-mkdevicemap=*) + grub_mkdevicemap=`echo "$option" | sed 's/--grub-mkdevicemap=//'` ;; + --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. +test -d "$bootdir" || mkdir "$bootdir" || exit 1 +test -d "$grubdir" || mkdir "$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 + +# 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. +partmap_module=`$grub_probe --target=partmap --device-map=${device_map} ${grubdir}` +if test "x$partmap_module" = x -a "x$modules" = x; then + echo "Auto-detection of a partition map module failed." 1>&2 + echo "Please specify the module with the option \`--modules' explicitly." 1>&2 + exit 1 +fi + +# _chain is often useful +modules="$modules $fs_module $partmap_module _chain" + +$grub_mkimage --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 \`grub-install'." +echo + +cat $device_map + +# Bye. +exit 0 diff -Nur grub2-1.95+20070507.old/util/i386/pc/biosdisk.c grub2-1.95+20070507/util/i386/pc/biosdisk.c --- grub2-1.95+20070507.old/util/i386/pc/biosdisk.c 2007-05-15 19:45:19.000000000 +0200 +++ grub2-1.95+20070507/util/i386/pc/biosdisk.c 2007-05-15 19:45:40.000000000 +0200 @@ -18,7 +18,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#include +#include #include #include #include diff -Nur grub2-1.95+20070507.old/util/i386/pc/grub-probe.c grub2-1.95+20070507/util/i386/pc/grub-probe.c --- grub2-1.95+20070507.old/util/i386/pc/grub-probe.c 2007-05-15 19:45:19.000000000 +0200 +++ grub2-1.95+20070507/util/i386/pc/grub-probe.c 2007-05-15 19:45:40.000000000 +0200 @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include