#!/bin/sh

if [ x$MBASE = x ]
then
    echo '$MBASE not defined!'
    exit 1
fi

# base

mkdir -p $MBASE/tmp/
rm -rf  $MBASE/tmp/debian
mkdir -p $MBASE/tmp/debian
umount $MBASE/debian/debian/proc
cd $MBASE/debian/debian
cp -ax * $MBASE/tmp/debian
rm -rf $MBASE/tmp/debian/tmp/*
rm -rf $MBASE/tmp/debian/usr/include/
rm -rf $MBASE/tmp/debian/usr/share/doc/
rm -rf $MBASE/tmp/debian/usr/share/locale/
rm -rf $MBASE/tmp/debian/usr/share/man/
rm -rf $MBASE/tmp/debian/var/cache/apt/archives/*.deb
rm -rf $MBASE/tmp/debian/var/cache/apt/archives/partial/*.deb
find $MBASE/tmp/debian/var/log -type f -exec rm {} \;
echo "Volatile" > $MBASE/tmp/debian/var/log/dmesg

cd $MBASE/tmp/debian
tar cfz $MBASE/debian/debian.tar.gz .

genext2fs -b 262144 -d $MBASE/tmp/debian $MBASE/debian/debian.ext2


# dir/files that should be on RW storage or ramdisk

RWD="root var/lib/dhcp var/lib/dhcp3 var/lib/urandom etc/udev"
RWF="etc/adjtime etc/issue etc/issue.net etc/mtab~ etc/resolv.conf dev/xconsole"

RAM="tmp var/lock var/log var/mail var/run var/spool var/tmp var/lib/logrotate"

cd $MBASE/tmp/debian/
mkdir rw
mkdir ram

tar c $RAM | ( cd ram ; tar x )
for i in $RAM
do
  mkdir -p "ram/$i"
  rm -rf "$i"
  ln -sf "/ram/$i" "$i"
done

# special cases
rm etc/mtab
ln -s /proc/mounts etc/mtab

rm -f etc/network/run
ln -s /dev/shm/network etc/network/run

mkdir -p ram/dev
ln -sf /ram/dev/log dev/log 

# ro root
cd $MBASE/tmp/debian
mkdir old-root
rm etc/rcS.d/S10checkroot.sh

# generates image for aufs now
cd ..
rm -rf debian-ram
mv debian/ram debian-ram

cd debian-ram
tar cfz ../debian/ram.tar.gz .

cd $MBASE/tmp/debian
mkdir ram
tar cfz $MBASE/debian/debian-aufs.tar.gz .
genext2fs -b 262144 -d $MBASE/tmp/debian $MBASE/debian/debian-aufs.ext2
$MBASE/kernel/cloop-2.624/create_compressed_fs $MBASE/debian/debian-aufs.ext2 $MBASE/debian/debian-aufs.ext2.cloop

# continues for rw image
cd $MBASE/tmp/debian
tar c $RWD | ( cd rw ; tar x )
for i in $RWD
do
  mkdir -p "rw/$i"
  rm -rf "$i"
  ln -sf "/rw/$i" "$i"
done

for i in $RWF
do
  mkdir -p rw/`dirname $i`
  mv "$i" rw/`dirname $i`
  ln -sf "/rw/$i" "$i"
done

# create the tarballs
cd ..
rm -rf debian-rw
mv debian/rw debian-rw
cd $MBASE/pool/debian-rw
cp -a * $MBASE/tmp/debian
cd $MBASE/tmp/debian

mkdir rw
tar cfz $MBASE/debian/debian-rw-hda.tar.gz .
genext2fs -b 262144 -d $MBASE/tmp/debian $MBASE/debian/debian-rw-hda.ext2

cd $MBASE/tmp/debian-rw
tar cfz $MBASE/debian/debian-rw-hdb.tar.gz .
genext2fs -b 262144 -d $MBASE/tmp/debian-rw $MBASE/debian/debian-rw-hdb.ext2

# cloop

$MBASE/kernel/cloop-2.624/create_compressed_fs $MBASE/debian/debian-rw-hda.ext2 $MBASE/debian/debian-rw-hda.ext2.cloop

# buter

rm -rf  $MBASE/tmp/buter
mkdir -p $MBASE/tmp/buter
cd $MBASE/buter
cp -ax * $MBASE/tmp/buter/
rm -f $MBASE/tmp/buter/dev/cloop $MBASE/tmp/buter/dev/cloop1
mknod $MBASE/tmp/buter/dev/cloop b 240 0
mknod $MBASE/tmp/buter/dev/cloop1 b 240 1

cp $MBASE/debian/debian-rw-hda.ext2.cloop $MBASE/tmp/buter/
rm -f $MBASE/tmp/buter/sbin/init
cp $MBASE/pool/buter-cloop/init $MBASE/tmp/buter/sbin/init
cd $MBASE/tmp/buter/
tar cfz $MBASE/debian/buter-cloop.tar.gz .
genext2fs -b 262144 -d $MBASE/tmp/buter $MBASE/debian/buter-cloop.ext2

cp $MBASE/pool/buter-aufs/init $MBASE/tmp/buter/sbin/init
cd $MBASE/tmp/buter/
tar cfz $MBASE/debian/buter-cloop.tar.gz .
genext2fs -b 262144 -d $MBASE/tmp/buter $MBASE/debian/buter-aufs.ext2





