#!/bin/bash

function usage {
	echo "Usage: $(basename $0) IMAGE DEVICE"
}

function check_device {
	if [ ! -b "$1" ] || [ ! -w "$1" ]; then
		echo "Error opening device '$1'."
		echo "Device should be a writable block device."
		exit 1
	fi
}

if [ $# -ne 2 ]; then
	usage
	exit 1
fi

IMAGE=$1
DEV=$2

if [ ! -f "$IMAGE" ]; then
	echo "Image '$IMAGE' does not exist."
	exit 1
fi

check_device $DEV

HS=$(fdisk -l $DEV | egrep ".*heads.*sectors.*cylinders")
HEADS=$(echo $HS | cut -d' ' -f1)
SECTORS=$(echo $HS | cut -d' ' -f3)

echo "Preparing $DEV, this may take several minutes."
mkdiskimage -4 $DEV 0 $HEADS $SECTORS
if [ $? -ne 0 ]; then
	echo "Error running mkdiskimage."
	exit 1
fi

echo -n "Remove and reinsert the device, then press Enter: "
read
echo -n "Enter the new device name [$DEV]: "
read NEWDEV
if [ -n "$NEWDEV" ]; then
	DEV=$NEWDEV
fi
check_device $DEV

echo -n "Mounting image and device..."
mkdir /tmp/image-$$
mount -o loop $IMAGE /tmp/image-$$
if [ $? -ne 0 ]; then
	echo -e "\nError mounting image."
	exit 1;
fi
mkdir /tmp/dev-$$
mount $DEV\4 /tmp/dev-$$
if [ $? -ne 0 ]; then
	echo -e "\nError mounting device."
	exit 1;
fi
echo "Done"

echo -n "Copying image..."
cp -rf /tmp/image-$$/* /tmp/dev-$$
sync
echo "Done"

echo -n "Installing syslinux..."
syslinux $DEV\4
echo "Done"

echo "Cleaning up..."
umount /tmp/image-$$
rmdir /tmp/image-$$
umount /tmp/dev-$$
rmdir /tmp/dev-$$
echo "Done"
