From e54a72f5cb3fd9214bd49114641416626c5f1be6 Mon Sep 17 00:00:00 2001 From: robertmh Date: Sun, 13 Apr 2008 15:13:49 +0000 Subject: [PATCH] 2008-04-13 Christian Franke * util/i386/pc/grub-mkrescue.in: Add --emulation=floppy to create a floppy emulation boot CD when non emulation mode does not work. Enable Joliet CD filesystem extension. --- ChangeLog | 7 +++++++ util/i386/pc/grub-mkrescue.in | 30 +++++++++++++++++++++++++++--- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 71400698d..8ab8ba767 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-04-13 Christian Franke + + * util/i386/pc/grub-mkrescue.in: Add --emulation=floppy + to create a floppy emulation boot CD when non emulation mode + does not work. + Enable Joliet CD filesystem extension. + 2008-04-13 Robert Millan * kern/misc.c (grub_strncat): Fix off-by-one error. diff --git a/util/i386/pc/grub-mkrescue.in b/util/i386/pc/grub-mkrescue.in index 53bf8f652..668f270f4 100644 --- a/util/i386/pc/grub-mkrescue.in +++ b/util/i386/pc/grub-mkrescue.in @@ -46,6 +46,8 @@ Make GRUB rescue image. --pkglibdir=DIR use images from directory DIR instead of ${pkglibdir} --grub-mkimage=FILE use FILE as grub-mkimage --image-type=TYPE select floppy or cdrom (default) + --emulation=TYPE select El Torito boot emulation type floppy + or none (default) (cdrom only) grub-mkimage generates a bootable rescue image of the specified type. @@ -56,6 +58,7 @@ EOF image_type=cdrom input_dir=${pkglibdir} grub_mkimage=grub-mkimage +emulation=none # Check the arguments. for option in "$@"; do @@ -82,6 +85,14 @@ for option in "$@"; do echo "Unknown image type \`$image_type'" 1>&2 exit 1 ;; esac ;; + --emulation=*) + emulation=`echo "$option" | sed 's/--emulation=//'` + case "$emulation" in + floppy|none) ;; + *) + echo "Unknown emulation type \`$emulation'" 1>&2 + exit 1 ;; + esac ;; -*) echo "Unrecognized option \`$option'" 1>&2 usage @@ -118,7 +129,7 @@ if test "x$overlay" = x ; then : ; else cp -dpR ${overlay}/* ${aux_dir}/ fi -if [ "x${image_type}" = "xfloppy" ] ; then +if [ "x${image_type}" = xfloppy -o "x${emulation}" = xfloppy ] ; then # build memdisk memdisk_img=`mktemp` tar -C ${aux_dir} -cf ${memdisk_img} boot @@ -130,8 +141,21 @@ if [ "x${image_type}" = "xfloppy" ] ; then rm -f ${memdisk_img} # build floppy image - cat ${input_dir}/boot.img ${core_img} /dev/zero | dd bs=1024 count=1440 > $output_image + if [ "x${image_type}" = xcdrom ] ; then + floppy_dir=`mktemp -d` + floppy_img=${floppy_dir}/grub_floppy.img + else + floppy_img=${output_image} + fi + cat ${input_dir}/boot.img ${core_img} /dev/zero | dd bs=1024 count=1440 > ${floppy_img} rm -f ${core_img} + + if [ "x${image_type}" = xcdrom ] ; then + # build iso image + genisoimage -b grub_floppy.img \ + -o ${output_image} -r -J ${floppy_dir} + rm -rf ${floppy_dir} + fi else # build core.img core_img=`mktemp` @@ -144,7 +168,7 @@ else # build iso image genisoimage -b boot/grub/grub_eltorito \ -no-emul-boot -boot-load-size 4 -boot-info-table \ - -o ${output_image} -r ${aux_dir} + -o ${output_image} -r -J ${aux_dir} rm -rf ${aux_dir} fi