#!/bin/sh

# required in pwd:
# - etherboot-5.4.3.tar.bz2
#       http://downloads.sourceforge.net/etherboot/etherboot-5.4.3.tar.bz2

PACKAGE=etherboot
VERSION=5.4.3

CWD=$PWD
TMP=${TMP:-/tmp}
MNT=$PACKAGE-$$
IMGS="$PACKAGE.img ${PACKAGE}_pcmcia.img"

for IMG in $IMGS ; do
 # build
 echo "Building: $IMG"
 rm -rf $TMP/$PACKAGE-$VERSION/
 tar jxf $CWD/$PACKAGE-$VERSION.tar.bz2 -C $TMP/ || exit 1
 chmod -R g-w $TMP/$PACKAGE-$VERSION/
 chown -R root:root $TMP/$PACKAGE-$VERSION/
 cd $TMP/$PACKAGE-$VERSION/src/ || exit 1
 if [ $IMG = $PACKAGE.img ] ; then
   BUILD_PCMCIA=""                             # etherboot.img
 else
   BUILD_PCMCIA="EXTRA_CFLAGS=-DCONFIG_PCMCIA" # etherboot_pcmcia.img
 fi
 make $BUILD_PCMCIA allzlilos &> make_allzlilos.output || exit 1

 # prep image
 dd if=/dev/zero of=$TMP/$IMG bs=1 count=0 seek=1440K &> /dev/null || exit 1
 mkdosfs $TMP/$IMG &> /dev/null || exit 1
 syslinux -s $TMP/$IMG || exit 1
 mkdir -p $TMP/$MNT/
 mount -t vfat $TMP/$IMG $TMP/$MNT/ -o loop || exit 1

 # config & text setup
 cat << EOF > $TMP/$MNT/syslinux.cfg
default ne
prompt 1
display message.txt

EOF

 # be tidy. start with a cleared screen
 echo -ne "\014" > $TMP/$MNT/message.txt

 cat << EOF >> $TMP/$MNT/message.txt

Welcome to the Etherboot v$VERSION Bootdisk

The following is a complete list of drivers available on this disk. Since they
do not necessarily have a one-to-one name relationship with those in the Linux
kernel, you may have to try several at random until one works.

3c503        cs89x0       etherfabric  ne           r8169        tg3
3c509        davicom      forcedeth    ns83820      rtl8139      tlan
3c515        depca        ide_disk     ns8390       sis900       tulip
3c529        dmfe         mt23108      pc_floppy    sk_g16       undi
3c595        e1000        mt25218      pcnet32      skel-isa     via-rhine
3c90x        eepro        mtd80x       pnic         skel         via-velocity
amd8111e     eepro100     myri10ge     prism2_pci   smc9000      w89c840
bnx2         epic100      natsemi      prism2_plx   sundance     wd

Enter your selection at the prompt below.

EOF

 # update config, copy drivers
 # note the ugly kludge for 8.3 filenames. this is necessary!
 echo -n "Copying drivers: "
 cd $TMP/$PACKAGE-$VERSION/src/bin/
 for ORGNAME in *.zlilo ; do
   LABEL=$(basename $ORGNAME .zlilo)
   case "$LABEL" in
     etherfabric)
       DOSNAME=ethrfbrc.zli
     ;;
     forcedeth)
       DOSNAME=forcdeth.zli
     ;;
     pc_floppy)
       DOSNAME=pc_flopy.zli
     ;;
     prism2_pci)
       DOSNAME=prsm2pci.zli
     ;;
     prism2_plx)
       DOSNAME=prsm2plx.zli
     ;;
     via-rhine)
       DOSNAME=viarhine.zli
     ;;
     via-velocity)
       DOSNAME=viavlcty.zli
     ;;
     *)
       DOSNAME=$LABEL.zli
     ;;
   esac
   echo -n "$LABEL "
   echo -e "label $LABEL\n  kernel $DOSNAME" >> $TMP/$MNT/syslinux.cfg
   cp -p $ORGNAME $TMP/$MNT/$DOSNAME
 done
 echo

 # image finale
 umount $TMP/$MNT/
 sync
 mv $TMP/$IMG $CWD/

 # tidy up
 rm -rf $TMP/$MNT/ $TMP/$PACKAGE-$VERSION/
done