I'm attaching a small utility to generate a floppy or cdrom (based on floppy
emulation) rescue image, that takes all the hassle of generating the image and
doesn't need root permissions.

If nobody objects, I'd like to put this in CVS.

-- 
Robert Millan

My spam trap is [EMAIL PROTECTED]  Note: this address is only intended
for spam harvesters.  Writing to it will get you added to my black list.
Binary files grub2-1.95+20070604.old/- and grub2-1.95+20070604/- differ
diff -x i386-pc.mk -Nur grub2-1.95+20070604.old/conf/i386-pc.rmk grub2-1.95+20070604/conf/i386-pc.rmk
--- grub2-1.95+20070604.old/conf/i386-pc.rmk	2007-06-04 21:48:53.000000000 +0200
+++ grub2-1.95+20070604/conf/i386-pc.rmk	2007-06-07 21:34:46.000000000 +0200
@@ -114,10 +114,19 @@
 
 # Scripts.
 sbin_SCRIPTS = grub-install
+bin_SCRIPTS = grub-mkrescue
 
 # For grub-install.
 grub_install_SOURCES = util/i386/pc/grub-install.in
 
+# For grub-mkrescue.
+grub_mkrescue_SOURCES = util/i386/pc/grub-mkrescue.in
+CLEANFILES += grub-mkrescue
+
+grub-mkrescue: util/i386/pc/grub-mkrescue.in config.status
+	./config.status --file=grub-mkrescue:util/i386/pc/grub-mkrescue.in
+	chmod +x $@
+
 # Modules.
 pkgdata_MODULES = _chain.mod _linux.mod linux.mod normal.mod \
 	_multiboot.mod chain.mod multiboot.mod reboot.mod halt.mod	\
diff -x i386-pc.mk -Nur grub2-1.95+20070604.old/Makefile.in grub2-1.95+20070604/Makefile.in
--- grub2-1.95+20070604.old/Makefile.in	2007-05-20 11:10:06.000000000 +0200
+++ grub2-1.95+20070604/Makefile.in	2007-06-07 21:36:42.000000000 +0200
@@ -88,7 +88,7 @@
 DATA = $(pkgdata_IMAGES) $(pkgdata_MODULES) $(pkgdata_PROGRAMS) \
 	$(pkgdata_DATA) $(lib_DATA)
 PROGRAMS = $(bin_UTILITIES) $(sbin_UTILITIES)
-SCRIPTS = $(sbin_SCRIPTS) $(update-grub_SCRIPTS)
+SCRIPTS = $(bin_SCRIPTS) $(sbin_SCRIPTS) $(update-grub_SCRIPTS)
 
 CLEANFILES =
 MOSTLYCLEANFILES = 
@@ -149,6 +149,11 @@
 	  dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \
 	  $(INSTALL_PROGRAM) $$dir$$file $(DESTDIR)$(sbindir)/$$dest; \
 	done
+	@list='$(bin_SCRIPTS)'; for file in $$list; do \
+	  if test -f "$$file"; then dir=; else dir="$(srcdir)/"; fi; \
+	  dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \
+	  $(INSTALL_SCRIPT) $$dir$$file $(DESTDIR)$(bindir)/$$dest; \
+	done
 	@list='$(sbin_SCRIPTS)'; for file in $$list; do \
 	  if test -f "$$file"; then dir=; else dir="$(srcdir)/"; fi; \
 	  dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \
@@ -182,7 +187,7 @@
 	  dest="`echo $$file | sed 's,.*/,,'`"; \
 	  rm -f $(DESTDIR)$(pkglibdir)/$$dest; \
 	done
-	@list='$(bin_UTILITIES)'; for file in $$list; do \
+	@list='$(bin_UTILITIES) $(bin_SCRIPTS)'; for file in $$list; do \
 	  dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \
 	  rm -f $(DESTDIR)$(bindir)/$$dest; \
 	done
Binary files grub2-1.95+20070604.old/tmp/floppy and grub2-1.95+20070604/tmp/floppy differ
diff -x i386-pc.mk -Nur grub2-1.95+20070604.old/util/i386/pc/grub-mkrescue.in grub2-1.95+20070604/util/i386/pc/grub-mkrescue.in
--- grub2-1.95+20070604.old/util/i386/pc/grub-mkrescue.in	1970-01-01 01:00:00.000000000 +0100
+++ grub2-1.95+20070604/util/i386/pc/grub-mkrescue.in	2007-06-07 21:41:22.000000000 +0200
@@ -0,0 +1,119 @@
+#! /bin/sh
+
+# Make GRUB rescue image
+# Copyright (C) 1999,2000,2001,2002,2003,2004,2005,2006,2007 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@"
+
[EMAIL PROTECTED]@
[EMAIL PROTECTED]@
[EMAIL PROTECTED]@
[EMAIL PROTECTED]@
[EMAIL PROTECTED]@
[EMAIL PROTECTED]@
[EMAIL PROTECTED]@
[EMAIL PROTECTED]@
[EMAIL PROTECTED]@
+pkglibdir=${libdir}/`echo ${PACKAGE_TARNAME}/${target_cpu}-${platform} | sed ${transform}`
+
+grub_mkimage=${bindir}/`echo grub-mkimage | sed ${transform}`
+
+# Usage: usage
+# Print the usage.
+usage () {
+    cat <<EOF
+Usage: grub-mkrescue [OPTION] output_image
+Make GRUB rescue image.
+
+  -h, --help              print this message and exit
+  -v, --version           print the version information and exit
+  --modules=MODULES       pre-load specified modules MODULES
+  --grub-mkimage=FILE     use FILE as grub-mkimage
+
+grub-mkimage generates a bootable rescue image of the specified type.
+
+Report bugs to <grub-devel@gnu.org>.
+EOF
+}
+
+image_type=cdrom
+
+# 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=//'` ;;
+    --grub-mkimage=*)
+	grub_mkimage=`echo "$option" | sed 's/--grub-mkimage=//'` ;;
+    --image-type=*)
+    	image_type=`echo "$option" | sed 's/--image-type=//'`
+        case "$image_type" in
+          floppy|cdrom) ;;
+          *)
+            echo "Unknown image type \`$image_type'" 1>&2
+            exit 1 ;;
+        esac ;;
+    -*)
+	echo "Unrecognized option \`$option'" 1>&2
+	usage
+	exit 1
+	;;
+    *)
+	if test "x$output_image" != x; then
+	    echo "Unrecognized option \`$option'" 1>&2
+	    usage
+	    exit 1
+	fi
+	output_image="${option}" ;;
+    esac
+done
+
+if [ "x${modules}" = "x" ] ; then
+  modules=`cd ${pkglibdir}/ && ls *.mod`
+fi
+
+if [ "x${image_type}" = "xfloppy" ] ; then
+  floppy_image=${output_image}
+else
+  floppy_image=`mktemp`
+fi
+
+cp ${pkglibdir}/boot.img $floppy_image
+core_img=`mktemp`
+grub-mkimage -d ${pkglibdir}/ -o ${core_img} ${modules}
+cat ${core_img} >> $floppy_image
+rm -f ${core_img}
+
+if [ "x${image_type}" = "xfloppy" ] ; then
+  exit 0
+fi
+
+iso_dir=`mktemp -d`
+cat ${floppy_image} /dev/zero | dd bs=1024 count=1440 > ${iso_dir}/floppy.img
+genisoimage -b floppy.img -o ${output_image} -r ${iso_dir}
+rm -rf ${iso_dir}
+
+rm -f ${floppy_image}
+
+exit 0
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to