Files
ipxe/src/util/genliso
Marty Connor 96f4f96540 [build] Add syslinux floppy image type .sdsk
We add a syslinux floppy disk type using parts of the genliso script.
This floppy image cat be dd'ed to a physical floppy or used in
instances where a virtual floppy with an mountable DOS filesystem is
useful.

We also modify the genliso script to only generate .liso images
rather than creating images depending on how it is called.

Signed-off-by: Michael Brown <mcb30@etherboot.org>
2009-08-02 11:04:13 +01:00

76 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
#
# Generate a legacy floppy emulation ISO boot image
#
# genliso foo.liso foo.lkrn bar.lkrn ...
#
# The .liso image filename is the first argument followed by
# a list of .lkrn images include in .liso image
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
img=$dir/boot.img
mformat -f 1440 -C -i $img ::
cfg=bin/syslinux.cfg
cat > $cfg <<EOF
# These default options can be changed in the genliso script
SAY gPXE 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
mkisofs -o $out -c boot.cat -b boot.img $dir
rm -fr $dir