Browse Source

Tobias Hintze <th@rocklinux.org>:


			
			
				rocklinux
			
			
		
Tobias Hintze 20 years ago
parent
commit
f70f281ea3
2 changed files with 264 additions and 15 deletions
  1. +212
    -0
      target/rescue/contrib/mkisolinux.sh
  2. +52
    -15
      target/rescue/contrib/mkrescueiso.sh

+ 212
- 0
target/rescue/contrib/mkisolinux.sh

@ -0,0 +1,212 @@
#!/bin/sh
#
# This is a contributed script to create a bootable ISO image from your
# rescue target build.
#
# It uses isolinux (syslinux) to create a non-emu bootable image.
# It uses memdisk (syslinux) to add grub to the list of choices.
#
# (C) 2004 Tobias Hintze
#
[ -z "$GRUBSRC" ] && GRUBSRC="/usr/share/grub"
[ -z "$SYSLINUXSRC" ] && SYSLINUXSRC="/usr/lib/syslinux"
set -e
usage() {
echo "Usage:"
echo " $0 ISODIR"
echo " creates the iso image from iso-dir"
echo
echo " $0 -c KERNEL INITRD[.gz] SYSTEM [OVERLAY]"
echo " creates iso-dir"
echo
echo " $0 -C KERNEL INITRD[.gz] SYSTEM [OVERLAY]"
echo " creates the iso image from kernel, initrd and system tarball"
echo ""
echo "Example usage (most commonly used):"
echo "(You get an iso image with default configuration and given files.)"
echo ""
echo "$0 -C vmlinuz initrd.img system.tar.bz2"
echo ""
echo "Using the -C option is like using the -c option except that after creating"
echo "the temporary iso-dir the script calls itself to create the image from that"
echo "dir (first usage option). The iso-dir is deleted on success afterwards."
echo ""
echo "* initrd.img and system.tar.bz2 are generated during the rescue-target build."
echo "* kernel must have support for devfs"
echo "* kernel must have support for initrd"
echo "* kernel must have support for iso9660"
echo ""
exit 1
}
die() {
echo "$1"
exit 2
}
check_reqs() {
[ -z "`type -p grub`" ] && \
die "You need grub to create an image with this script."
[ -z "`type -p e2fsimage`" ] && \
die "You need e2fsimage to create an image with this script."
[ -z "`type -p mkisofs`" ] && \
die "You need mkisofs to create an image with this script."
[ -d "$GRUBSRC" ] || die "No grub stages at $GRUBSRC. I need them!"
[ -d "$SYSLINUXSRC" ] || die "No syslinux at $SYSLINUXSRC. I need it!"
echo "requirements ok."
}
test -z "$1" && usage
case "$1" in
-c|-C)
CREATEDIR=1
[[ "$1" == "-C" ]] && CREATEDIR=2
[[ $# == 4 || $# == 5 ]] || usage
[ -r $2 ] || exec echo "failed to read kernel image $2"
[ -r $3 ] || exec echo "failed to read initrd image $3"
[ -r $4 ] || exec echo "failed to read system $4"
KERNEL=$2
INITRD=$3
SYSTEM=$4
[[ $# == 5 ]] && {
[ -r $5 ] || exec echo "failed to read overlay $5"
OVERLAY=$5
}
;;
*)
[[ $# == 1 ]] || usage
[ -r $1 ] || exec echo "failed to read iso-dir $1"
esac
[[ "$CREATEDIR" != 1 ]] && [ -e iso ] && die "file \"iso\" is in my way."
check_reqs
GRUBSRC="$( find $GRUBSRC -type d -mindepth 1 -maxdepth 1 | head -n 1 )"
[ -r $GRUBSRC/stage1 -a -r $GRUBSRC/stage2 ] || die "grub stage1 or stage2 missing."
[ -r $SYSLINUXSRC/isolinux.bin -a \
-r $SYSLINUXSRC/memdisk ] || die "isolinux.bin or memdisk missing."
if [ -n "$CREATEDIR" ]
then
TMPDIR=/var/tmp/rescuecd.$$
mkdir $TMPDIR || die "failed to create tmp-dir \"$TMPDIR\"."
mkdir -pv $TMPDIR/iso/isolinux $TMPDIR/iso/rescue $TMPDIR/fd
#
# prepare the directory
#
# syslinux
cp -v $SYSLINUXSRC/isolinux.bin $SYSLINUXSRC/memdisk $TMPDIR/iso/isolinux/
# kernel
cp -v $KERNEL $TMPDIR/iso/isolinux/krescue
# initrd
if [ "`file -bi $INITRD`" == "application/x-gzip" ] ; then
cp -v $INITRD $TMPDIR/iso/isolinux/rdrescue.gz
else
echo "compressing initrd image..."
cat $INITRD | gzip -c > $TMPDIR/iso/isolinux/rdrescue.gz
fi
cp -v $SYSTEM $TMPDIR/iso/rescue/system.tb2
[ -n "$OVERLAY" ] && cp -v $OVERLAY $TMPDIR/iso/rescue/overlay.tar.bz2
#
# create grub fd
#
echo "creating bootable grub fd image"
mkdir -v $TMPDIR/fd/grub
cp -v $GRUBSRC/*stage* $TMPDIR/fd/grub/
e2fsimage -f $TMPDIR/iso/isolinux/fdgrub.img -d $TMPDIR/fd -v -s 360
rm -f $TMPDIR/device.map
echo "(fd0) $TMPDIR/iso/isolinux/fdgrub.img" > $TMPDIR/device.map
[[ "`id -u`" == "0" ]] && {
echo "i don't want to run grub as root. destructive potential too high."
echo "if you want to do it on your own issue the following command: "
echo
echo "grub --device-map=$TMPDIR/device.map --batch <<EOF"
echo "root (fd0)"
echo "setup (fd0)"
echo "EOF"
echo
die "Cowardly refusing to endanger your MBR and disks."
}
grub --device-map=$TMPDIR/device.map --batch <<EOF
root (fd0)
setup (fd0)
EOF
echo ""
echo "finished creating fdgrub.img"
# create isolinux.cfg
cat > $TMPDIR/iso/isolinux/isolinux.cfg << EOF
DEFAULT rescue
TIMEOUT 300
PROMPT 1
DISPLAY display.txt
LABEL rescue
KERNEL krescue
APPEND initrd=rdrescue.gz root=/dev/ram boot=iso9660:/dev/cdroms/cdrom0 system=/mnt_boot/rescue/system.tb2 panic=60
LABEL grub
KERNEL memdisk
APPEND initrd=fdgrub.img
EOF
cat > $TMPDIR/iso/isolinux/display.txt << "EOF"
____ ___ ___ _ __ _
| _ \ / _ \ / __| |/ / | | _ _ __ _ _ _ _
| . _/| | | | | | '_/ | | |_| '_ \| | | | \/ |
| |\ \| |_| | |__| . \ | |__| | | | | `_' |> <
|_| \_\ ___/ \___|_|\_\ |____|_|_| |_|\___/|_/\_|
[============> http://www.rocklinux.org/ <============]
Actions:
--------
<ENTER> Boot into rescue system (ramdisk)
grub <ENTER> Run grub from emulated floppy image
rescue options <ENTER> Boot into rescue system with given options
"EOF"
EOF
if [ "$CREATEDIR" == "1" ] ; then
echo "ready. you might want to run:"
echo "$0 $TMPDIR/iso"
elif [ "$CREATEDIR" == "2" ] ; then
echo "running $0 $TMPDIR/iso"
$0 $TMPDIR/iso
rm -rfv $TMPDIR
fi
exit 0
fi
test -z "$1" && usage
ISODIR=$1
test -d $ISODIR || die "ISODIR \"$ISODIR\" not a directory."
create_iso_image() {
test -e iso && die "file \"iso\" is in my way."
mkisofs -b isolinux/isolinux.bin -c isolinux/boot.cat \
-no-emul-boot -boot-load-size 4 \
-boot-info-table -o iso $ISODIR
}
create_iso_image

+ 52
- 15
target/rescue/contrib/mkrescueiso.sh

@ -3,6 +3,8 @@
# This is a contributed script to create a bootable ISO image from your
# rescue target build.
#
# It uses grub with fd-emu to create a bootable image.
#
# (C) 2004 Tobias Hintze
#
@ -12,19 +14,28 @@ set -e
usage() {
echo "Usage:"
echo " $0 ISODIR FDDIR"
echo " creates the iso from iso-dir and fd-dir"
echo " creates the iso image from iso-dir and fd-dir"
echo
echo " $0 -c KERNEL INITRD[.gz] SYSTEM [OVERLAY]"
echo " creates iso-dir and fd-dir"
echo
echo " $0 -C KERNEL INITRD[.gz] SYSTEM [OVERLAY]"
echo " creates the iso from kernel, initrd and system tarball"
echo " creates the iso image from kernel, initrd and system tarball"
echo ""
echo "Example usage (most commonly used):"
echo "(You get an iso image with default configuration and given files.)"
echo ""
echo "initrd.img and system.tar.bz2 are generated during the"
echo "rescue-target build."
echo "$0 -C vmlinuz initrd.img system.tar.bz2"
echo ""
echo "the kernel must have support for devfs and initrd."
echo "Using the -C option is like using the -c option except that after creating"
echo "the temporary directories the script calls itself to create the image from them"
echo "(first usage option). The directories are deleted on success afterwards."
echo ""
echo "* initrd.img and system.tar.bz2 are generated during the rescue-target build."
echo "* kernel must have support for devfs"
echo "* kernel must have support for initrd"
echo "* kernel must have support for iso9660"
echo "* kernel must be small to fit on 2880KB (minus initrd and grub stages)"
exit 1
}
@ -33,15 +44,41 @@ die() {
exit 2
}
test -z "$1" && usage
check_reqs() {
[ -z "`type -p e2fsimage`" ] && \
die "You need e2fsimage to create an image with this script."
[ -z "`type -p mkisofs`" ] && \
die "You need mkisofs to create an image with this script."
[ -z "`type -p grub`" ] && \
die "You need grub to create an image with this script."
echo "requirements ok."
}
if [ "$1" == "-c" ] ; then
CREATEDIRS=1
fi
if [ "$1" == "-C" ] ; then
CREATEDIRS=2
fi
if [ ! -z "$CREATEDIRS" ]
test -z "$1" && usage
case "$1" in
-c|-C)
CREATEDIRS=1
[[ "$1" == "-C" ]] && CREATEDIRS=2
[[ $# == 4 || $# == 5 ]] || usage
[ -r $2 ] || exec echo "failed to read kernel image $2"
[ -r $3 ] || exec echo "failed to read initrd image $3"
[ -r $4 ] || exec echo "failed to read system $4"
[[ $# == 5 ]] && {
[ -r $5 ] || exec echo "failed to read overlay $5"
}
;;
*)
[[ $# == 2 ]] || usage
[ -r $1 ] || exec echo "failed to read iso-dir $1"
[ -r $2 ] || exec echo "failed to read fd-dir $2"
;;
esac
[[ "$CREATEDIRS" != 1 ]] && [ -e iso ] && die "file \"iso\" is in my way."
check_reqs
if [ -n "$CREATEDIRS" ]
then
shift
TMPDIR=/var/tmp/rescue.$$
@ -141,10 +178,10 @@ EOF
rm -fv $ISODIR/device.map-$$
create_fdemu_image() {
create_iso_image() {
test -e iso && die "file \"iso\" is in my way."
mkisofs -b fdemu.img -r -l -d -c boot.catalog \
-allow-multidot -allow-lowercase -o iso $ISODIR
}
create_fdemu_image
create_iso_image

Loading…
Cancel
Save