#!/bin/sh
if [ $# != 1 ]; then
 echo "Usage: $0 /dev/usb-drive" >&2
 exit 1
fi

if [ $(id -u) != 0 ]; then
 echo "Error: You must be root to run this script!" >&2
 exit 2
fi

TARGET="$1"

LABEL="FREEDOS_USB"

REM=$(cat /sys/block/${TARGET#/dev/}/removable 2>/dev/null)

if [ "$REM" != "1" ]; then
 echo "Error: No removeable drive $TARGET" >&2
 exit 4
fi

TMP_SYSLINUX=$(mktemp -td create-syslinux-freedos-usb-drive.XXXXXX)
TMP_SOURCE=$(mktemp -td create-syslinux-freedos-usb-drive-source.XXXXXX)
TMP_TARGET=$(mktemp -td create-syslinux-freedos-usb-drive-target.XXXXXX)

URLBASE=http://ftp.uni-ulm.de/mirrors/kernel.org/utils/boot/syslinux/4.xx
#URLBASE=http://www.kernel.org/pub/linux/utils/boot/syslinux/4.xx
#URLBASE=http://www.kernel.org/pub/linux/utils/boot/syslinux/3.xx
VER=$(wget -qO- $URLBASE/'?C=M;O=D'|awk -F- '/.tar.gz/{print $2}'|sed 's/.tar.gz.*//'|head -1)
FILE=syslinux-$VER.tar.gz
URL=$URLBASE/$FILE

SYSLINUX="$TMP_SYSLINUX"/syslinux-$VER/linux/syslinux
CHAIN_C32="$TMP_SYSLINUX"/syslinux-$VER/com32/modules/chain.c32
MENU_C32="$TMP_SYSLINUX"/syslinux-$VER/com32/menu/menu.c32
VESAMENU_C32="$TMP_SYSLINUX"/syslinux-$VER/com32/menu/vesamenu.c32
GFXBOOT_C32="$TMP_SYSLINUX"/syslinux-$VER/com32/gfxboot/gfxboot.c32
MBR_BIN="$TMP_SYSLINUX"/syslinux-$VER/mbr/mbr.bin

OPTIONS="umask=000,shortname=mixed,quiet,utf8"

SFDISK=/sbin/sfdisk
MKDOSFS=/sbin/mkdosfs

[ -x /usr/bin/curl ] && LOAD="/usr/bin/curl -s"
[ -x /usr/bin/wget ] && LOAD="/usr/bin/wget -qO-"

BOOTSTICK=bootstick.zip
BOOTSTICK_URL=http://goebelmeier.de/bootstick/$BOOTSTICK

$LOAD $URL|tar -C "$TMP_SYSLINUX" -zxv

$LOAD $BOOTSTICK_URL > $TMP_SOURCE/$BOOTSTICK
unzip -d $TMP_SOURCE $TMP_SOURCE/$BOOTSTICK

umount -l $TARGET* 2>/dev/null

dd if=/dev/zero of=$TARGET bs=1M count=1

#$SFDISK -D -uM $TARGET <<EOT
#,,b,*
#EOT

$SFDISK -f -L -uS $TARGET <<EOT
2048,,b,*
EOT

dd if=$MBR_BIN of=$TARGET
$MKDOSFS -F32 -n$LABEL ${TARGET}1
grep -qe --update $SYSLINUX && $SYSLINUX -i ${TARGET}1 || $SYSLINUX ${TARGET}1

mount -o $OPTIONS ${TARGET}1 "$TMP_TARGET"

cp -av "$TMP_SOURCE"/BootStick/usb-root/* "$TMP_TARGET"
#sed -i 's/\(prompt\).*/\1 0/' "$TMP_TARGET"/syslinux.cfg
echo default chain.c32 freedos=kernel.sys > "$TMP_TARGET"/syslinux.cfg
cp $CHAIN_C32 "$TMP_TARGET"
touch "$TMP_TARGET"/autoexec.bat

umount "$TMP_TARGET"

sync

rm -rf "$TMP_SOURCE" "$TMP_TARGET" "$TMP_SYSLINUX"
