diff options
Diffstat (limited to 'src/util/genliso')
-rwxr-xr-x | src/util/genliso | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/src/util/genliso b/src/util/genliso new file mode 100755 index 0000000..b8d9a11 --- /dev/null +++ b/src/util/genliso @@ -0,0 +1,85 @@ +#!/bin/bash +# +# Generate a legacy floppy emulation ISO boot image +# +# genliso foo.liso foo.zlilo +# +# the ISO image is the first argument so that a list of .zlilo images +# to include can be specified +# +case $0 in +*genliso) + ;; +*genfdimg) + genfdimg=1 + ;; +esac +case $# in +0|1) + echo Usage: $0 foo.liso foo.zlilo ... + exit 1 + ;; +esac +case "`mtools -V`" in +Mtools\ version\ 3.9.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%.zlilo} + g=${g//[^a-z0-9]} + g=${g:0:8}.zli + 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 |