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