#!/bin/bash

export LANG=C

#First set up the md array
modprobe md_mod

echo y | mdadm --create /dev/md_d0 -a mdp2 -f --level=1 --raid-devices=2 /dev/hda missing

fdisk /dev/md_d0 <<-EOF
d
1
d
2
d
3
d
4
n
p
1

+128M
n
p
2


w
EOF

mke2fs -j /dev/md_d0p1

pvcreate -y -ff /dev/md_d0p2
vgcreate vg0 /dev/md_d0p2

VGS=$( vgdisplay /dev/vg0 | grep "VG Size" | awk '{ print $3 }' )

if [ ${VGS%.*} -ge 11 ]; then
    MULTIPART=1
    lvcreate -L2000 -nswap vg0
    lvcreate -L500 -nroot vg0
    lvcreate -L2000 -ntmp vg0
    lvcreate -L2000 -nusr vg0
    lvcreate -L2000 -nvar vg0
    lvcreate -L2000 -nhome vg0
elif [ ${VGS%.*} -ge 5 ]; then
    MULTIPART=1
    lvcreate -L500 -nswap vg0
    lvcreate -L500 -nroot vg0
    lvcreate -L500 -ntmp vg0
    lvcreate -L2000 -nusr vg0
    lvcreate -L500 -nvar vg0
    PE=$( vgdisplay /dev/vg0 | grep "Free  PE" | awk '{ print $5 }' )
    RPE=$( lvdisplay /dev/vg0/swap | grep "Current LE" | awk '{ print $3 }' )
    lvcreate -l$(( ${PE} - ${RPE} )) -nhome vg0
else
    MULTIPART=0
    lvcreate -L500 -nswap vg0
    PE=$( vgdisplay /dev/vg0 | grep "Free  PE" | awk '{ print $5 }' )
    RPE=$( lvdisplay /dev/vg0/swap | grep "Current LE" | awk '{ print $3 }' )
    lvcreate -l$(( ${PE} - ${RPE} )) -nhome vg0
fi

export MULTIPART

/etc/init.d/lvm start

mkswap /dev/vg0/swap
swapon /dev/vg0/swap
mke2fs -j /dev/vg0/root
mount /dev/vg0/root /mnt

cd /mnt
mkdir boot
mount /dev/md_d0p1 /mnt/boot

if [ $MULTIPART -eq 1 ]; then
    mke2fs -j /dev/vg0/tmp
    mkdir tmp
    mount /dev/vg0/tmp /mnt/tmp
    chmod 1777 tmp

    mke2fs -j /dev/vg0/usr
    mkdir usr
    mount /dev/vg0/usr /mnt/usr

    mke2fs -j /dev/vg0/var
    mkdir var
    mount /dev/vg0/var /mnt/var

    mke2fs -j /dev/vg0/home
    mkdir home
    mount /dev/vg0/home /mnt/home
fi

restore -r -f /cdrom/install.dmp
rm restoresymtable

cp -dp /etc/network/interfaces /mnt/etc/network/interfaces
cp -dpR /cdrom/root/.ssh /mnt/root

mkdir /mnt/cdrom
#FIXME - LOOK THIS UP IN MOUNTS
mount -n -o ro /dev/cdrom /mnt/cdrom

chroot /mnt <<CHROOT

echo "deb file:/cdrom/debian stable main" >/etc/apt/sources.list
echo "deb file:/cdrom/debian stable/updates main" >>/etc/apt/sources.list
apt-get update

apt-get install -y --allow-unauthenticated udev

CHROOT

umount /mnt/cdrom
umount /mnt/boot
rm /mnt/dev/null

kill `ps -ef | grep udevd | grep daemon | awk '{print $2}'`

mkdir -p /mnt/etc/mdadm
/usr/share/mdadm/mkconf | sed "s/md0/md_d0 auto=mdp2/" >/mnt/etc/mdadm/mdadm.conf

chroot /mnt <<CHROOT

if [ $MULTIPART -eq 1 ]; then
cat <<EOF >/etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>               <dump>  <pass>
/dev/vg0/root   /               ext3    errors=remount-ro       1       1
none            /proc           proc    defaults                0       0
/dev/vg0/swap   none            swap    sw                      0       0
/dev/md_d0p1    /boot           ext3    defaults                1       2
/dev/vg0/tmp    /tmp            ext3    defaults                0       2
/dev/vg0/usr    /usr            ext3    defaults                1       2
/dev/vg0/var    /var            ext3    defaults                1       2
/dev/vg0/home   /home           ext3    defaults                1       2
/dev/fd0        /floppy         auto    user,noauto             0       0
/dev/cdrom      /cdrom          iso9660 ro,user,noauto          0       0
EOF
else
cat <<EOF >/etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>               <dump>  <pass>
/dev/vg0/root   /               ext3    errors=remount-ro       1       1
none            /proc           proc    defaults                0       0
/dev/vg0/swap   none            swap    sw                      0       0
/dev/md_d0p1    /boot           ext3    defaults                1       2
/dev/fd0        /floppy         auto    user,noauto             0       0
/dev/cdrom      /cdrom          iso9660 ro,user,noauto          0       0
EOF
fi

mount /proc
mount -t sysfs none /sys

RUNLEVEL=S PREVLEVEL=N /etc/init.d/udev start

mount /cdrom
apt-get update
apt-get install -y --allow-unauthenticated ifupdown grub ssh netbase nvi dhcp-client lvm2 mdadm <<EOF
EOF

mount /boot
/etc/init.d/lvm start

rm -f /var/lib/mdadm/CONF-UNCHECKED

cat <<-EOF >/etc/kernel-img.conf
link_in_boot = Yes
do_symlinks = Yes
do_initrd = Yes
relative_links = Yes
EOF

apt-get -y --allow-unauthenticated -f install linux-image-2.6-486

mkdir -p /boot/grub

cat <<EOF >/boot/grub/menu.lst
#
# Sample boot menu configuration file
#

# Boot automatically after 30 secs.
timeout 10

# By default, boot the first entry.
default 0

# Fallback to the second entry.
fallback 1 2 3

# For booting Linux
title Linux-(hd0)
    root (hd0,0)
    kernel /vmlinuz root=/dev/vg0/root
    initrd /initrd.img

# For booting Linux
title Linux-(hd1)
    root (hd1,0)
    kernel /vmlinuz root=/dev/vg0/root
    initrd /initrd.img

# For booting Linux
title LinuxOLD-(hd0)
    root (hd0,0)
    kernel /vmlinuz.old root=/dev/vg0/root
    initrd /initrd.img.old

# For booting Linux
title LinuxOLD-(hd1)
    root (hd1,0)
    kernel /vmlinuz.old root=/dev/vg0/root
    initrd /initrd.img.old

# For installing GRUB into the hard disk
title Install GRUB into (hd0)
    root    (hd0,0)
    setup   (hd0)

# For installing GRUB into the hard disk
title Install GRUB into (hd1)
    root    (hd1,0)
    setup   (hd1)

# Change the colors.
title Change the colors
    color light-green/brown blink-red/blue
EOF

cp /usr/lib/grub/i386-pc/stage1 /boot/grub/
cp /usr/lib/grub/i386-pc/stage2 /boot/grub/
cp /usr/lib/grub/i386-pc/*_stage1_5 /boot/grub/

/etc/init.d/udev stop
/etc/init.d/mdadm stop

umount /boot
umount /proc
umount /cdrom
umount /sys

CHROOT

umount /mnt/home
umount /mnt/tmp
umount /mnt/usr
umount /mnt/var
umount /mnt/dev/.static/dev
umount /mnt/dev

cd /

umount /mnt
swapoff -a
/etc/init.d/lvm stop
mdadm -S /dev/md_d0
rmmod raid1
rmmod md_mod

mknod /dev/hda1 b 3 1
rmmod ide_disk
modprobe ide_disk

/usr/sbin/grub --batch --no-config-file <<EOF
device (hd0) /dev/hda
root (hd0,0)
setup (hd0)
quit
EOF

rm /dev/hda1

exit 0

