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