[1931] Provide grub-install on coreboot.

Robert Millan <[email protected]>
Newsgroups gmane.comp.boot-loaders.grub.cvs
Message-ID <[email protected]>
Revision: 1931
          http://svn.sv.gnu.org/viewvc/?view=rev&root=grub&revision=1931
Author:   robertmh
Date:     2008-11-28 20:06:55 +0000 (Fri, 28 Nov 2008)

Log Message:
-----------
        Provide grub-install on coreboot.
        * conf/i386-coreboot.rmk (sbin_SCRIPTS): Add `grub-install'.
        (grub_install_SOURCES): New variable.
        * util/i386/pc/grub-install.in: Add a few condition checks to make it
        usable on coreboot.

Modified Paths:
--------------
    trunk/grub2/ChangeLog
    trunk/grub2/conf/i386-coreboot.mk
    trunk/grub2/conf/i386-coreboot.rmk
    trunk/grub2/util/i386/pc/grub-install.in

Modified: trunk/grub2/ChangeLog
===================================================================
--- trunk/grub2/ChangeLog	2008-11-28 19:56:19 UTC (rev 1930)
+++ trunk/grub2/ChangeLog	2008-11-28 20:06:55 UTC (rev 1931)
@@ -6,6 +6,12 @@
 	`kern/ieee1275/mmap.c'.
 	* include/grub/powerpc/ieee1275/memory.h: New file.
 
+	Provide grub-install on coreboot.
+	* conf/i386-coreboot.rmk (sbin_SCRIPTS): Add `grub-install'.
+	(grub_install_SOURCES): New variable.
+	* util/i386/pc/grub-install.in: Add a few condition checks to make it
+	usable on coreboot.
+
 2008-11-25  Felix Zielcke  <[email protected]>
 
 	* util/grub-fstest.c (grub_term_get_current_input): Change return type

Modified: trunk/grub2/conf/i386-coreboot.mk
===================================================================
--- trunk/grub2/conf/i386-coreboot.mk	2008-11-28 19:56:19 UTC (rev 1930)
+++ trunk/grub2/conf/i386-coreboot.mk	2008-11-28 20:06:55 UTC (rev 1931)
@@ -565,6 +565,15 @@
 
 grub_emu_LDFLAGS = $(LIBCURSES)
 
+sbin_SCRIPTS += grub-install
+grub_install_SOURCES = util/i386/pc/grub-install.in
+CLEANFILES += grub-install
+
+grub-install: util/i386/pc/grub-install.in $(util/i386/pc/grub-install.in_DEPENDENCIES) config.status
+	./config.status --file=grub-install:util/i386/pc/grub-install.in
+	chmod +x $@
+
+
 # Modules.
 pkglib_MODULES = _linux.mod linux.mod normal.mod	\
 	_multiboot.mod multiboot.mod aout.mod		\

Modified: trunk/grub2/conf/i386-coreboot.rmk
===================================================================
--- trunk/grub2/conf/i386-coreboot.rmk	2008-11-28 19:56:19 UTC (rev 1930)
+++ trunk/grub2/conf/i386-coreboot.rmk	2008-11-28 20:06:55 UTC (rev 1931)
@@ -90,6 +90,9 @@
 
 grub_emu_LDFLAGS = $(LIBCURSES)
 
+sbin_SCRIPTS += grub-install
+grub_install_SOURCES = util/i386/pc/grub-install.in
+
 # Modules.
 pkglib_MODULES = _linux.mod linux.mod normal.mod	\
 	_multiboot.mod multiboot.mod aout.mod		\

Modified: trunk/grub2/util/i386/pc/grub-install.in
===================================================================
--- trunk/grub2/util/i386/pc/grub-install.in	2008-11-28 19:56:19 UTC (rev 1930)
+++ trunk/grub2/util/i386/pc/grub-install.in	2008-11-28 20:06:55 UTC (rev 1931)
@@ -32,7 +32,11 @@
 pkglibdir=${libdir}/`echo ${PACKAGE_TARNAME}/${target_cpu}-${platform} | sed ${transform}`
 
 grub_setup=${sbindir}/`echo grub-setup | sed ${transform}`
-grub_mkimage=${bindir}/`echo grub-mkimage | sed ${transform}`
+if [ "${target_cpu}-${platform}" = "i386-pc" ] ; then
+    grub_mkimage=${bindir}/`echo grub-mkimage | sed ${transform}`
+else
+    grub_mkimage=${bindir}/`echo grub-mkelfimage | sed ${transform}`
+fi
 grub_mkdevicemap=${sbindir}/`echo grub-mkdevicemap | sed ${transform}`
 grub_probe=${sbindir}/`echo grub-probe | sed ${transform}`
 rootdir=
@@ -153,12 +157,14 @@
 grub_probe="${grub_probe} --device-map=${device_map}"
 
 # Check if GRUB is installed.
-set $grub_setup dummy
-if test -f "$1"; then
-    :
-else
-    echo "$1: Not found." 1>&2
-    exit 1
+if [ "${target_cpu}-${platform}" = "i386-pc" ] ; then
+    set $grub_setup dummy
+    if test -f "$1"; then
+        :
+    else
+        echo "$1: Not found." 1>&2
+        exit 1
+    fi
 fi
 
 set $grub_mkimage dummy
@@ -210,9 +216,14 @@
 	rm -f $file || exit 1
     fi
 done
-for file in ${pkglibdir}/*.mod ${pkglibdir}/*.lst ${pkglibdir}/*.img; do
+for file in ${pkglibdir}/*.mod ${pkglibdir}/*.lst; do
     cp -f $file ${grubdir} || exit 1
 done
+if [ "${target_cpu}-${platform}" = "i386-pc" ] ; then
+    for file in ${pkglibdir}/*.img; do
+        cp -f $file ${grubdir} || exit 1
+    done
+fi
 
 # Write device to a variable so we don't have to traverse /dev every time.
 grub_device=`$grub_probe --target=device ${grubdir}`
@@ -234,7 +245,12 @@
 devabstraction_module=`$grub_probe --target=abstraction --device ${grub_device}`
 
 # The order in this list is critical.  Be careful when modifying it.
-modules="$modules $fs_module $partmap_module biosdisk $devabstraction_module"
+if [ "${target_cpu}-${platform}" = "i386-pc" ] ; then
+    modules="$modules biosdisk"
+else
+    modules="$modules ata"
+fi
+modules="$modules $fs_module $partmap_module $devabstraction_module"
 
 prefix_drive=
 if [ "x${devabstraction_module}" = "x" ] ; then
@@ -248,9 +264,18 @@
     # Strip partition number
     install_drive="`echo ${install_drive} | sed -e s/,[0-9]*//g`"
     grub_drive="`echo ${grub_drive} | sed -e s/,[0-9]*//g`"
-    if [ "x${grub_drive}" != "x${install_drive}" ] ; then
+    if [ "${target_cpu}-${platform}" != "i386-pc" ] ; then
+        # generic method (used on coreboot)
         uuid="`$grub_probe --target=fs_uuid --device ${grub_device}`"
         if [ "x${uuid}" = "x" ] ; then
+          echo "UUID needed on this platform, but the filesystem containing ${grubdir} does not support UUIDs." 1>&2
+          exit 1
+        fi
+        prefix_drive="(UUID=${uuid})"
+        modules="$modules fs_uuid"
+    elif [ "x${grub_drive}" != "x${install_drive}" ] ; then
+        uuid="`$grub_probe --target=fs_uuid --device ${grub_device}`"
+        if [ "x${uuid}" = "x" ] ; then
           echo "You attempted a cross-disk install, but the filesystem containing ${grubdir} does not support UUIDs." 1>&2
           exit 1
         fi
@@ -266,11 +291,15 @@
     relative_grubdir=/
 fi
 
-$grub_mkimage --output=${grubdir}/core.img --prefix=${prefix_drive}${relative_grubdir} $modules || exit 1
+if [ "${target_cpu}-${platform}" = "i386-pc" ] ; then
+    $grub_mkimage --output=${grubdir}/core.img --prefix=${prefix_drive}${relative_grubdir} $modules || exit 1
 
-# Now perform the installation.
-$grub_setup ${setup_verbose} --directory=${grubdir} --device-map=${device_map} \
-    ${install_device} || exit 1
+    # Now perform the installation.
+    $grub_setup ${setup_verbose} --directory=${grubdir} --device-map=${device_map} \
+        ${install_device} || exit 1
+else
+    $grub_mkimage -d ${pkglibdir} --output=/boot/multiboot.img --prefix=${prefix_drive}${relative_grubdir} $modules || exit 1
+fi
 
 # Prompt the user to check if the device map is correct.
 echo "Installation finished. No error reported."
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.