#!/bin/ash

# create initrd image with:
#  find . | grep -v "~" | cpio -c -o | gzip > ../initrd.img

set -x

PATH=/sbin:/bin
export PATH

echo "Making directories"
mkdir -p /proc
mkdir -p /sys
mkdir -p /sysroot
mkdir -p /etc
mkdir -p /dev
mkdir -p /loopfs

echo "Mounting /proc filesystem"
mount -t proc /proc /proc

echo "Mounting /sys"
mount -t sysfs none /sys

echo "Populating dev directory"
mount -o mode=0755 -t tmpfs none /dev
mknod /dev/console c 5 1
mknod /dev/null c 1 3
mknod /dev/zero c 1 5
mknod /dev/ram c 1 1
mknod /dev/systty c 4 0
mknod /dev/tty1 c 4 1
mknod /dev/tty2 c 4 2
mknod /dev/tty3 c 4 3
mknod /dev/tty4 c 4 4
mknod /dev/urandom c 1 9
mknod /dev/random c 1 8
mkdir /dev/pts
mkdir /dev/shm

echo "Loading ethernet modules"

if [ `uname -m` == "x86_64" ]; then
    moddir=/modules64
    insmod ${moddir}/r8169.ko
else
    moddir=/modules
    insmod ${moddir}/mii.ko
    insmod ${moddir}/e100.ko
fi

echo "Starting dhcp client"
# use mac address to seed random number generator
ifconfig eth0 > /dev/urandom
udhcpc --foreground --now --quit --script=/xray/udhcpc-script

echo "Starting nfs modules"
insmod ${moddir}/sunrpc.ko
insmod ${moddir}/lockd.ko
insmod ${moddir}/nfs.ko

echo "Mounting root device"
server=XXX.XXX.XXX.XXX
# really evil way to find IP address of computer :-(
# dns doesn't work...
dir=`ifconfig eth0 | grep "inet addr" | cut -d " " -f 12 | cut -d ":" -f 2`
mount -t nfs -o nolock ${server}:/mnt/${dir} /sysroot
mount -o bind /dev /sysroot/dev

cd /sysroot
pivot_root . initrd

umount /initrd/proc
umount /initrd/sys
rm /initrd/modules/*
rm /initrd/modules64/*
rm /initrd/bin/busybox

exec /sbin/init 3
