summaryrefslogtreecommitdiff
path: root/gpxe/src/util/genliso
diff options
context:
space:
mode:
Diffstat (limited to 'gpxe/src/util/genliso')
-rwxr-xr-xgpxe/src/util/genliso85
1 files changed, 85 insertions, 0 deletions
diff --git a/gpxe/src/util/genliso b/gpxe/src/util/genliso
new file mode 100755
index 00000000..0a67eb3c
--- /dev/null
+++ b/gpxe/src/util/genliso
@@ -0,0 +1,85 @@
+#!/bin/bash
+#
+# Generate a legacy floppy emulation ISO boot image
+#
+# genliso foo.liso foo.lkrn
+#
+# the ISO image is the first argument so that a list of .lkrn images
+# to include can be specified
+#
+case $0 in
+*genliso)
+ ;;
+*genfdimg)
+ genfdimg=1
+ ;;
+esac
+case $# in
+0|1)
+ echo Usage: $0 foo.liso foo.lkrn ...
+ exit 1
+ ;;
+esac
+case "`mtools -V`" in
+Mtools\ version\ 3.9.9*|Mtools\ version\ 3.9.1[0-9]*|Mtools\ version\ 4.*)
+ ;;
+*)
+ echo Mtools version 3.9.9 or later is required
+ exit 1
+ ;;
+esac
+out=$1
+shift
+dir=bin/liso.dir
+mkdir -p $dir
+case "$genfdimg" in
+1)
+ img=$out
+ ;;
+*)
+ img=$dir/boot.img
+ ;;
+esac
+mformat -f 1440 -C -i $img ::
+cfg=bin/syslinux.cfg
+cat > $cfg <<EOF
+# These default options can be changed in the genliso script
+SAY Etherboot ISO boot image generated by genliso
+TIMEOUT 30
+EOF
+first=
+for f
+do
+ if [ ! -r $f ]
+ then
+ echo $f does not exist, skipping 1>&2
+ continue
+ fi
+ # shorten name for 8.3 filesystem
+ b=$(basename $f)
+ g=${b%.lkrn}
+ g=${g//[^a-z0-9]}
+ g=${g:0:8}.krn
+ case "$first" in
+ "")
+ echo DEFAULT $g
+ ;;
+ esac
+ first=$g
+ echo LABEL $b
+ echo "" KERNEL $g
+ mcopy -m -i $img $f ::$g
+done >> $cfg
+mcopy -i $img $cfg ::syslinux.cfg
+if ! syslinux $img
+then
+ exit 1
+fi
+case "$genfdimg" in
+1)
+ ;;
+*)
+ mkisofs -o $out -c boot.cat -b boot.img $dir
+ ;;
+esac
+rm -fr $dir