#!/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