This document describes one way to create the initrd directory hierarchy
in order to allow an initrd to be built into your kernel.  The trick
here is to steal the initrd file used on your Linux laptop, Ubuntu in
this case.  There are probably much better ways of doing this.

That said, here are the commands:

------------------------------------------------------------------------
cd tools/testing/selftests/rcutorture
zcat /initrd.img > /tmp/initrd.img.zcat
mkdir initrd
cd initrd
cpio -id < /tmp/initrd.img.zcat
------------------------------------------------------------------------

Interestingly enough, if you are running rcutorture, you don't really
need userspace in many cases.  Running without userspace has the
advantage of allowing you to test your kernel independently of the
distro in place, the root-filesystem layout, and so on.  To make this
happen, put the following script in the initrd's tree's "/init" file,
with 0755 mode.

------------------------------------------------------------------------
#!/bin/sh

[ -d /dev ] || mkdir -m 0755 /dev
[ -d /root ] || mkdir -m 0700 /root
[ -d /sys ] || mkdir /sys
[ -d /proc ] || mkdir /proc
[ -d /tmp ] || mkdir /tmp
mkdir -p /var/lock
mount -t sysfs -o nodev,noexec,nosuid sysfs /sys
mount -t proc -o nodev,noexec,nosuid proc /proc
# Some things don't work properly without /etc/mtab.
ln -sf /proc/mounts /etc/mtab

# Note that this only becomes /dev on the real filesystem if udev's scripts
# are used; which they will be, but it's worth pointing out
if ! mount -t devtmpfs -o mode=0755 udev /dev; then
	echo "W: devtmpfs not available, falling back to tmpfs for /dev"
	mount -t tmpfs -o mode=0755 udev /dev
	[ -e /dev/console ] || mknod --mode=600 /dev/console c 5 1
	[ -e /dev/kmsg ] || mknod --mode=644 /dev/kmsg c 1 11
	[ -e /dev/null ] || mknod --mode=666 /dev/null c 1 3
fi

mkdir /dev/pts
mount -t devpts -o noexec,nosuid,gid=5,mode=0620 devpts /dev/pts || true
mount -t tmpfs -o "nosuid,size=20%,mode=0755" tmpfs /run
mkdir /run/initramfs
# compatibility symlink for the pre-oneiric locations
ln -s /run/initramfs /dev/.initramfs

# Export relevant variables
export ROOT=
export ROOTDELAY=
export ROOTFLAGS=
export ROOTFSTYPE=
export IP=
export BOOT=
export BOOTIF=
export UBIMTD=
export break=
export init=/sbin/init
export quiet=n
export readonly=y
export rootmnt=/root
export debug=
export panic=
export blacklist=
export resume=
export resume_offset=
export recovery=

for i in /sys/devices/system/cpu/cpu*/online
do
	case $i in
	'/sys/devices/system/cpu/cpu0/online')
		;;
	'/sys/devices/system/cpu/cpu*/online')
		;;
	*)
		echo 1 > $i
		;;
	esac
done

while :
do
	sleep 10
done
