| #!/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]*|[mM]tools\ *\ [4-9].*) |
| ;; |
| *) |
| echo Mtools version 3.9.9 or later is required |
| exit 1 |
| ;; |
| esac |
| |
| out=$1 |
| shift |
| |
| dir=`mktemp -d bin/liso.dir.XXXXXX` |
| |
| img=$dir/boot.img |
| mformat -f 1440 -C -i $img :: |
| |
| cfg=$dir/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 -q -o $out -c boot.cat -b boot.img $dir |
| |
| rm -fr $dir |