summaryrefslogtreecommitdiff
path: root/tools/testing/selftests/rcutorture/doc/initrd.txt
blob: 933b4fd1232715eab9ae286889786f712bdfb351 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
The rcutorture scripting tools automatically create the needed initrd
directory using dracut.  Failing that, this tool will create an initrd
containing a single statically linked binary named "init" that loops
over a very long sleep() call.  In both cases, this creation is done
by tools/testing/selftests/rcutorture/bin/mkinitrd.sh.

However, if you are attempting to run rcutorture on a system that does
not have dracut installed, and if you don't like the notion of static
linking, you might wish to press an existing initrd into service:

------------------------------------------------------------------------
cd tools/testing/selftests/rcutorture
zcat /initrd.img > /tmp/initrd.img.zcat
mkdir initrd
cd initrd
cpio -id < /tmp/initrd.img.zcat
# Manually verify that initrd contains needed binaries and libraries.
------------------------------------------------------------------------

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

while :
do
	sleep 10
done
------------------------------------------------------------------------

This approach also allows most of the binaries and libraries in the
initrd filesystem to be dispensed with, which can save significant
space in rcutorture's "res" directory.