#!/bin/bash
# $Id: make_bootfs,v 1.22 2009-02-07 08:04:14 tim Exp $

if [ $# -ne 1 ]; then
    echo "You must supply the kernel image"
    exit 1
fi

KERNEL=$1
TMPDIR1=tmp-build1
#atl2-modules for eeepc
REQUIRED_PKGS="linux-image-${KERNEL} aufs-modules-${KERNEL} atl2-modules-${KERNEL} console-common ssh nvi dhcp3-client ifupdown net-tools lvm2 netbase dump grub procps mdadm gawk kpartx"

rm -fr ${TMPDIR1}
mkdir ${TMPDIR1}

cd ${TMPDIR1}
restore -r -f ../install.dmp
rm -f restoresymtable
cd ..

cp install.dmp ${TMPDIR1}
cp -dpR aptmirror/debian ${TMPDIR1}/debian
cp -dpR isolinux ${TMPDIR1}
cp serial ${TMPDIR1}/serial

echo "deb file:/debian stable main" >${TMPDIR1}/etc/apt/sources.list
echo "deb file:/debian stable/updates main" >>${TMPDIR1}/etc/apt/sources.list

cp scripts/setup.sh ${TMPDIR1}

#setup kernel-img.conf
cat >${TMPDIR1}/etc/kernel-img.conf <<EOF
link_in_boot = Yes
do_symlinks = Yes
do_initrd = Yes
EOF

#Set up fstab
cat >${TMPDIR1}/etc/fstab <<EOF
# /etc/fstab: static file system information.
#
# <file system>	<mount point>	<type>	<options>		<dump>	<pass>
ramdisk		/		tempfs	defaults		0	0
none		/proc		proc	defaults		0	0
EOF

#Needed for ssh install
mknod ${TMPDIR1}/dev/random c 1 8
mknod ${TMPDIR1}/dev/urandom c 1 9
mknod ${TMPDIR1}/dev/null c 1 3
mknod ${TMPDIR1}/dev/console c 5 1

#Note we need that <<EOF EOF bit otherwise apt-get clean etc do not get run in the CHROOT
chroot ${TMPDIR1} /bin/bash <<CHROOT
export LANG=C

#Install packages and a keymap
mount -t proc none /proc
apt-get update
apt-get --allow-unauthenticated -y install ${REQUIRED_PKGS} <<EOF
EOF
apt-get clean
install-keymap uk
#We do not want mdadm or lvm to start automatically
update-rc.d -f mdadm remove
update-rc.d -f mdadm-raid remove
update-rc.d -f lvm2 remove
/etc/init.d/mdadm stop
umount /proc
CHROOT

rm -fr ${TMPDIR1}/dev/*

#setup hostname
echo install >${TMPDIR1}/etc/hostname

#Set localtime to Europe/London
rm ${TMPDIR1}/etc/localtime
ln -s /usr/share/zoneinfo/Europe/London ${TMPDIR1}/etc/localtime
echo Europe/London >${TMPDIR1}/etc/timezone

#setup hosts
cat >${TMPDIR1}/etc/hosts <<EOF
127.0.0.1       localhost

# The following lines are desirable for IPv6 capable hosts
# (added automatically by netbase upgrade)

::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
EOF

#cleanup some empty directories and other junk
rm -f ${TMPDIR1}/var/lib/dpkg/available-old
rm -f ${TMPDIR1}/var/lib/dpkg/status-old
rm -fr ${TMPDIR1}/dev/.udev
rm -f ${TMPDIR1}/var/backups/*

#Set up ssh rsa login
if [ ! -d ${TMPDIR1}/root/.ssh ]; then
    mkdir ${TMPDIR1}/root/.ssh;
fi
cat >${TMPDIR1}/root/.ssh/authorized_keys <<EOF
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEArogQDhg6ZdnkZ4/STRjJxRpTjxh1cKHnsdP51irYg4LrGh96ZBKK+OspctfLmRSLETl2QluXxGCa4ZdHgIZBcOr8QirRJUrgJOIRWY/3SCs5rdrPAoKVgdHm0x+E/iEZC8+52zE84yMwYiblP6fCFhWdbPyjZyuG6OOH+KLR1Jk= tim@feynman.woodall.me.uk
EOF

echo "PasswordAuthentication no" >>/etc/ssh/sshd_config
sed "s/\( *HashKnownHosts *\)yes/\1no/" /etc/ssh/ssh_config >/etc/ssh/ssh_config.tmp
mv /etc/ssh/ssh_config.tmp /etc/ssh/ssh_config

rm -f ${TMPDIR1}/boot/*

mkdir ${TMPDIR1}/build
cp Makefile ${TMPDIR1}/build/
cp -dpR scripts ${TMPDIR1}/build/

mkisofs -R -o isoboot.iso -b isolinux/isolinux.bin -no-emul-boot -boot-info-table -c isolinux/boot.catalog ${TMPDIR1}

rm -fr ${TMPDIR1}

exit 0

