xref: /linux/tools/testing/selftests/rcutorture/doc/initrd.txt (revision ca55b2fef3a9373fcfc30f82fd26bc7fccbda732)
1This document describes one way to create the initrd directory hierarchy
2in order to allow an initrd to be built into your kernel.  The trick
3here is to steal the initrd file used on your Linux laptop, Ubuntu in
4this case.  There are probably much better ways of doing this.
5
6That said, here are the commands:
7
8------------------------------------------------------------------------
9cd tools/testing/selftests/rcutorture
10zcat /initrd.img > /tmp/initrd.img.zcat
11mkdir initrd
12cd initrd
13cpio -id < /tmp/initrd.img.zcat
14------------------------------------------------------------------------
15
16Interestingly enough, if you are running rcutorture, you don't really
17need userspace in many cases.  Running without userspace has the
18advantage of allowing you to test your kernel independently of the
19distro in place, the root-filesystem layout, and so on.  To make this
20happen, put the following script in the initrd's tree's "/init" file,
21with 0755 mode.
22
23------------------------------------------------------------------------
24#!/bin/sh
25
26[ -d /dev ] || mkdir -m 0755 /dev
27[ -d /root ] || mkdir -m 0700 /root
28[ -d /sys ] || mkdir /sys
29[ -d /proc ] || mkdir /proc
30[ -d /tmp ] || mkdir /tmp
31mkdir -p /var/lock
32mount -t sysfs -o nodev,noexec,nosuid sysfs /sys
33mount -t proc -o nodev,noexec,nosuid proc /proc
34# Some things don't work properly without /etc/mtab.
35ln -sf /proc/mounts /etc/mtab
36
37# Note that this only becomes /dev on the real filesystem if udev's scripts
38# are used; which they will be, but it's worth pointing out
39if ! mount -t devtmpfs -o mode=0755 udev /dev; then
40	echo "W: devtmpfs not available, falling back to tmpfs for /dev"
41	mount -t tmpfs -o mode=0755 udev /dev
42	[ -e /dev/console ] || mknod --mode=600 /dev/console c 5 1
43	[ -e /dev/kmsg ] || mknod --mode=644 /dev/kmsg c 1 11
44	[ -e /dev/null ] || mknod --mode=666 /dev/null c 1 3
45fi
46
47mkdir /dev/pts
48mount -t devpts -o noexec,nosuid,gid=5,mode=0620 devpts /dev/pts || true
49mount -t tmpfs -o "nosuid,size=20%,mode=0755" tmpfs /run
50mkdir /run/initramfs
51# compatibility symlink for the pre-oneiric locations
52ln -s /run/initramfs /dev/.initramfs
53
54# Export relevant variables
55export ROOT=
56export ROOTDELAY=
57export ROOTFLAGS=
58export ROOTFSTYPE=
59export IP=
60export BOOT=
61export BOOTIF=
62export UBIMTD=
63export break=
64export init=/sbin/init
65export quiet=n
66export readonly=y
67export rootmnt=/root
68export debug=
69export panic=
70export blacklist=
71export resume=
72export resume_offset=
73export recovery=
74
75for i in /sys/devices/system/cpu/cpu*/online
76do
77	case $i in
78	'/sys/devices/system/cpu/cpu0/online')
79		;;
80	'/sys/devices/system/cpu/cpu*/online')
81		;;
82	*)
83		echo 1 > $i
84		;;
85	esac
86done
87
88while :
89do
90	sleep 10
91done
92