Replace TEST-20 with TEST-24 and remove TEST-24.
"21",
"22",
"23",
- "24",
"25",
"26",
"30",
"21",
"22",
"23",
- "24",
"25",
"26",
"30",
#!/bin/sh
trap 'poweroff -f' EXIT
-set -ex
-mdadm --create /dev/md0 --run --auto=yes --level=5 --raid-devices=3 /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_raid[123]
-# wait for the array to finish initializing, otherwise this sometimes fails
-# randomly.
-mdadm -W /dev/md0 || :
-printf test > keyfile
-cryptsetup -q luksFormat /dev/md0 /keyfile
-echo "The passphrase is test"
-cryptsetup luksOpen /dev/md0 dracut_crypt_test < /keyfile
-lvm pvcreate -ff -y /dev/mapper/dracut_crypt_test
-lvm vgcreate dracut /dev/mapper/dracut_crypt_test
-lvm lvcreate --yes -l 100%FREE -n root dracut
-lvm vgchange -ay
-mkfs.ext4 -q -L root /dev/dracut/root
+set -e
+
+# populate TEST_FSTYPE
+. /env
+
+if [ "$TEST_FSTYPE" = "zfs" ]; then
+ zpool create dracut /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_raid[12]
+ zfs create dracut/root
+elif [ "$TEST_FSTYPE" = "btrfs" ]; then
+ mkfs.btrfs -q -draid0 -mraid0 -L root /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_raid[12]
+ udevadm settle
+ btrfs device scan
+else
+ mdadm --create /dev/md0 --run --auto=yes --level=0 --raid-devices=2 /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_raid[12]
+ # wait for the array to finish initializing, otherwise this sometimes fails randomly.
+ mdadm -W /dev/md0 || :
+
+ if command -v cryptsetup > /dev/null; then
+ printf test > keyfile
+ cryptsetup -q luksFormat /dev/md0 /keyfile
+ echo "The passphrase is test"
+ cryptsetup luksOpen /dev/md0 dracut_crypt_test < /keyfile
+ lvm pvcreate -ff -y /dev/mapper/dracut_crypt_test
+ lvm vgcreate dracut /dev/mapper/dracut_crypt_test
+ else
+ lvm pvcreate -ff -y /dev/md0
+ lvm vgcreate dracut /dev/md0
+ fi
+
+ lvm lvcreate --yes -l 100%FREE -n root dracut
+ lvm vgchange -ay
+
+ eval "mkfs.${TEST_FSTYPE} -q -L root /dev/dracut/root"
+fi
+
+udevadm settle
mkdir -p /sysroot
-mount -t ext4 /dev/dracut/root /sysroot
+
+if [ "$TEST_FSTYPE" = "zfs" ]; then
+ zfs set mountpoint=/sysroot dracut/root
+ zfs get mounted dracut/root
+elif [ "$TEST_FSTYPE" = "btrfs" ]; then
+ mount -t "$TEST_FSTYPE" /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_raid1 /sysroot
+else
+ mount -t "$TEST_FSTYPE" /dev/dracut/root /sysroot
+fi
+
cp -a -t /sysroot /source/*
-mkdir -p /sysroot/run
umount /sysroot
-lvm lvchange -a n /dev/dracut/root
-udevadm settle
-cryptsetup luksClose /dev/mapper/dracut_crypt_test
-udevadm settle
-mdadm -W /dev/md0 || :
-udevadm settle
-mdadm --detail --export /dev/md0 | grep -F MD_UUID > /tmp/mduuid
-. /tmp/mduuid
-udevadm settle
-eval "$(udevadm info --query=property --name=/dev/md0 | while read -r line || [ -n "$line" ]; do [ "$line" != "${line#*ID_FS_UUID*}" ] && echo "$line"; done)"
+
+if [ -e /dev/md0 ]; then
+ lvm lvchange -a n /dev/dracut/root
+ udevadm settle
+ mdadm -W /dev/md0 || :
+ udevadm settle
+ mdadm --detail --export /dev/md0 | grep -F MD_UUID > /tmp/mduuid
+ . /tmp/mduuid
+ udevadm settle
+ eval "$(udevadm info --query=property --name=/dev/md0 | while read -r line || [ -n "$line" ]; do [ "$line" != "${line#*ID_FS_UUID*}" ] && echo "$line"; done)"
+fi
+
{
echo "dracut-root-block-created"
echo MD_UUID="$MD_UUID"
echo "ID_FS_UUID=$ID_FS_UUID"
} | dd oflag=direct,dsync of=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_marker status=none
+
sync
poweroff -f
#!/usr/bin/env bash
+
+[ -z "$TEST_FSTYPE" ] && TEST_FSTYPE="ext4"
+
# shellcheck disable=SC2034
-TEST_DESCRIPTION="root filesystem on an encrypted LVM PV on a RAID-5"
+TEST_DESCRIPTION="root filesystem on multiple device $TEST_FSTYPE"
test_check() {
- if ! type -p cryptsetup &> /dev/null; then
- echo "Test needs cryptsetup for crypt module... Skipping"
- return 1
- fi
-
- if ! type -p mdadm &> /dev/null; then
- echo "Test needs mdadm for mdraid module ... Skipping"
- return 1
- fi
+ (command -v zfs || (command -v mdadm && command -v "mkfs.$TEST_FSTYPE")) &> /dev/null
}
# Uncomment this to debug failures
-#DEBUGFAIL="rd.shell rd.udev.log-priority=debug loglevel=70 systemd.log_target=kmsg"
-#DEBUGFAIL="rd.break rd.shell rd.debug debug"
+#DEBUGFAIL="rd.shell"
test_run() {
declare -a disk_args=()
declare -i disk_index=0
qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker
qemu_add_drive disk_index disk_args "$TESTDIR"/raid-1.img raid1
qemu_add_drive disk_index disk_args "$TESTDIR"/raid-2.img raid2
- qemu_add_drive disk_index disk_args "$TESTDIR"/raid-3.img raid3
+
+ if [ "$TEST_FSTYPE" = "zfs" ]; then
+ TEST_KERNEL_CMDLINE+=" root=ZFS=dracut/root "
+ elif [ "$TEST_FSTYPE" = "btrfs" ]; then
+ TEST_KERNEL_CMDLINE+=" root=LABEL=root "
+ else
+ TEST_KERNEL_CMDLINE+=" root=/dev/dracut/root rd.auto"
+ fi
test_marker_reset
"$testdir"/run-qemu \
"${disk_args[@]}" \
- -append "$TEST_KERNEL_CMDLINE root=/dev/dracut/root rd.auto" \
+ -append "$TEST_KERNEL_CMDLINE ro" \
-initrd "$TESTDIR"/initramfs.testing || return 1
-
test_marker_check || return 1
}
-f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
+ # pass enviroment variables to make the root filesystem
+ echo "TEST_FSTYPE=${TEST_FSTYPE}" > "$TESTDIR"/overlay/env
+
+ # second, install the files needed to make the root filesystem
# create an initramfs that will create the target root filesystem.
# We do it this way so that we do not risk trashing the host mdraid
# devices, volume groups, encrypted partitions, etc.
+
+ # shellcheck disable=SC2046
"$DRACUT" -N -i "$TESTDIR"/overlay / \
--add-confdir test-makeroot \
- -a "bash crypt lvm mdraid" \
- -I "grep cryptsetup" \
+ -a "lvm mdraid" \
+ -I "grep" \
+ $(if command -v cryptsetup > /dev/null; then echo "-a crypt -I cryptsetup"; fi) \
+ $(if [ "$TEST_FSTYPE" = "zfs" ]; then echo "-a zfs"; else echo "-I mkfs.${TEST_FSTYPE}"; fi) \
-i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \
-f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
# Create the blank files to use as a root filesystem
declare -a disk_args=()
+ # shellcheck disable=SC2034
declare -i disk_index=0
qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker 1
qemu_add_drive disk_index disk_args "$TESTDIR"/raid-1.img raid1 1
qemu_add_drive disk_index disk_args "$TESTDIR"/raid-2.img raid2 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/raid-3.img raid3 1
"$testdir"/run-qemu \
"${disk_args[@]}" \
- -append "root=/dev/cannotreach quiet console=ttyS0,115200n81" \
+ -append "root=/dev/fakeroot quiet console=ttyS0,115200n81" \
-initrd "$TESTDIR"/initramfs.makeroot || return 1
+
test_marker_check dracut-root-block-created || return 1
- eval "$(grep -F -a -m 1 ID_FS_UUID "$TESTDIR"/marker.img)"
- echo "testluks UUID=$ID_FS_UUID /etc/key" > /tmp/crypttab
- echo -n "test" > /tmp/key
+ if command -v cryptsetup > /dev/null; then
+ eval "$(grep -F -a -m 1 ID_FS_UUID "$TESTDIR"/marker.img)"
+ echo "testluks UUID=$ID_FS_UUID /etc/key" > /tmp/crypttab
+ echo -n "test" > /tmp/key
+ fi
+ # shellcheck disable=SC2046
test_dracut \
- -a "crypt lvm mdraid" \
+ -a "lvm mdraid" \
+ $(if command -v cryptsetup > /dev/null; then echo "-a crypt"; fi) \
+ $(if [ "$TEST_FSTYPE" = "zfs" ]; then echo "-a zfs"; fi) \
-i "./cryptroot-ask.sh" "/sbin/cryptroot-ask" \
-i "/tmp/crypttab" "/etc/crypttab" \
-i "/tmp/key" "/etc/key" \
+++ /dev/null
--include ../Makefile.testdir
+++ /dev/null
-#!/bin/sh
-
-trap 'poweroff -f' EXIT
-set -e
-
-# populate TEST_FSTYPE
-. /env
-
-if [ "$TEST_FSTYPE" = "zfs" ]; then
- zpool create dracut /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_raid[12]
- zfs create dracut/root
-elif [ "$TEST_FSTYPE" = "btrfs" ]; then
- mkfs.btrfs -q -draid0 -mraid0 -L root /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_raid[12]
- udevadm settle
- btrfs device scan
-else
- mdadm --create /dev/md0 --run --auto=yes --level=0 --raid-devices=2 /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_raid[12]
- # wait for the array to finish initializing, otherwise this sometimes fails randomly.
- mdadm -W /dev/md0 || :
-
- lvm pvcreate -ff -y /dev/md0
- lvm vgcreate dracut /dev/md0
- lvm lvcreate --yes -l 100%FREE -n root dracut
- lvm vgchange -ay
-
- eval "mkfs.${TEST_FSTYPE} -q -L root /dev/dracut/root"
-fi
-
-udevadm settle
-mkdir -p /sysroot
-
-if [ "$TEST_FSTYPE" = "zfs" ]; then
- zfs set mountpoint=/sysroot dracut/root
- zfs get mounted dracut/root
-elif [ "$TEST_FSTYPE" = "btrfs" ]; then
- mount -t "$TEST_FSTYPE" /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_raid1 /sysroot
-else
- mount -t "$TEST_FSTYPE" /dev/dracut/root /sysroot
-fi
-
-cp -a -t /sysroot /source/*
-umount /sysroot
-
-if [ -e /dev/md0 ]; then
- lvm lvchange -a n /dev/dracut/root
- udevadm settle
- mdadm -W /dev/md0 || :
- udevadm settle
- mdadm --detail --export /dev/md0 | grep -F MD_UUID > /tmp/mduuid
- . /tmp/mduuid
- udevadm settle
-fi
-
-echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_marker status=none
-sync
-poweroff -f
+++ /dev/null
-#!/usr/bin/env bash
-
-[ -z "$TEST_FSTYPE" ] && TEST_FSTYPE="ext4"
-
-# shellcheck disable=SC2034
-TEST_DESCRIPTION="root filesystem on multiple device $TEST_FSTYPE"
-
-test_check() {
- (command -v zfs || (command -v mdadm && command -v "mkfs.$TEST_FSTYPE")) &> /dev/null
-}
-
-# Uncomment this to debug failures
-#DEBUGFAIL="rd.shell"
-test_run() {
- declare -a disk_args=()
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker
- qemu_add_drive disk_index disk_args "$TESTDIR"/raid-1.img raid1
- qemu_add_drive disk_index disk_args "$TESTDIR"/raid-2.img raid2
-
- if [ "$TEST_FSTYPE" = "zfs" ]; then
- TEST_KERNEL_CMDLINE+=" root=ZFS=dracut/root "
- elif [ "$TEST_FSTYPE" = "btrfs" ]; then
- TEST_KERNEL_CMDLINE+=" root=LABEL=root "
- else
- TEST_KERNEL_CMDLINE+=" root=/dev/dracut/root rd.auto"
- fi
-
- test_marker_reset
- "$testdir"/run-qemu \
- "${disk_args[@]}" \
- -append "$TEST_KERNEL_CMDLINE ro" \
- -initrd "$TESTDIR"/initramfs.testing
- test_marker_check || return 1
-}
-
-test_setup() {
- # Create what will eventually be our root filesystem onto an overlay
- "$DRACUT" -N --keep --tmpdir "$TESTDIR" \
- --add-confdir test-root \
- -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
- mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
-
- # pass enviroment variables to make the root filesystem
- echo "TEST_FSTYPE=${TEST_FSTYPE}" > "$TESTDIR"/overlay/env
-
- # second, install the files needed to make the root filesystem
- # create an initramfs that will create the target root filesystem.
- # We do it this way so that we do not risk trashing the host mdraid
- # devices, volume groups, encrypted partitions, etc.
-
- # shellcheck disable=SC2046
- "$DRACUT" -N -i "$TESTDIR"/overlay / \
- --add-confdir test-makeroot \
- -a "lvm mdraid" \
- $(if [ "$TEST_FSTYPE" = "zfs" ]; then echo "-a zfs"; else echo "-I mkfs.${TEST_FSTYPE}"; fi) \
- -i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
-
- # Create the blank files to use as a root filesystem
- declare -a disk_args=()
- # shellcheck disable=SC2034
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/raid-1.img raid1 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/raid-2.img raid2 1
-
- "$testdir"/run-qemu \
- "${disk_args[@]}" \
- -append "root=/dev/fakeroot quiet console=ttyS0,115200n81" \
- -initrd "$TESTDIR"/initramfs.makeroot || return 1
-
- test_marker_check dracut-root-block-created || return 1
-
- # shellcheck disable=SC2046
- test_dracut \
- -a "lvm mdraid" \
- $(if [ "$TEST_FSTYPE" = "zfs" ]; then echo "-a zfs"; fi) \
- "$TESTDIR"/initramfs.testing
-}
-
-# shellcheck disable=SC1090
-. "$testdir"/test-functions