--- /dev/null
+#/bin/bash
+# Simple script that creates the tree to use for a new initrd
+# note that this is not intended to be pretty, nice or anything
+# of the sort. the important thing is working
+
+
+source /usr/libexec/initrd-functions
+
+INITRDOUT=$1
+if [ -z "$INITRDOUT" ]; then
+ echo "Please specify an initrd file to output"
+ exit 1
+fi
+
+tmpdir=$(mktemp -d)
+
+# executables that we have to have
+exe="/bin/bash /bin/mount /bin/mknod /bin/mkdir /sbin/modprobe /sbin/udevd /sbin/udevadm /sbin/nash"
+# and some things that are nice for debugging
+debugexe="/bin/ls /bin/cat /bin/ln /bin/ps /bin/grep /usr/bin/less"
+
+# install base files
+for binary in $exe $debugexe ; do
+ inst $binary $tmpdir
+done
+
+# install our files
+inst init $tmpdir/init
+inst switch_root $tmpdir/sbin/switch_root
+
+# FIXME: we don't install modules right now, but for the testing we're doing
+# everything is already built-in
+
+pushd $tmpdir >/dev/null
+find . |cpio -H newc -o |gzip -9 > $INITRDOUT
+popd >/dev/null
--- /dev/null
+#!/bin/bash
+
+emergency_shell()
+{
+ echo "Bug in initramfs /init detected. Dropping to a shell. Good luck!"
+ echo
+ bash
+}
+trap "emergency_shell" 0 2
+
+echo "Starting initrd..."
+export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export TERM=linux
+
+# /dev/console comes from the built-in initramfs crud in the kernel
+# someday, we may need to mkdir /dev first here
+exec > /dev/console 2>&1
+
+# mount some important things
+mkdir /proc
+mount -t proc /proc /proc
+mkdir /sys
+mount -t sysfs /sys /sys
+mount -t tmpfs -omode=0755 udev /dev
+
+# start up udev and trigger cold plugs
+/sbin/udevd --daemon
+/sbin/udevadm trigger
+# FIXME: should we really wait for the queue to settle or just try to
+# find the rootfs?
+/sbin/udevadm settle --timeout=30 || :
+
+
+NEWROOT=/sysroot
+# mount the rootfs
+mkdir $NEWROOT
+# FIXME: obviously we need to parse this from /proc/cmdline
+mount -o ro -t ext3 /dev/sda1 $NEWROOT
+
+# now we need to prepare to switchroot
+mount --bind /dev $NEWROOT/dev
+
+# FIXME: now for a bunch of boiler-plate mounts. really, we should have
+# some like /etc/fstab.sys that's provided by filesystem/initscripts
+# and then do mount -f /etc/fstab.sys -a
+mount -t proc /proc $NEWROOT/proc
+mount -t sysfs /sys $NEWROOT/sys
+
+# FIXME: load selinux policy
+
+# FIXME: nash die die die
+exec /sbin/switch_root
+# davej doesn't like initrd bugs
+echo "Something went very badly wrong in the initrd. Please "
+echo "file a bug against mkinitrd."
+exit 1