#!/bin/sh

set -e

# Put here the path to stage file
SOURCE="stage3-x86-2004.3.tar.bz2"

# Size in megabytes that you want to be FREE on filesystem.
# Please, re-read above!
SIZE=50

# Name of the file that you want fs to be put into
OUTFILE=../Gentoo.img

# type of the filesystem
FSTYPE=reiserfs
FSCOMMAND="mkreiserfs -s513 -f -f"

if [ ! -r "${SOURCE}" ]; then
	echo "Cannot find stage file!"
	exit 1
fi

echo "Build filesystem in ${OUTFILE} from ${SOURCE}..."
mkdir -p TMP

echo "Installing stage..."
tar -xj -C TMP -f "${SOURCE}"


echo "Set clock to local..."
sed -e 's/CLOCK="UTC"/CLOCK="local"/' TMP/etc/rc.conf > TMP/etc/rc.conf.new
mv TMP/etc/rc.conf.new TMP/etc/rc.conf

echo "Add custom files..."
for f in `ls ADD/*.tgz`; do
	echo "Install ${f}..."
	tar -xvz -C TMP -f "${f}" 1>>/dev/null
done
rm -rf TMP/install
cp -a ADD/fstab TMP/etc
cp -a ADD/syslog.conf TMP/etc
cp -a ../.common/MODULES/ TMP/lib/modules/
cp -a ../.common/MODULES/System.map TMP/boot/
cp ../.common/rc.dinouml TMP/etc/conf.d/local.start
echo "sc1:12345:respawn:/sbin/agetty -L ttyS0 9600 vt100" >> TMP/etc/inittab
echo "ttyS0" >> TMP/etc/securetty
echo "DinoUML" > TMP/etc/hostname

echo "Add user catab..."
chroot TMP /usr/sbin/useradd -g users -d /home/catab \
	-m -p '$1$N1v0COkT$6DrqjT8LLnKMajUL3gv230' -s /bin/sh catab

i=0
for dev in a b c d; do
	echo "Make ubd${dev} (mknod /dev/ubd${dev} b 98 ${i})..."
	mknod TMP/dev/ubd${dev} b 98 ${i}
	i=$[${i}+16]
done
chroot TMP ldconfig

echo "Set root pass..."
chroot TMP passwd

echo "Put everything in ${OUTFILE}..."
DU=`du -ms TMP | cut -f1`
echo "DU=${DU}"
TOTAL=$[${SIZE}+${DU}]
echo "TOTAL=${TOTAL}"

echo "Make fsfile..."
rm -f "${OUTFILE}"
dd if=/dev/zero of="${OUTFILE}" bs=1M seek=${TOTAL} count=0

echo "Make fs..."
${FSCOMMAND} "${OUTFILE}"

echo "Mount file..."
mkdir -p TMP.loop
mount "${OUTFILE}" TMP.loop -t${FSTYPE} -oloop

echo "Copy files..."
cp -a TMP/* TMP.loop

echo "Umount file..."
umount TMP.loop
rmdir TMP.loop

rm -rf TMP
