# Make floppy from CD-ROM
# Run this on another system from a running knoppix-cd.
# 
# License: GPL
#
# Copyright (c) 2004 by Fabian Franz.
# Thx to Kano for additions.

abort()
{
  echo "$@"
  exit 1
}

[ $UID -ne 0 ] && abort "Need root-rights."

# preparations
TMPDIR=/tmp/make_floppy.$$
mkdir $TMPDIR || abort "Fatal security error"

clean_exit()
{
  [ -d "$TMPDIR" ] && rm -rf $TMPDIR
}

trap "clean_exit" EXIT

ORIG_DIR=$(pwd)
cd $TMPDIR
mkdir floppy
mkdir miniroot
mkdir old_miniroot

[ -r /cdrom/boot/isolinux/minirt24.gz ] || abort "CD-ROM in /cdrom/ needed."

cp -f /cdrom/boot/isolinux/minirt24.gz .

# First create new miniroot

gunzip minirt24.gz
mv minirt24 minirt24.old
mount -o loop minirt24.old old_miniroot

dd if=/dev/zero of=minirt24 bs=4M count=1
mke2fs -L "KNOPPIX Miniroot" -b 1024 -N 8192 -O none -F -q -m 0 minirt24
sudo mount -o loop minirt24 miniroot

rm -rf old_miniroot/modules/scsi/
mkdir -p old_miniroot/modules/scsi
cp -af old_miniroot/* miniroot/

umount old_miniroot
umount miniroot

gzip -9 minirt24

# Now make the bootdisk

#BACKUP=$(date +%s)
#mv -f ~/.mtoolsrc ~/.mtoolsrc.$BACKUP
#echo "drive x: file=\"$TMPDIR/boot.img\"" > ~/.mtoolsrc
#mformat -C -t 40 -s 36 -h 2 x:
#rm -f ~/.mtoolsrc
#mv -f ~/.mtoolsrc.$BACKUP ~/.mtoolsrc
dd if=/dev/zero of=$TMPDIR/boot.img bs=1k count=1440
mkdosfs $TMPDIR/boot.img

mount -o loop boot.img floppy

FILES="boot.msg f2 f3 german.kbd isolinux.cfg linux24 logo.16"
(cd /cdrom/boot/isolinux/; cp -f $FILES $TMPDIR/floppy/)
cp minirt24.gz floppy/
mv floppy/isolinux.cfg floppy/syslinux.cfg
[ -n "$LANGUAGE" ] && perl -pi -e "s/lang=de/lang=$LANGUAGE/g" floppy/syslinux.cfg
[ -n "$LANGUAGE" ] && perl -pi -e "s/lang=us/lang=$LANGUAGE/g" floppy/syslinux.cfg
umount floppy
syslinux boot.img

cp -i boot.img $ORIG_DIR

echo "Die erzeugte Datei boot.img kann jetzt mittels des Befehls dd if=boot.img of=/dev/fd0 auf Diskette geschrieben werden."
