mirror of
https://github.com/ipxe/ipxe
synced 2026-01-28 11:44:14 +03:00
The mtools version check does not handle GNU mtools 4.0.10. This commit makes the pattern more general so it matches older mtools as well as the newer "mtools (GNU mtools) 4.0.10" string. Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
66 lines
1.0 KiB
Bash
66 lines
1.0 KiB
Bash
#!/bin/bash
|
|
#
|
|
# Generate a syslinux floppy that loads a gPXE image
|
|
#
|
|
# gensdsk foo.sdsk foo.lkrn
|
|
#
|
|
# the floppy image is the first argument
|
|
# followed by list of .lkrn images
|
|
#
|
|
|
|
case $# in
|
|
0|1)
|
|
echo Usage: $0 foo.sdsk foo.lkrn ...
|
|
exit 1
|
|
;;
|
|
esac
|
|
case "`mtools -V`" in
|
|
Mtools\ version\ 3.9.9*|Mtools\ version\ 3.9.1[0-9]*|[mM]tools\ *\ [4-9].*)
|
|
;;
|
|
*)
|
|
echo Mtools version 3.9.9 or later is required
|
|
exit 1
|
|
;;
|
|
esac
|
|
img=$1
|
|
shift
|
|
dir=`mktemp -d bin/sdsk.dir.XXXXXX`
|
|
|
|
mformat -f 1440 -C -i $img ::
|
|
cfg=$dir/syslinux.cfg
|
|
cat > $cfg <<EOF
|
|
|
|
# These default options can be changed in the gensdsk script
|
|
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
|
|
|
|
rm -fr $dir
|