1#!/bin/bash
2#
3# Create an initrd directory if one does not already exist.
4#
5# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by
7# the Free Software Foundation; either version 2 of the License, or
8# (at your option) any later version.
9#
10# This program is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13# GNU General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with this program; if not, you can access it online at
17# http://www.gnu.org/licenses/gpl-2.0.html.
18#
19# Copyright (C) IBM Corporation, 2013
20#
21# Author: Connor Shu <Connor.Shu@ibm.com>
22
23D=tools/testing/selftests/rcutorture
24
25# Prerequisite checks
26[ -z "$D" ] && echo >&2 "No argument supplied" && exit 1
27if [ ! -d "$D" ]; then
28    echo >&2 "$D does not exist: Malformed kernel source tree?"
29    exit 1
30fi
31if [ -d "$D/initrd" ]; then
32    echo "$D/initrd already exists, no need to create it"
33    exit 0
34fi
35
36T=${TMPDIR-/tmp}/mkinitrd.sh.$$
37trap 'rm -rf $T' 0 2
38mkdir $T
39
40cat > $T/init << '__EOF___'
41#!/bin/sh
42while :
43do
44	sleep 1000000
45done
46__EOF___
47
48# Try using dracut to create initrd
49command -v dracut >/dev/null 2>&1 || { echo >&2 "Dracut not installed"; exit 1; }
50echo Creating $D/initrd using dracut.
51
52# Filesystem creation
53dracut --force --no-hostonly --no-hostonly-cmdline --module "base" $T/initramfs.img
54cd $D
55mkdir initrd
56cd initrd
57zcat $T/initramfs.img | cpio -id
58cp $T/init init
59echo Done creating $D/initrd using dracut
60exit 0
61