#!/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