| #!/bin/bash |
| # |
| # Generate a legacy floppy emulation ISO boot image |
| # |
| # genliso foo.liso foo.lkrn |
| # |
| # the ISO image is the first argument so that a list of .lkrn images |
| # to include can be specified |
| # |
| case $0 in |
| *genliso) |
| ;; |
| *genfdimg) |
| genfdimg=1 |
| ;; |
| esac |
| 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 |
| 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%.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 |
| case "$genfdimg" in |
| 1) |
| ;; |
| *) |
| mkisofs -o $out -c boot.cat -b boot.img $dir |
| ;; |
| esac |
| rm -fr $dir |