2 # shellcheck disable=SC2034
3 TEST_DESCRIPTION
="root filesystem on an encrypted LVM PV on a RAID-5"
5 KVERSION
=${KVERSION-$(uname -r)}
7 # Uncomment this to debug failures
8 #DEBUGFAIL="rd.shell rd.udev.log-priority=debug loglevel=70 systemd.log_target=kmsg"
9 #DEBUGFAIL="rd.break rd.shell rd.debug debug"
11 dd if=/dev
/zero of
="$TESTDIR"/marker.img bs
=1MiB count
=1
12 declare -a disk_args
=()
13 # shellcheck disable=SC2034
14 declare -i disk_index
=0
15 qemu_add_drive_args disk_index disk_args
"$TESTDIR"/marker.img marker
16 qemu_add_drive_args disk_index disk_args
"$TESTDIR"/raid-1.img raid1
17 qemu_add_drive_args disk_index disk_args
"$TESTDIR"/raid-2.img raid2
18 qemu_add_drive_args disk_index disk_args
"$TESTDIR"/raid-3.img raid3
22 -append "panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot root=/dev/dracut/root rd.auto rw rd.retry=10 console=ttyS0,115200n81 selinux=0 rd.shell=0 $DEBUGFAIL" \
23 -initrd "$TESTDIR"/initramfs.testing ||
return 1
25 grep -U --binary-files=binary
-F -m 1 -q dracut-root-block-success
"$TESTDIR"/marker.img
30 # Create what will eventually be our root filesystem onto an overlay
32 # shellcheck disable=SC2030
33 export initdir
=$TESTDIR/overlay
/source
34 # shellcheck disable=SC1090
35 .
"$basedir"/dracut-init.sh
38 mkdir
-p -- dev sys proc etc var
/run tmp
39 mkdir
-p root usr
/bin usr
/lib usr
/lib64 usr
/sbin
41 inst_multiple sh df free
ls shutdown poweroff stty
cat ps
ln ip \
42 mount dmesg dhclient mkdir
cp ping dhclient
dd sync
43 for _terminfodir
in /lib
/terminfo
/etc
/terminfo
/usr
/share
/terminfo
; do
44 [ -f ${_terminfodir}/l
/linux
] && break
46 inst_multiple
-o ${_terminfodir}/l
/linux
48 inst_simple
"${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
49 inst_simple
"${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh"
50 inst_binary
"${basedir}/dracut-util" "/usr/bin/dracut-util"
51 ln -s dracut-util
"${initdir}/usr/bin/dracut-getarg"
52 ln -s dracut-util
"${initdir}/usr/bin/dracut-getargs"
54 inst_simple
/etc
/os-release
55 inst .
/test-init.sh
/sbin
/init
56 inst
"$basedir/modules.d/35network-legacy/dhclient-script.sh" "/sbin/dhclient-script"
57 inst
"$basedir/modules.d/35network-legacy/ifup.sh" "/sbin/ifup"
59 inst_multiple
-o /lib
/systemd
/systemd-shutdown
60 find_binary plymouth
> /dev
/null
&& inst_multiple plymouth
61 cp -a /etc
/ld.so.conf
* "$initdir"/etc
62 ldconfig
-r "$initdir"
65 # second, install the files needed to make the root filesystem
67 # shellcheck disable=SC2031
68 # shellcheck disable=SC2030
69 export initdir
=$TESTDIR/overlay
70 # shellcheck disable=SC1090
71 .
"$basedir"/dracut-init.sh
72 inst_multiple sfdisk mke2fs poweroff
cp umount
dd sync
grep
73 inst_hook initqueue
01 .
/create-root.sh
74 inst_hook initqueue
/finished
01 .
/finished-false.sh
77 # create an initramfs that will create the target root filesystem.
78 # We do it this way so that we do not risk trashing the host mdraid
79 # devices, volume groups, encrypted partitions, etc.
80 "$basedir"/dracut.sh
-l -i "$TESTDIR"/overlay
/ \
81 -m "bash crypt lvm mdraid kernel-modules qemu" \
82 -d "piix ide-gd_mod ata_piix ext2 sd_mod" \
84 --no-hostonly-cmdline -N \
85 -f "$TESTDIR"/initramfs.makeroot
"$KVERSION" ||
return 1
86 rm -rf -- "$TESTDIR"/overlay
88 # Create the blank files to use as a root filesystem
89 dd if=/dev
/zero of
="$TESTDIR"/raid-1.img bs
=1MiB count
=40
90 dd if=/dev
/zero of
="$TESTDIR"/raid-2.img bs
=1MiB count
=40
91 dd if=/dev
/zero of
="$TESTDIR"/raid-3.img bs
=1MiB count
=40
92 dd if=/dev
/zero of
="$TESTDIR"/marker.img bs
=1MiB count
=1
93 declare -a disk_args
=()
94 # shellcheck disable=SC2034
95 declare -i disk_index
=0
96 qemu_add_drive_args disk_index disk_args
"$TESTDIR"/marker.img marker
97 qemu_add_drive_args disk_index disk_args
"$TESTDIR"/raid-1.img raid1
98 qemu_add_drive_args disk_index disk_args
"$TESTDIR"/raid-2.img raid2
99 qemu_add_drive_args disk_index disk_args
"$TESTDIR"/raid-3.img raid3
101 "$testdir"/run-qemu \
103 -append "root=/dev/cannotreach rw rootfstype=ext2 console=ttyS0,115200n81 selinux=0" \
104 -initrd "$TESTDIR"/initramfs.makeroot ||
return 1
105 grep -U --binary-files=binary
-F -m 1 -q dracut-root-block-created
"$TESTDIR"/marker.img ||
return 1
106 eval "$(grep -F -a -m 1 ID_FS_UUID "$TESTDIR"/marker.img)"
109 # shellcheck disable=SC2031
110 export initdir
=$TESTDIR/overlay
111 # shellcheck disable=SC1090
112 .
"$basedir"/dracut-init.sh
113 inst_multiple poweroff shutdown
dd
114 inst_hook shutdown-emergency
000 .
/hard-off.sh
115 inst_hook emergency
000 .
/hard-off.sh
116 inst .
/cryptroot-ask.sh
/sbin
/cryptroot-ask
117 mkdir
-p "$initdir"/etc
118 echo "testluks UUID=$ID_FS_UUID /etc/key" > "$initdir"/etc
/crypttab
119 #echo "luks-$ID_FS_UUID /dev/md0 none" > $initdir/etc/crypttab
120 echo -n "test" > "$initdir"/etc
/key
123 "$basedir"/dracut.sh
-l -i "$TESTDIR"/overlay
/ \
124 -o "plymouth network kernel-network-modules" \
126 -d "piix ide-gd_mod ata_piix ext2 sd_mod" \
127 --no-hostonly-cmdline -N \
128 -f "$TESTDIR"/initramfs.testing
"$KVERSION" ||
return 1
135 # shellcheck disable=SC1090
136 .
"$testdir"/test-functions