* DISTLIST: Add util/powerpc/ieee1275/grub-mkrescue.in. * conf/powerpc-ieee1275.mk: Add grub-mkrescue support. * conf/powerpc-ieee1275.mk: Regenerate. * util/powerpc/ieee1275/grub-mkrescue.in: Implement grub-mkrescue for PowerMac and CHRP. ---
DISTLIST | 1 conf/powerpc-ieee1275.mk | 10 +++ conf/powerpc-ieee1275.rmk | 4 + util/powerpc/ieee1275/grub-mkrescue.in | 116 ++++++++++++++++++++++++++++++++ 4 files changed, 131 insertions(+), 0 deletions(-) create mode 100644 util/powerpc/ieee1275/grub-mkrescue.in diff --git a/DISTLIST b/DISTLIST index 6388257..6b527c7 100644 --- a/DISTLIST +++ b/DISTLIST @@ -330,6 +330,7 @@ util/i386/pc/misc.c util/i386/pc/grub-mkrescue.in util/ieee1275/get_disk_name.c util/powerpc/ieee1275/grub-install.in +util/powerpc/ieee1275/grub-mkrescue.in util/powerpc/ieee1275/misc.c video/bitmap.c video/video.c diff --git a/conf/powerpc-ieee1275.mk b/conf/powerpc-ieee1275.mk index 8869f5b..925027f 100644 --- a/conf/powerpc-ieee1275.mk +++ b/conf/powerpc-ieee1275.mk @@ -686,6 +686,7 @@ kernel_elf_LDFLAGS = $(COMMON_LDFLAGS) -static-libgcc -lgcc \ # Scripts. sbin_SCRIPTS = grub-install +bin_SCRIPTS = grub-mkrescue # For grub-install. grub_install_SOURCES = util/powerpc/ieee1275/grub-install.in @@ -696,6 +697,15 @@ grub-install: util/powerpc/ieee1275/grub-install.in config.status chmod +x $@ +# For grub-mkrescue. +grub_mkrescue_SOURCES = util/powerpc/ieee1275/grub-mkrescue.in +CLEANFILES += grub-mkrescue + +grub-mkrescue: util/powerpc/ieee1275/grub-mkrescue.in config.status + ./config.status --file=grub-mkrescue:util/powerpc/ieee1275/grub-mkrescue.in + chmod +x $@ + + # Modules. pkglib_MODULES = halt.mod \ _linux.mod \ diff --git a/conf/powerpc-ieee1275.rmk b/conf/powerpc-ieee1275.rmk index 5a43e9f..42af2c5 100644 --- a/conf/powerpc-ieee1275.rmk +++ b/conf/powerpc-ieee1275.rmk @@ -104,10 +104,14 @@ kernel_elf_LDFLAGS = $(COMMON_LDFLAGS) -static-libgcc -lgcc \ # Scripts. sbin_SCRIPTS = grub-install +bin_SCRIPTS = grub-mkrescue # For grub-install. grub_install_SOURCES = util/powerpc/ieee1275/grub-install.in +# For grub-mkrescue. +grub_mkrescue_SOURCES = util/powerpc/ieee1275/grub-mkrescue.in + # Modules. pkglib_MODULES = halt.mod \ _linux.mod \ diff --git a/util/powerpc/ieee1275/grub-mkrescue.in b/util/powerpc/ieee1275/grub-mkrescue.in new file mode 100644 index 0000000..61495ab --- /dev/null +++ b/util/powerpc/ieee1275/grub-mkrescue.in @@ -0,0 +1,116 @@ +#! /bin/sh -e + +# Make GRUB rescue image +# 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 <http://www.gnu.org/licenses/>. + +# 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 + --pkglibdir=DIR use images from directory DIR + default: ${pkglibdir} + --grub-mkimage=FILE use FILE as grub-mkimage + +grub-mkimage generates a bootable rescue CD image for PowerMac and CHRP. + +Report bugs to <grub-devel@gnu.org>. +EOF +} + +input_dir=${pkglibdir} +grub_mkimage=grub-mkimage + +# 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=//'` ;; + --pkglibdir=*) + input_dir=`echo "$option" | sed 's/--pkglibdir=//'` ;; + --grub-mkimage=*) + grub_mkimage=`echo "$option" | sed 's/--grub-mkimage=//'` ;; + -*) + 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 test "x$output_image" = x; then + usage + exit 1 +fi + +if [ "x${modules}" = "x" ] ; then + modules=`cd ${input_dir}/ && ls *.mod` +fi + +map_file=`mktemp` +cat >${map_file} <<EOF +# EXTN XLate CREATOR TYPE Comment +grub.img Raw 'UNIX' 'tbxi' "bootstrap" +EOF + +iso_dir=`mktemp -d` +boot_dir=${iso_dir}/boot/grub +mkdir ${iso_dir}/boot +mkdir ${boot_dir} +core_img=${boot_dir}/grub.img +${grub_mkimage} -n -d ${input_dir}/ -o ${core_img} ${modules} +genisoimage -hfs -part -no-desktop -r -J -o ${output_image} \ + -map ${map_file} -hfs-bless ${boot_dir} -chrp-boot -sysid PPC \ + ${iso_dir} + +rm -rf ${iso_dir} +rm -f ${map_file} + +exit 0 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel