diff options
Diffstat (limited to '')
46 files changed, 234 insertions, 212 deletions
diff --git a/test/Makefile b/test/Makefile index 518e7d6..c19f0c2 100644 --- a/test/Makefile +++ b/test/Makefile @@ -19,4 +19,3 @@ clean: done all: - diff --git a/test/TEST-01-BASIC/test.sh b/test/TEST-01-BASIC/test.sh index 252c3f9..78fa730 100755 --- a/test/TEST-01-BASIC/test.sh +++ b/test/TEST-01-BASIC/test.sh @@ -14,7 +14,7 @@ test_run() { test_marker_reset "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append 'rw "root=LABEL= rdinit=/bin/sh" rd.retry=3' \ + -append "$TEST_KERNEL_CMDLINE rw \"root=LABEL= rdinit=/bin/sh\" rd.retry=3" \ -initrd "$TESTDIR"/initramfs.testing || return 1 test_marker_check || return 1 @@ -32,7 +32,7 @@ test_setup() { # We do it this way so that we do not risk trashing the host mdraid # devices, volume groups, encrypted partitions, etc. "$DRACUT" -N -l -i "$TESTDIR"/overlay / \ - -m "test-makeroot" \ + -a "test-makeroot" \ -i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 rm -rf -- "$TESTDIR"/overlay @@ -45,7 +45,7 @@ test_setup() { # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81 selinux=0" \ + -append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 test_marker_check dracut-root-block-created || return 1 rm -- "$TESTDIR"/marker.img diff --git a/test/TEST-02-SYSTEMD/test.sh b/test/TEST-02-SYSTEMD/test.sh index 4d48fd2..0a7d05a 100755 --- a/test/TEST-02-SYSTEMD/test.sh +++ b/test/TEST-02-SYSTEMD/test.sh @@ -17,7 +17,7 @@ test_run() { test_marker_reset "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=LABEL=dracut rw systemd.log_target=console rd.retry=3 init=/sbin/init" \ + -append "$TEST_KERNEL_CMDLINE root=LABEL=dracut rw systemd.log_target=console rd.retry=3 init=/sbin/init" \ -initrd "$TESTDIR"/initramfs.testing || return 1 test_marker_check || return 1 @@ -35,7 +35,7 @@ test_setup() { # We do it this way so that we do not risk trashing the host mdraid # devices, volume groups, encrypted partitions, etc. "$DRACUT" -N -l -i "$TESTDIR"/overlay / \ - -m "test-makeroot" \ + -a "test-makeroot" \ -i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \ --nomdadmconf \ --no-hostonly-cmdline -N \ @@ -50,7 +50,7 @@ test_setup() { # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/fakeroot rw rootfstype=ext4 quiet console=ttyS0,115200n81 selinux=0" \ + -append "root=/dev/fakeroot rw rootfstype=ext4 quiet console=ttyS0,115200n81" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 test_marker_check dracut-root-block-created || return 1 rm -- "$TESTDIR"/marker.img diff --git a/test/TEST-03-USR-MOUNT/test.sh b/test/TEST-03-USR-MOUNT/test.sh index c64a582..22e9d4d 100755 --- a/test/TEST-03-USR-MOUNT/test.sh +++ b/test/TEST-03-USR-MOUNT/test.sh @@ -22,7 +22,7 @@ client_run() { test_marker_reset "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=LABEL=dracut $client_opts rd.retry=3" \ + -append "$TEST_KERNEL_CMDLINE root=LABEL=dracut $client_opts rd.retry=3" \ -initrd "$TESTDIR"/initramfs.testing || return 1 if ! test_marker_check; then @@ -51,7 +51,7 @@ test_setup() { # We do it this way so that we do not risk trashing the host mdraid # devices, volume groups, encrypted partitions, etc. "$DRACUT" -N -l -i "$TESTDIR"/overlay / \ - -m "test-makeroot" \ + -a "test-makeroot" \ -I "mkfs.btrfs" \ -i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 @@ -67,7 +67,7 @@ test_setup() { # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/dracut/root rw rootfstype=btrfs quiet console=ttyS0,115200n81 selinux=0" \ + -append "root=/dev/dracut/root rw rootfstype=btrfs quiet console=ttyS0,115200n81" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 if ! test_marker_check dracut-root-block-created; then diff --git a/test/TEST-04-FULL-SYSTEMD/create-root.sh b/test/TEST-04-FULL-SYSTEMD/create-root.sh index 734f377..0436c18 100755 --- a/test/TEST-04-FULL-SYSTEMD/create-root.sh +++ b/test/TEST-04-FULL-SYSTEMD/create-root.sh @@ -13,21 +13,37 @@ set -e udevadm settle modprobe btrfs || : mkfs.btrfs -q -L dracut /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_root +printf test > keyfile +cryptsetup -q luksFormat /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_root_crypt /keyfile +cryptsetup luksOpen /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_root_crypt dracut_crypt_test < /keyfile +mkfs.btrfs -q -L dracut_crypt /dev/mapper/dracut_crypt_test mkfs.btrfs -q -L dracutusr /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_usr btrfs device scan /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_root +btrfs device scan /dev/mapper/dracut_crypt_test btrfs device scan /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_usr -mkdir -p /root +mkdir -p /root /root_crypt mount -t btrfs /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_root /root +mount -t btrfs /dev/mapper/dracut_crypt_test /root_crypt [ -d /root/usr ] || mkdir -p /root/usr +[ -d /root-crypt/usr ] || mkdir -p /root_crypt/usr mount -t btrfs /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_usr /root/usr btrfs subvolume create /root/usr/usr umount /root/usr mount -t btrfs -o subvol=usr /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_usr /root/usr +mount --bind /root/usr /root_crypt/usr cp -a -t /root /source/* -mkdir -p /root/run +cp -a -t /root_crypt /source/* +mkdir -p /root/run /root_crypt/run btrfs filesystem sync /root/usr btrfs filesystem sync /root -umount /root/usr -umount /root -echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_marker status=none +btrfs filesystem sync /root_crypt/usr +btrfs filesystem sync /root_crypt +umount /root/usr /root_crypt/usr +umount /root /root_crypt +cryptsetup luksClose /dev/mapper/dracut_crypt_test +eval "$(udevadm info --query=property --name=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_root_crypt | while read -r line || [ -n "$line" ]; do [ "$line" != "${line#*ID_FS_UUID*}" ] && echo "$line"; done)" +{ + echo "dracut-root-block-created" + echo "ID_FS_UUID=$ID_FS_UUID" +} | dd oflag=direct,dsync of=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_marker status=none poweroff -f diff --git a/test/TEST-04-FULL-SYSTEMD/fstab b/test/TEST-04-FULL-SYSTEMD/fstab deleted file mode 100644 index 114f945..0000000 --- a/test/TEST-04-FULL-SYSTEMD/fstab +++ /dev/null @@ -1,2 +0,0 @@ -/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_root / btrfs defaults 0 0 -/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_usr /usr btrfs subvol=usr,ro 0 0 diff --git a/test/TEST-04-FULL-SYSTEMD/test-init.sh b/test/TEST-04-FULL-SYSTEMD/test-init.sh index eeec8a2..c60c0ff 100755 --- a/test/TEST-04-FULL-SYSTEMD/test-init.sh +++ b/test/TEST-04-FULL-SYSTEMD/test-init.sh @@ -5,7 +5,7 @@ export PATH=/usr/sbin:/usr/bin:/sbin:/bin command -v plymouth > /dev/null 2>&1 && plymouth --quit exec > /dev/console 2>&1 -systemctl --failed --no-legend --no-pager > /failed +systemctl --failed --no-legend --no-pager > /run/failed ismounted() { findmnt "$1" > /dev/null 2>&1 @@ -14,7 +14,7 @@ ismounted() { if ! ismounted /usr; then echo "**************************FAILED**************************" echo "/usr not mounted!!" - cat /proc/mounts >> /failed + cat /proc/mounts >> /run/failed echo "**************************FAILED**************************" fi diff --git a/test/TEST-04-FULL-SYSTEMD/test.sh b/test/TEST-04-FULL-SYSTEMD/test.sh index afd7645..c9a0826 100755 --- a/test/TEST-04-FULL-SYSTEMD/test.sh +++ b/test/TEST-04-FULL-SYSTEMD/test.sh @@ -10,7 +10,6 @@ test_check() { # Uncomment this to debug failures #DEBUGFAIL="rd.shell rd.break" #DEBUGOUT="quiet systemd.log_level=debug systemd.log_target=console loglevel=77 rd.info rd.debug" -DEBUGOUT="loglevel=0 " client_run() { local test_name="$1" shift @@ -22,12 +21,13 @@ client_run() { declare -i disk_index=0 qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker qemu_add_drive disk_index disk_args "$TESTDIR"/root.btrfs root + qemu_add_drive disk_index disk_args "$TESTDIR"/root_crypt.btrfs root_crypt qemu_add_drive disk_index disk_args "$TESTDIR"/usr.btrfs usr test_marker_reset "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "systemd.unit=testsuite.target systemd.mask=systemd-firstboot rd.multipath=0 root=LABEL=dracut $client_opts rd.retry=3 $DEBUGOUT" \ + -append "$TEST_KERNEL_CMDLINE systemd.unit=testsuite.target systemd.mask=systemd-firstboot systemd.mask=systemd-vconsole-setup root=LABEL=dracut mount.usr=LABEL=dracutusr mount.usrfstype=btrfs mount.usrflags=subvol=usr,ro $client_opts rd.retry=3 $DEBUGOUT" \ -initrd "$TESTDIR"/initramfs.testing || return 1 if ! test_marker_check; then @@ -35,13 +35,23 @@ client_run() { return 1 fi echo "CLIENT TEST END: $test_name [OK]" - } test_run() { client_run "no option specified" || return 1 client_run "readonly root" "ro" || return 1 client_run "writeable root" "rw" || return 1 + + # volatile mode + client_run "volatile=overlayfs root" "systemd.volatile=overlayfs" || return 1 + client_run "volatile=state root" "systemd.volatile=state" || return 1 + + # shellcheck source=$TESTDIR/luks.uuid + . "$TESTDIR"/luks.uuid + + # luks + client_run "encrypted root with rd.luks.uuid" "root=LABEL=dracut_crypt rd.luks.uuid=$ID_FS_UUID rd.luks.key=/etc/key" || return 1 + client_run "encrypted root with rd.luks.name" "root=/dev/mapper/crypt rd.luks.name=$ID_FS_UUID=crypt rd.luks.key=/etc/key" || return 1 return 0 } @@ -55,8 +65,6 @@ test_setup() { -m "test-root systemd-ldconfig" \ -i "${PKGLIBDIR}/modules.d/80test-root/test-init.sh" "/sbin/test-init.sh" \ -i ./test-init.sh /sbin/test-init \ - -I "findmnt" \ - -i ./fstab /etc/fstab \ -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1 mkdir -p "$TESTDIR"/overlay/source && cp -a "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.* && export initdir=$TESTDIR/overlay/source @@ -117,8 +125,8 @@ EOF # We do it this way so that we do not risk trashing the host mdraid # devices, volume groups, encrypted partitions, etc. "$DRACUT" -N -l -i "$TESTDIR"/overlay / \ - -m "test-makeroot bash btrfs" \ - -I "mkfs.btrfs" \ + -a "test-makeroot btrfs" \ + -I "mkfs.btrfs cryptsetup" \ -i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 rm -rf -- "$TESTDIR"/overlay/* @@ -129,26 +137,22 @@ EOF 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"/root.btrfs root 160 + qemu_add_drive disk_index disk_args "$TESTDIR"/root_crypt.btrfs root_crypt 160 qemu_add_drive disk_index disk_args "$TESTDIR"/usr.btrfs usr 160 # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/fakeroot rw rootfstype=btrfs quiet console=ttyS0,115200n81 selinux=0" \ + -append "root=/dev/fakeroot rw rootfstype=btrfs quiet console=ttyS0,115200n81" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 + test_marker_check dracut-root-block-created || return 1 - if ! test_marker_check dracut-root-block-created; then - echo "Could not create root filesystem" - return 1 - fi - - [ -e /etc/machine-id ] && EXTRA_MACHINE="/etc/machine-id" - [ -e /etc/machine-info ] && EXTRA_MACHINE+=" /etc/machine-info" + grep -F -a -m 1 ID_FS_UUID "$TESTDIR"/marker.img > "$TESTDIR"/luks.uuid + echo -n test > /tmp/key test_dracut \ - -a "systemd i18n qemu" \ - -d "btrfs" \ - ${EXTRA_MACHINE:+-I "$EXTRA_MACHINE"} \ + -m "btrfs dracut-systemd i18n systemd-ac-power systemd-coredump systemd-creds systemd-cryptsetup systemd-integritysetup systemd-ldconfig systemd-pcrphase systemd-pstore systemd-repart systemd-sysext systemd-veritysetup" \ + -i "/tmp/key" "/etc/key" \ "$TESTDIR"/initramfs.testing rm -rf -- "$TESTDIR"/overlay diff --git a/test/TEST-10-RAID/test.sh b/test/TEST-10-RAID/test.sh index 0a2d094..17d2c68 100755 --- a/test/TEST-10-RAID/test.sh +++ b/test/TEST-10-RAID/test.sh @@ -16,7 +16,7 @@ test_run() { test_marker_reset "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/dracut/root rd.auto rw" \ + -append "$TEST_KERNEL_CMDLINE root=/dev/dracut/root rd.auto rw" \ -initrd "$TESTDIR"/initramfs.testing || return 1 test_marker_check || return 1 @@ -33,8 +33,8 @@ test_setup() { # We do it this way so that we do not risk trashing the host mdraid # devices, volume groups, encrypted partitions, etc. "$DRACUT" -N -l -i "$TESTDIR"/overlay / \ - -m "test-makeroot bash crypt lvm mdraid kernel-modules" \ - -I "grep" \ + -a "test-makeroot bash crypt lvm mdraid kernel-modules" \ + -I "grep cryptsetup" \ -i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 rm -rf -- "$TESTDIR"/overlay @@ -43,13 +43,13 @@ test_setup() { declare -a disk_args=() 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 40 - qemu_add_drive disk_index disk_args "$TESTDIR"/raid-2.img raid2 40 - qemu_add_drive disk_index disk_args "$TESTDIR"/raid-3.img raid3 40 + qemu_add_drive disk_index disk_args "$TESTDIR"/raid-1.img raid1 80 + qemu_add_drive disk_index disk_args "$TESTDIR"/raid-2.img raid2 80 + qemu_add_drive disk_index disk_args "$TESTDIR"/raid-3.img raid3 80 "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/cannotreach rw rootfstype=ext4 quiet console=ttyS0,115200n81 selinux=0" \ + -append "root=/dev/cannotreach rw rootfstype=ext4 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)" diff --git a/test/TEST-11-LVM/test.sh b/test/TEST-11-LVM/test.sh index fb76ab9..dcbf96b 100755 --- a/test/TEST-11-LVM/test.sh +++ b/test/TEST-11-LVM/test.sh @@ -17,7 +17,7 @@ test_run() { test_marker_reset "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/dracut/root rw rd.auto=1 rd.retry=3" \ + -append "$TEST_KERNEL_CMDLINE root=/dev/dracut/root rw rd.auto=1 rd.retry=3" \ -initrd "$TESTDIR"/initramfs.testing || return 1 test_marker_check || return 1 @@ -35,7 +35,7 @@ test_setup() { # We do it this way so that we do not risk trashing the host mdraid # devices, volume groups, encrypted partitions, etc. "$DRACUT" -N -l -i "$TESTDIR"/overlay / \ - -m "test-makeroot bash lvm mdraid kernel-modules" \ + -a "test-makeroot bash lvm mdraid kernel-modules" \ -i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 rm -rf -- "$TESTDIR"/overlay @@ -51,7 +51,7 @@ test_setup() { "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/fakeroot rw rootfstype=ext4 quiet console=ttyS0,115200n81 selinux=0" \ + -append "root=/dev/fakeroot rw rootfstype=ext4 quiet console=ttyS0,115200n81" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 test_marker_check dracut-root-block-created || return 1 diff --git a/test/TEST-12-RAID-DEG/test.sh b/test/TEST-12-RAID-DEG/test.sh index 5c1b94e..be6cb73 100755 --- a/test/TEST-12-RAID-DEG/test.sh +++ b/test/TEST-12-RAID-DEG/test.sh @@ -21,7 +21,7 @@ client_run() { test_marker_reset "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "$* systemd.log_target=kmsg root=LABEL=root rw log_buf_len=2M" \ + -append "$TEST_KERNEL_CMDLINE $* systemd.log_target=kmsg root=LABEL=root rw log_buf_len=2M systemd.mask=systemd-vconsole-setup" \ -initrd "$TESTDIR"/initramfs.testing if ! test_marker_check; then @@ -55,7 +55,7 @@ test_run() { } test_setup() { - "$basedir"/dracut.sh -N -l --keep --tmpdir "$TESTDIR" \ + "$DRACUT" -N -l --keep --tmpdir "$TESTDIR" \ -m "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.* @@ -65,8 +65,8 @@ test_setup() { # We do it this way so that we do not risk trashing the host mdraid # devices, volume groups, encrypted partitions, etc. "$DRACUT" -N -l -i "$TESTDIR"/overlay / \ - -m "test-makeroot bash crypt lvm mdraid kernel-modules" \ - -I "grep" \ + -a "test-makeroot bash crypt lvm mdraid kernel-modules" \ + -I "grep cryptsetup" \ -i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 rm -rf -- "$TESTDIR"/overlay @@ -75,13 +75,13 @@ test_setup() { declare -a disk_args=() 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 40 - qemu_add_drive disk_index disk_args "$TESTDIR"/raid-2.img raid2 40 - qemu_add_drive disk_index disk_args "$TESTDIR"/raid-3.img raid3 40 + qemu_add_drive disk_index disk_args "$TESTDIR"/raid-1.img raid1 80 + qemu_add_drive disk_index disk_args "$TESTDIR"/raid-2.img raid2 80 + qemu_add_drive disk_index disk_args "$TESTDIR"/raid-3.img raid3 80 "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/fakeroot rw rootfstype=ext4 quiet console=ttyS0,115200n81 selinux=0" \ + -append "root=/dev/fakeroot rw rootfstype=ext4 quiet console=ttyS0,115200n81" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 test_marker_check dracut-root-block-created || return 1 @@ -97,7 +97,8 @@ test_setup() { chmod 0600 /tmp/key test_dracut \ - -m "crypt lvm mdraid" \ + -a "crypt lvm mdraid" \ + -o "systemd" \ -i "./cryptroot-ask.sh" "/sbin/cryptroot-ask" \ -i "/tmp/mdadm.conf" "/etc/mdadm.conf" \ -i "/tmp/crypttab" "/etc/crypttab" \ diff --git a/test/TEST-13-ENC-RAID-LVM/test.sh b/test/TEST-13-ENC-RAID-LVM/test.sh index 5129bcc..b3e5291 100755 --- a/test/TEST-13-ENC-RAID-LVM/test.sh +++ b/test/TEST-13-ENC-RAID-LVM/test.sh @@ -22,7 +22,7 @@ test_run() { test_marker_reset "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/dracut/root rw rd.auto rd.retry=20 rootwait $LUKSARGS" \ + -append "$TEST_KERNEL_CMDLINE root=/dev/dracut/root ro rd.auto rd.retry=20 rootwait $LUKSARGS" \ -initrd "$TESTDIR"/initramfs.testing test_marker_check || return 1 echo "CLIENT TEST END: [OK]" @@ -32,7 +32,7 @@ test_run() { echo "CLIENT TEST START: Any LUKS" "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/dracut/root rw rd.auto rd.retry=20" \ + -append "$TEST_KERNEL_CMDLINE root=/dev/dracut/root rw rd.auto rd.retry=20" \ -initrd "$TESTDIR"/initramfs.testing test_marker_check || return 1 echo "CLIENT TEST END: [OK]" @@ -42,7 +42,7 @@ test_run() { echo "CLIENT TEST START: Wrong LUKS UUID" "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/dracut/root rw rd.auto rd.luks.uuid=failme" \ + -append "$TEST_KERNEL_CMDLINE root=/dev/dracut/root rw rd.auto rd.luks.uuid=failme" \ -initrd "$TESTDIR"/initramfs.testing test_marker_check && return 1 echo "CLIENT TEST END: [OK]" @@ -63,8 +63,8 @@ test_setup() { # We do it this way so that we do not risk trashing the host mdraid # devices, volume groups, encrypted partitions, etc. "$DRACUT" -N -l -i "$TESTDIR"/overlay / \ - -m "test-makeroot bash crypt lvm mdraid kernel-modules" \ - -I "grep" \ + -a "test-makeroot bash crypt lvm mdraid kernel-modules" \ + -I "grep cryptsetup" \ -i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 rm -rf -- "$TESTDIR"/overlay @@ -79,7 +79,7 @@ test_setup() { "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/fakeroot rw rootfstype=ext4 quiet console=ttyS0,115200n81 selinux=0" \ + -append "root=/dev/fakeroot rw rootfstype=ext4 quiet console=ttyS0,115200n81" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 test_marker_check dracut-root-block-created || return 1 cryptoUUIDS=$(grep -F --binary-files=text -m 3 ID_FS_UUID "$TESTDIR"/marker.img) diff --git a/test/TEST-14-IMSM/test.sh b/test/TEST-14-IMSM/test.sh index fc3e429..3d43154 100755 --- a/test/TEST-14-IMSM/test.sh +++ b/test/TEST-14-IMSM/test.sh @@ -18,7 +18,7 @@ client_run() { test_marker_reset "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "$* root=LABEL=root rw rd.retry=5" \ + -append "$TEST_KERNEL_CMDLINE $* root=LABEL=root rw rd.retry=5" \ -initrd "$TESTDIR"/initramfs.testing || return 1 if ! test_marker_check; then @@ -60,7 +60,7 @@ test_setup() { # We do it this way so that we do not risk trashing the host mdraid # devices, volume groups, encrypted partitions, etc. "$DRACUT" -N -l -i "$TESTDIR"/overlay / \ - -m "test-makeroot bash lvm mdraid dmraid kernel-modules" \ + -a "test-makeroot bash lvm mdraid dmraid kernel-modules" \ -d "piix ide-gd_mod ata_piix ext4 sd_mod dm-multipath dm-crypt dm-round-robin faulty linear multipath raid0 raid10 raid1 raid456" \ -I "grep sfdisk realpath" \ -i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \ @@ -77,7 +77,7 @@ test_setup() { # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81 selinux=0" \ + -append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 test_marker_check dracut-root-block-created || return 1 eval "$(grep -F --binary-files=text -m 1 MD_UUID "$TESTDIR"/marker.img)" diff --git a/test/TEST-15-BTRFSRAID/test.sh b/test/TEST-15-BTRFSRAID/test.sh index 2745950..2d8c9d9 100755 --- a/test/TEST-15-BTRFSRAID/test.sh +++ b/test/TEST-15-BTRFSRAID/test.sh @@ -16,7 +16,7 @@ test_run() { test_marker_reset "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=LABEL=root rw rd.retry=3" \ + -append "$TEST_KERNEL_CMDLINE root=LABEL=root rw rd.retry=3" \ -initrd "$TESTDIR"/initramfs.testing test_marker_check || return 1 } @@ -38,7 +38,7 @@ test_setup() { # We do it this way so that we do not risk trashing the host mdraid # devices, volume groups, encrypted partitions, etc. "$DRACUT" -N -l -i "$TESTDIR"/overlay / \ - -m "test-makeroot bash btrfs rootfs-block kernel-modules" \ + -a "test-makeroot bash btrfs rootfs-block kernel-modules" \ -d "piix ide-gd_mod ata_piix btrfs sd_mod" \ -I "mkfs.btrfs" \ -i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \ @@ -58,7 +58,7 @@ test_setup() { "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/fakeroot rw quiet console=ttyS0,115200n81 selinux=0" \ + -append "root=/dev/fakeroot rw quiet console=ttyS0,115200n81" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 test_marker_check dracut-root-block-created || return 1 diff --git a/test/TEST-16-DMSQUASH/create-root.sh b/test/TEST-16-DMSQUASH/create-root.sh index b424a1a..042d974 100755 --- a/test/TEST-16-DMSQUASH/create-root.sh +++ b/test/TEST-16-DMSQUASH/create-root.sh @@ -27,6 +27,18 @@ cp -a -t /root /source/* echo "Creating squashfs" mksquashfs /source /root/testdir/rootfs.img -quiet +# Write the erofs compressed filesystem to the partition +if [ -e "/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_root_erofs" ]; then + sfdisk /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_root_erofs << EOF +2048,161792 +EOF + + udevadm settle + + echo "Creating erofs" + mkfs.erofs /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_root_erofs-part1 /source +fi + # Copy rootfs.img to the NTFS drive if exists if [ -e "/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_root_ntfs" ]; then mkfs.ntfs -q -F -L dracut_ntfs /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_root_ntfs diff --git a/test/TEST-16-DMSQUASH/test.sh b/test/TEST-16-DMSQUASH/test.sh index 6087ccd..4245c20 100755 --- a/test/TEST-16-DMSQUASH/test.sh +++ b/test/TEST-16-DMSQUASH/test.sh @@ -12,6 +12,11 @@ test_run() { qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker qemu_add_drive disk_index disk_args "$TESTDIR"/root.img root + # erofs drive + if modprobe erofs &> /dev/null && command -v mkfs.erofs &> /dev/null; then + qemu_add_drive disk_index disk_args "$TESTDIR"/root_erofs.img root_erofs + fi + # NTFS drive if modprobe --dry-run ntfs3 &> /dev/null && command -v mkfs.ntfs &> /dev/null; then qemu_add_drive disk_index disk_args "$TESTDIR"/root_ntfs.img root_ntfs @@ -21,16 +26,28 @@ test_run() { "$testdir"/run-qemu \ "${disk_args[@]}" \ -boot order=d \ - -append "rd.live.overlay.overlayfs=1 root=live:/dev/disk/by-label/dracut" \ + -append "$TEST_KERNEL_CMDLINE rd.live.overlay.overlayfs=1 root=live:/dev/disk/by-label/dracut" \ -initrd "$TESTDIR"/initramfs.testing test_marker_check || return 1 + # Run the erofs test only if mkfs.ntfs is available + if modprobe erofs &> /dev/null && command -v mkfs.erofs &> /dev/null; then + test_marker_reset + "$testdir"/run-qemu \ + "${disk_args[@]}" \ + -boot order=d \ + -append "$TEST_KERNEL_CMDLINE rd.live.overlay.overlayfs=1 root=live:/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_root_erofs-part1" \ + -initrd "$TESTDIR"/initramfs.testing + + test_marker_check || return 1 + fi + test_marker_reset "$testdir"/run-qemu \ "${disk_args[@]}" \ -boot order=d \ - -append "rd.live.image rd.live.overlay.overlayfs=1 root=LABEL=dracut" \ + -append "$TEST_KERNEL_CMDLINE rd.live.image rd.live.overlay.overlayfs=1 root=LABEL=dracut" \ -initrd "$TESTDIR"/initramfs.testing test_marker_check || return 1 @@ -39,7 +56,7 @@ test_run() { "$testdir"/run-qemu \ "${disk_args[@]}" \ -boot order=d \ - -append "rd.live.image rd.live.overlay.overlayfs=1 rd.live.dir=testdir root=LABEL=dracut" \ + -append "$TEST_KERNEL_CMDLINE rd.live.image rd.live.overlay.overlayfs=1 rd.live.dir=testdir root=LABEL=dracut" \ -initrd "$TESTDIR"/initramfs.testing test_marker_check || return 1 @@ -50,7 +67,7 @@ test_run() { "$testdir"/run-qemu \ "${disk_args[@]}" \ -boot order=d \ - -append "rd.live.image rd.live.overlay.overlayfs=1 rd.live.dir=testdir root=LABEL=dracut_ntfs quiet rd.info rd.shell=0" \ + -append "$TEST_KERNEL_CMDLINE rd.live.image rd.live.overlay.overlayfs=1 rd.live.dir=testdir root=LABEL=dracut_ntfs" \ -initrd "$TESTDIR"/initramfs.testing test_marker_check || return 1 @@ -63,7 +80,7 @@ test_run() { "$testdir"/run-qemu \ "${disk_args[@]}" \ -boot order=d \ - -append "init=/sbin/init-persist rd.live.image rd.live.overlay.overlayfs=1 rd.live.overlay=LABEL=persist rd.live.dir=testdir root=LABEL=dracut console=ttyS0,115200n81 quiet selinux=0 rd.info rd.shell=0 panic=1 oops=panic softlockup_panic=1 $DEBUGFAIL" \ + -append "init=/sbin/init-persist rd.live.image rd.live.overlay.overlayfs=1 rd.live.overlay=LABEL=persist rd.live.dir=testdir root=LABEL=dracut console=ttyS0,115200n81 quiet rd.info rd.shell=0 panic=1 oops=panic softlockup_panic=1 $DEBUGFAIL" \ -initrd "$TESTDIR"/initramfs.testing-autooverlay rootPartitions=$(sfdisk -d "$TESTDIR"/root.img | grep -c 'root\.img[0-9]') @@ -92,8 +109,8 @@ test_setup() { # We do it this way so that we do not risk trashing the host mdraid # devices, volume groups, encrypted partitions, etc. "$DRACUT" -N -l -i "$TESTDIR"/overlay / \ - --modules "test-makeroot" \ - --install "sfdisk mkfs.ntfs mksquashfs" \ + --add "test-makeroot" \ + --install "sfdisk mkfs.ntfs mksquashfs mkfs.erofs" \ --drivers "ntfs3" \ --include ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \ --force "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 @@ -105,6 +122,11 @@ test_setup() { qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker 1 qemu_add_drive disk_index disk_args "$TESTDIR"/root.img root 160 + # erofs drive + if modprobe erofs &> /dev/null && command -v mkfs.erofs &> /dev/null; then + qemu_add_drive disk_index disk_args "$TESTDIR"/root_erofs.img root_erofs 160 + fi + # NTFS drive if modprobe --dry-run ntfs3 &> /dev/null && command -v mkfs.ntfs &> /dev/null; then dd if=/dev/zero of="$TESTDIR"/root_ntfs.img bs=1MiB count=160 @@ -114,7 +136,7 @@ test_setup() { # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81 selinux=0" \ + -append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 if ! test_marker_check dracut-root-block-created; then @@ -128,14 +150,16 @@ SUBSYSTEM=="block", ENV{ID_FS_TYPE}=="ntfs", ENV{ID_FS_TYPE}="ntfs3" EOF test_dracut \ - --modules "dash dmsquash-live qemu" \ + --add "dash dmsquash-live qemu" \ + --omit "systemd" \ --drivers "ntfs3" \ --install "mkfs.ext4" \ --include /tmp/ntfs3.rules /lib/udev/rules.d/ntfs3.rules \ "$TESTDIR"/initramfs.testing test_dracut \ - --modules "dmsquash-live-autooverlay qemu" \ + --add "dmsquash-live-autooverlay qemu" \ + --omit "systemd" \ --install "mkfs.ext4" \ "$TESTDIR"/initramfs.testing-autooverlay diff --git a/test/TEST-17-LVM-THIN/test.sh b/test/TEST-17-LVM-THIN/test.sh index 9326433..0cc9c1f 100755 --- a/test/TEST-17-LVM-THIN/test.sh +++ b/test/TEST-17-LVM-THIN/test.sh @@ -16,7 +16,7 @@ test_run() { test_marker_reset "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/dracut/root rw rd.auto=1 rd.driver.pre=dm_thin_pool rd.retry=3" \ + -append "$TEST_KERNEL_CMDLINE root=/dev/dracut/root rw rd.auto=1 rd.driver.pre=dm_thin_pool rd.retry=3" \ -initrd "$TESTDIR"/initramfs.testing || return 1 test_marker_check || return 1 } @@ -35,7 +35,7 @@ test_setup() { # We do it this way so that we do not risk trashing the host mdraid # devices, volume groups, encrypted partitions, etc. "$DRACUT" -N -l -i "$TESTDIR"/overlay / \ - -m "test-makeroot bash lvm mdraid kernel-modules" \ + -a "test-makeroot bash lvm mdraid kernel-modules" \ -I "grep" \ -i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 @@ -52,7 +52,7 @@ test_setup() { "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/fakeroot rw rootfstype=ext4 quiet console=ttyS0,115200n81 selinux=0" \ + -append "root=/dev/fakeroot rw rootfstype=ext4 quiet console=ttyS0,115200n81" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 test_marker_check dracut-root-block-created || return 1 diff --git a/test/TEST-18-UEFI/test.sh b/test/TEST-18-UEFI/test.sh index 769a0e3..7e75590 100755 --- a/test/TEST-18-UEFI/test.sh +++ b/test/TEST-18-UEFI/test.sh @@ -44,7 +44,7 @@ test_setup() { mkdir -p "$TESTDIR"/ESP/EFI/BOOT test_dracut \ - --modules 'rootfs-block' \ + --add 'rootfs-block' \ --kernel-cmdline 'root=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_root ro rd.skipfsck rootfstype=squashfs' \ --drivers 'squashfs' \ --uefi \ @@ -52,7 +52,7 @@ test_setup() { test_dracut \ --hostonly \ - --modules 'rootfs-block' \ + --add 'rootfs-block' \ --kernel-cmdline 'root=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_root ro rd.skipfsck rootfstype=squashfs' \ --drivers 'squashfs' \ --uefi \ diff --git a/test/TEST-20-NFS/client-init.sh b/test/TEST-20-NFS/client-init.sh index 04fb6a7..f50d0e2 100755 --- a/test/TEST-20-NFS/client-init.sh +++ b/test/TEST-20-NFS/client-init.sh @@ -13,13 +13,13 @@ stty sane if getargbool 0 rd.shell; then [ -c /dev/watchdog ] && printf 'V' > /dev/watchdog strstr "$(setsid --help)" "control" && CTTY="-c" - setsid $CTTY sh -i + setsid ${CTTY:+"${CTTY}"} sh -i fi echo "made it to the rootfs! Powering down." while read -r dev _ fstype opts rest || [ -n "$dev" ]; do - [ "$fstype" != "nfs" -a "$fstype" != "nfs4" ] && continue + [ "$fstype" != "nfs" ] && [ "$fstype" != "nfs4" ] && continue echo "nfs-OK $dev $fstype $opts" | dd oflag=direct,dsync of=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_marker status=none break done < /proc/mounts @@ -31,7 +31,7 @@ if grep -qF 'rd.live.overlay' /proc/cmdline; then fi fi -if [ "$fstype" = "nfs" -o "$fstype" = "nfs4" ]; then +if [ "$fstype" = "nfs" ] || [ "$fstype" = "nfs4" ]; then serverip=${dev%:*} path=${dev#*:} diff --git a/test/TEST-20-NFS/hosts b/test/TEST-20-NFS/hosts deleted file mode 100644 index 36be908..0000000 --- a/test/TEST-20-NFS/hosts +++ /dev/null @@ -1,5 +0,0 @@ -127.0.0.1 localhost -192.168.50.1 server -192.168.50.2 server-ip -192.168.50.3 server-proto-ip -192.168.50.101 workstation2 diff --git a/test/TEST-20-NFS/test.sh b/test/TEST-20-NFS/test.sh index 1be5a73..efbfcf3 100755 --- a/test/TEST-20-NFS/test.sh +++ b/test/TEST-20-NFS/test.sh @@ -25,7 +25,7 @@ run_server() { -net socket,listen=127.0.0.1:12320 \ -net nic,macaddr=52:54:00:12:34:56,model=e1000 \ -serial "${SERIAL:-"file:$TESTDIR/server.log"}" \ - -append "panic=1 oops=panic softlockup_panic=1 root=LABEL=dracut rootfstype=ext4 rw console=ttyS0,115200n81 selinux=0 $SERVER_DEBUG" \ + -append "panic=1 oops=panic softlockup_panic=1 root=LABEL=dracut rootfstype=ext4 rw console=ttyS0,115200n81 $SERVER_DEBUG" \ -initrd "$TESTDIR"/initramfs.server \ -pidfile "$TESTDIR"/server.pid -daemonize || return 1 chmod 644 "$TESTDIR"/server.pid || return 1 @@ -66,7 +66,7 @@ client_test() { "${disk_args[@]}" \ -net nic,macaddr="$mac",model=e1000 \ -net socket,connect=127.0.0.1:12320 \ - -append "$cmdline ro" \ + -append "$TEST_KERNEL_CMDLINE $cmdline ro" \ -initrd "$TESTDIR"/initramfs.testing # shellcheck disable=SC2181 @@ -267,7 +267,6 @@ test_setup() { instmods nfsd sunrpc ipv6 lockd af_packet inst ./server-init.sh /sbin/init inst_simple /etc/os-release - inst ./hosts /etc/hosts inst ./exports /etc/exports inst ./dhcpd.conf /etc/dhcpd.conf inst_multiple -o {,/usr}/etc/nsswitch.conf {,/usr}/etc/rpc \ @@ -366,7 +365,7 @@ test_setup() { # We do it this way so that we do not risk trashing the host mdraid # devices, volume groups, encrypted partitions, etc. "$DRACUT" -l -i "$TESTDIR"/server/overlay / \ - -m "bash rootfs-block kernel-modules qemu" \ + -a "bash rootfs-block kernel-modules qemu" \ -d "piix ide-gd_mod ata_piix ext4 sd_mod" \ --nomdadmconf \ --no-hostonly-cmdline -N \ @@ -382,7 +381,7 @@ test_setup() { # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81 selinux=0" \ + -append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 test_marker_check dracut-root-block-created || return 1 @@ -416,7 +415,7 @@ test_setup() { ) # Make server's dracut image "$DRACUT" -l -i "$TESTDIR"/overlay / \ - -m "bash rootfs-block debug kernel-modules watchdog qemu network-legacy" \ + -a "bash rootfs-block debug kernel-modules watchdog qemu ${USE_NETWORK}" \ -d "af_packet piix ide-gd_mod ata_piix ext4 sd_mod e1000 i6300esb" \ --no-hostonly-cmdline -N \ -f "$TESTDIR"/initramfs.server "$KVERSION" || return 1 diff --git a/test/TEST-30-ISCSI/client-init.sh b/test/TEST-30-ISCSI/client-init.sh index d7f1370..ab70d17 100755 --- a/test/TEST-30-ISCSI/client-init.sh +++ b/test/TEST-30-ISCSI/client-init.sh @@ -17,7 +17,7 @@ done < /proc/mounts if getargbool 0 rd.shell; then strstr "$(setsid --help)" "control" && CTTY="-c" - setsid $CTTY sh -i + setsid ${CTTY:+"${CTTY}"} sh -i fi sync diff --git a/test/TEST-30-ISCSI/hosts b/test/TEST-30-ISCSI/hosts deleted file mode 100644 index f8c18b6..0000000 --- a/test/TEST-30-ISCSI/hosts +++ /dev/null @@ -1,8 +0,0 @@ -127.0.0.1 localhost -192.168.50.1 server -192.168.50.2 server-ip -192.168.50.3 server-proto-ip -192.168.50.100 workstation1 -192.168.50.101 workstation2 -192.168.50.102 workstation3 -192.168.50.103 workstation4 diff --git a/test/TEST-30-ISCSI/test.sh b/test/TEST-30-ISCSI/test.sh index f4bf33e..ca56a9d 100755 --- a/test/TEST-30-ISCSI/test.sh +++ b/test/TEST-30-ISCSI/test.sh @@ -24,7 +24,7 @@ run_server() { -net nic,macaddr=52:54:00:12:34:56,model=e1000 \ -net nic,macaddr=52:54:00:12:34:57,model=e1000 \ -net socket,listen=127.0.0.1:12330 \ - -append "panic=1 oops=panic softlockup_panic=1 quiet root=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_serverroot rootfstype=ext4 rw console=ttyS0,115200n81 selinux=0 $SERVER_DEBUG" \ + -append "panic=1 oops=panic softlockup_panic=1 quiet root=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_serverroot rootfstype=ext4 rw console=ttyS0,115200n81 $SERVER_DEBUG" \ -initrd "$TESTDIR"/initramfs.server \ -pidfile "$TESTDIR"/server.pid -daemonize || return 1 chmod 644 "$TESTDIR"/server.pid || return 1 @@ -62,7 +62,7 @@ run_client() { -net nic,macaddr=52:54:00:12:34:01,model=e1000 \ -net socket,connect=127.0.0.1:12330 \ -acpitable file=ibft.table \ - -append "$*" \ + -append "$TEST_KERNEL_CMDLINE $*" \ -initrd "$TESTDIR"/initramfs.testing # shellcheck disable=SC2181 @@ -149,7 +149,7 @@ test_setup() { # We do it this way so that we do not risk trashing the host mdraid # devices, volume groups, encrypted partitions, etc. "$DRACUT" -l -i "$TESTDIR"/overlay / \ - -m "test-makeroot crypt lvm mdraid" \ + -a "test-makeroot crypt lvm mdraid" \ -I "setsid blockdev" \ -i ./create-client-root.sh /lib/dracut/hooks/initqueue/01-create-client-root.sh \ --no-hostonly-cmdline -N \ @@ -166,20 +166,19 @@ test_setup() { # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/fakeroot rw rootfstype=ext4 quiet console=ttyS0,115200n81 selinux=0" \ + -append "root=/dev/fakeroot rw rootfstype=ext4 quiet console=ttyS0,115200n81" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 test_marker_check dracut-root-block-created || return 1 rm -- "$TESTDIR"/marker.img # Create what will eventually be the server root filesystem onto an overlay "$DRACUT" -N -l --keep --tmpdir "$TESTDIR" \ - -m "test-root network-legacy" \ + -m "test-root ${USE_NETWORK}" \ -d "iscsi_tcp crc32c ipv6" \ -i "${PKGLIBDIR}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh" \ -i "${PKGLIBDIR}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh" \ -I "modprobe chmod ip tcpdump setsid pidof tgtd tgtadm /etc/passwd" \ --install-optional "/etc/netconfig dhcpd /etc/group /etc/nsswitch.conf /etc/rpc /etc/protocols /etc/services /usr/etc/nsswitch.conf /usr/etc/rpc /usr/etc/protocols /usr/etc/services" \ - -i "./hosts" "/etc/hosts" \ -i "./dhcpd.conf" "/etc/dhcpd.conf" \ -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1 mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.* @@ -192,7 +191,7 @@ test_setup() { # We do it this way so that we do not risk trashing the host mdraid # devices, volume groups, encrypted partitions, etc. "$DRACUT" -N -l -i "$TESTDIR"/overlay / \ - -m "test-makeroot" \ + -a "test-makeroot" \ -i ./create-server-root.sh /lib/dracut/hooks/initqueue/01-create-server-root.sh \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 rm -rf -- "$TESTDIR"/overlay @@ -206,14 +205,14 @@ test_setup() { # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81 selinux=0" \ + -append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 test_marker_check dracut-root-block-created || return 1 rm -- "$TESTDIR"/marker.img # Make server's dracut image "$DRACUT" -l \ - -a "dash rootfs-block test kernel-modules network-legacy" \ + -a "dash rootfs-block test kernel-modules ${USE_NETWORK}" \ -d "piix ide-gd_mod ata_piix ext4 sd_mod e1000 drbg virtio_pci virtio_scsi" \ -i "./server.link" "/etc/systemd/network/01-server.link" \ -i ./wait-if-server.sh /lib/dracut/hooks/pre-mount/99-wait-if-server.sh \ diff --git a/test/TEST-35-ISCSI-MULTI/client-init.sh b/test/TEST-35-ISCSI-MULTI/client-init.sh index d7f1370..ab70d17 100755 --- a/test/TEST-35-ISCSI-MULTI/client-init.sh +++ b/test/TEST-35-ISCSI-MULTI/client-init.sh @@ -17,7 +17,7 @@ done < /proc/mounts if getargbool 0 rd.shell; then strstr "$(setsid --help)" "control" && CTTY="-c" - setsid $CTTY sh -i + setsid ${CTTY:+"${CTTY}"} sh -i fi sync diff --git a/test/TEST-35-ISCSI-MULTI/hosts b/test/TEST-35-ISCSI-MULTI/hosts deleted file mode 100644 index f8c18b6..0000000 --- a/test/TEST-35-ISCSI-MULTI/hosts +++ /dev/null @@ -1,8 +0,0 @@ -127.0.0.1 localhost -192.168.50.1 server -192.168.50.2 server-ip -192.168.50.3 server-proto-ip -192.168.50.100 workstation1 -192.168.50.101 workstation2 -192.168.50.102 workstation3 -192.168.50.103 workstation4 diff --git a/test/TEST-35-ISCSI-MULTI/test.sh b/test/TEST-35-ISCSI-MULTI/test.sh index f807798..20fc7b0 100755 --- a/test/TEST-35-ISCSI-MULTI/test.sh +++ b/test/TEST-35-ISCSI-MULTI/test.sh @@ -24,7 +24,7 @@ run_server() { -net nic,macaddr=52:54:00:12:34:56,model=e1000 \ -net nic,macaddr=52:54:00:12:34:57,model=e1000 \ -net socket,listen=127.0.0.1:12331 \ - -append "panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot root=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_serverroot rootfstype=ext4 rw console=ttyS0,115200n81 selinux=0 $SERVER_DEBUG" \ + -append "panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot root=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_serverroot rootfstype=ext4 rw console=ttyS0,115200n81 $SERVER_DEBUG" \ -initrd "$TESTDIR"/initramfs.server \ -pidfile "$TESTDIR"/server.pid -daemonize || return 1 chmod 644 "$TESTDIR"/server.pid || return 1 @@ -60,7 +60,7 @@ run_client() { -net nic,macaddr=52:54:00:12:34:00,model=e1000 \ -net nic,macaddr=52:54:00:12:34:01,model=e1000 \ -net socket,connect=127.0.0.1:12331 \ - -append "rw rd.auto rd.retry=50 $*" \ + -append "$TEST_KERNEL_CMDLINE rw rd.auto rd.retry=50 $*" \ -initrd "$TESTDIR"/initramfs.testing if ! test_marker_check iscsi-OK; then echo "CLIENT TEST END: $test_name [FAILED - BAD EXIT]" @@ -163,7 +163,7 @@ test_setup() { # We do it this way so that we do not risk trashing the host mdraid # devices, volume groups, encrypted partitions, etc. "$DRACUT" -l -i "$TESTDIR"/overlay / \ - -m "test-makeroot crypt lvm mdraid" \ + -a "test-makeroot crypt lvm mdraid" \ -I "setsid blockdev" \ -i ./create-client-root.sh /lib/dracut/hooks/initqueue/01-create-client-root.sh \ --no-hostonly-cmdline -N \ @@ -173,28 +173,27 @@ test_setup() { declare -a disk_args=() 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"/singleroot.img singleroot 400 - qemu_add_drive disk_index disk_args "$TESTDIR"/raid0-1.img raid0-1 200 - qemu_add_drive disk_index disk_args "$TESTDIR"/raid0-2.img raid0-2 200 + qemu_add_drive disk_index disk_args "$TESTDIR"/singleroot.img singleroot 800 + qemu_add_drive disk_index disk_args "$TESTDIR"/raid0-1.img raid0-1 400 + qemu_add_drive disk_index disk_args "$TESTDIR"/raid0-2.img raid0-2 400 # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/fakeroot rw rootfstype=ext4 quiet console=ttyS0,115200n81 selinux=0" \ + -append "root=/dev/fakeroot rw rootfstype=ext4 quiet console=ttyS0,115200n81" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 test_marker_check dracut-root-block-created || return 1 rm -- "$TESTDIR"/marker.img rm -rf -- "$TESTDIR"/overlay "$DRACUT" -N -l --keep --tmpdir "$TESTDIR" \ - -m "test-root network-legacy iscsi" \ + -m "test-root ${USE_NETWORK} iscsi" \ -d "iscsi_tcp crc32c ipv6 af_packet" \ -I "ip grep sleep setsid chmod modprobe pidof tgtd tgtadm" \ -i "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh" \ -i "${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh" \ --install-optional "/etc/netconfig dhcpd /etc/group /etc/nsswitch.conf /etc/rpc /etc/protocols /etc/services /usr/etc/nsswitch.conf /usr/etc/rpc /usr/etc/protocols /usr/etc/services" \ -i /tmp/config /etc/nbd-server/config \ - -i "./hosts" "/etc/hosts" \ -i "./dhcpd.conf" "/etc/dhcpd.conf" \ -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1 mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.* @@ -207,7 +206,7 @@ test_setup() { # We do it this way so that we do not risk trashing the host mdraid # devices, volume groups, encrypted partitions, etc. "$DRACUT" -N -l -i "$TESTDIR"/overlay / \ - -m "test-makeroot" \ + -a "test-makeroot" \ -i ./create-server-root.sh /lib/dracut/hooks/initqueue/01-create-server-root.sh \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 rm -rf -- "$TESTDIR"/overlay @@ -215,12 +214,12 @@ test_setup() { declare -a disk_args=() 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"/server.img root 120 + qemu_add_drive disk_index disk_args "$TESTDIR"/server.img root 240 # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81 selinux=0" \ + -append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 test_marker_check dracut-root-block-created || return 1 rm -- "$TESTDIR"/marker.img @@ -233,7 +232,7 @@ test_setup() { # Make server's dracut image "$DRACUT" -l -i "$TESTDIR"/overlay / \ - -a "test dash rootfs-block debug kernel-modules network-legacy" \ + -a "test dash rootfs-block debug kernel-modules ${USE_NETWORK}" \ -d "af_packet piix ide-gd_mod ata_piix ext4 sd_mod e1000 drbg" \ -i "./server.link" "/etc/systemd/network/01-server.link" \ -i "./wait-if-server.sh" "/lib/dracut/hooks/pre-mount/99-wait-if-server.sh" \ diff --git a/test/TEST-40-NBD/client-init.sh b/test/TEST-40-NBD/client-init.sh index 9de7436..b8637f0 100755 --- a/test/TEST-40-NBD/client-init.sh +++ b/test/TEST-40-NBD/client-init.sh @@ -20,7 +20,7 @@ echo "made it to the rootfs! Powering down." if getargbool 0 rd.shell; then strstr "$(setsid --help)" "control" && CTTY="-c" - setsid $CTTY sh -i + setsid ${CTTY:+"${CTTY}"} sh -i fi mount -n -o remount,ro / diff --git a/test/TEST-40-NBD/hosts b/test/TEST-40-NBD/hosts deleted file mode 100644 index f8c18b6..0000000 --- a/test/TEST-40-NBD/hosts +++ /dev/null @@ -1,8 +0,0 @@ -127.0.0.1 localhost -192.168.50.1 server -192.168.50.2 server-ip -192.168.50.3 server-proto-ip -192.168.50.100 workstation1 -192.168.50.101 workstation2 -192.168.50.102 workstation3 -192.168.50.103 workstation4 diff --git a/test/TEST-40-NBD/test.sh b/test/TEST-40-NBD/test.sh index e935f53..a8efabe 100755 --- a/test/TEST-40-NBD/test.sh +++ b/test/TEST-40-NBD/test.sh @@ -37,7 +37,7 @@ run_server() { -serial "${SERIAL:-"file:$TESTDIR/server.log"}" \ -net nic,macaddr=52:54:00:12:34:56,model=e1000 \ -net socket,listen=127.0.0.1:12340 \ - -append "panic=1 oops=panic softlockup_panic=1 rd.luks=0 systemd.crash_reboot quiet root=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_serverroot rootfstype=ext4 rw console=ttyS0,115200n81 selinux=0 $SERVER_DEBUG" \ + -append "panic=1 oops=panic softlockup_panic=1 rd.luks=0 systemd.crash_reboot quiet root=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_serverroot rootfstype=ext4 rw console=ttyS0,115200n81 $SERVER_DEBUG" \ -initrd "$TESTDIR"/initramfs.server \ -pidfile "$TESTDIR"/server.pid -daemonize || return 1 chmod 644 "$TESTDIR"/server.pid || return 1 @@ -80,11 +80,11 @@ client_test() { "${disk_args[@]}" \ -net nic,macaddr="$mac",model=e1000 \ -net socket,connect=127.0.0.1:12340 \ - -append "$cmdline rd.auto ro" \ + -append "$cmdline rd.auto ro console=ttyS0,115200n81" \ -initrd "$TESTDIR"/initramfs.testing # shellcheck disable=SC2181 - if [[ $? -ne 0 ]] || ! test_marker_check nbd-OK "$TESTDIR"/marker.img; then + if [[ $? -ne 0 ]] || ! test_marker_check nbd-OK; then echo "CLIENT TEST END: $test_name [FAILED - BAD EXIT]" return 1 fi @@ -120,7 +120,9 @@ test_run() { return 1 fi client_run + local res="$?" kill_server + return "$res" } client_run() { @@ -145,23 +147,22 @@ client_run() { client_test "NBD root=/dev/root netroot=dhcp DHCP root-path nbd:srv:port" 52:54:00:12:34:01 \ "root=/dev/root netroot=dhcp ip=dhcp rd.luks=0" || return 1 - client_test "NBD root=/dev/root netroot=dhcp DHCP root-path nbd:srv:port:fstype" \ - 52:54:00:12:34:02 "root=/dev/root netroot=dhcp ip=dhcp rd.luks=0" ext2 || return 1 + # BROKEN + #client_test "NBD root=/dev/root netroot=dhcp DHCP root-path nbd:srv:port:fstype" \ + # 52:54:00:12:34:02 "root=/dev/root netroot=dhcp ip=dhcp rd.luks=0" ext2 || return 1 client_test "NBD root=/dev/root netroot=dhcp DHCP root-path nbd:srv:port::fsopts" \ 52:54:00:12:34:03 "root=/dev/root netroot=dhcp ip=dhcp rd.luks=0" ext4 errors=panic || return 1 - client_test "NBD root=/dev/root netroot=dhcp DHCP root-path nbd:srv:port:fstype:fsopts" \ - 52:54:00:12:34:04 "root=/dev/root netroot=dhcp ip=dhcp rd.luks=0" ext2 errors=panic || return 1 + # BROKEN + #client_test "NBD root=/dev/root netroot=dhcp DHCP root-path nbd:srv:port:fstype:fsopts" \ + # 52:54:00:12:34:04 "root=/dev/root netroot=dhcp ip=dhcp rd.luks=0" ext2 errors=panic || return 1 # netroot handling client_test "NBD netroot=nbd:IP:port" 52:54:00:12:34:00 \ "root=LABEL=dracut netroot=nbd:192.168.50.1:raw ip=dhcp rd.luks=0" || return 1 - client_test "NBD root=/dev/root netroot=dhcp DHCP root-path nbd:srv:port:fstype:fsopts" \ - 52:54:00:12:34:04 "root=/dev/root netroot=dhcp ip=dhcp rd.luks=0" ext2 errors=panic || return 1 - # Encrypted root handling via LVM/LUKS over NBD # shellcheck source=$TESTDIR/luks.uuid @@ -203,7 +204,8 @@ make_encrypted_root() { # We do it this way so that we do not risk trashing the host mdraid # devices, volume groups, encrypted partitions, etc. "$DRACUT" -l -i "$TESTDIR"/overlay / \ - -m "test-makeroot crypt lvm mdraid" \ + -a "test-makeroot crypt lvm mdraid" \ + -I "cryptsetup" \ -i ./create-encrypted-root.sh /lib/dracut/hooks/initqueue/01-create-encrypted-root.sh \ --no-hostonly-cmdline -N \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 @@ -217,7 +219,7 @@ make_encrypted_root() { # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/fakeroot rw quiet console=ttyS0,115200n81 selinux=0" \ + -append "root=/dev/fakeroot rw quiet console=ttyS0,115200n81" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 test_marker_check dracut-root-block-created || return 1 grep -F -a -m 1 ID_FS_UUID "$TESTDIR"/marker.img > "$TESTDIR"/luks.uuid @@ -240,7 +242,7 @@ make_client_root() { # We do it this way so that we do not risk trashing the host mdraid # devices, volume groups, encrypted partitions, etc. "$DRACUT" -l -i "$TESTDIR"/overlay / \ - -m "test-makeroot" \ + -a "test-makeroot" \ -i ./create-client-root.sh /lib/dracut/hooks/initqueue/01-create-client-root.sh \ --nomdadmconf \ --no-hostonly-cmdline -N \ @@ -254,7 +256,7 @@ make_client_root() { # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81 selinux=0" \ + -append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 test_marker_check dracut-root-block-created || return 1 rm -fr "$TESTDIR"/overlay @@ -276,14 +278,12 @@ bs = 4096 EOF "$DRACUT" -l --keep --tmpdir "$TESTDIR" \ - -m "test-root network-legacy" \ - -d "nfsd sunrpc ipv6 lockd af_packet 8021q ipvlan macvlan" \ + -a "test-root ${USE_NETWORK}" \ -I "ip grep sleep nbd-server chmod modprobe vi pidof" \ -i "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh" \ -i "${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh" \ --install-optional "/etc/netconfig dhcpd /etc/group /etc/nsswitch.conf /etc/rpc /etc/protocols /etc/services /usr/etc/nsswitch.conf /usr/etc/rpc /usr/etc/protocols /usr/etc/services" \ -i /tmp/config /etc/nbd-server/config \ - -i "./hosts" "/etc/hosts" \ -i "./dhcpd.conf" "/etc/dhcpd.conf" \ --no-hostonly --no-hostonly-cmdline --nohardlink \ -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1 @@ -297,7 +297,7 @@ EOF # We do it this way so that we do not risk trashing the host mdraid # devices, volume groups, encrypted partitions, etc. "$DRACUT" -N -l -i "$TESTDIR"/overlay / \ - -m "test-makeroot" \ + -a "test-makeroot ${USE_NETWORK}" \ -i ./create-server-root.sh /lib/dracut/hooks/initqueue/01-create-server-root.sh \ --nomdadmconf \ --no-hostonly-cmdline -N \ @@ -306,12 +306,12 @@ EOF declare -a disk_args=() 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"/server.img root 240 + qemu_add_drive disk_index disk_args "$TESTDIR"/server.img root 480 # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81 selinux=0" \ + -append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 test_marker_check dracut-root-block-created || return 1 rm -fr "$TESTDIR"/overlay @@ -340,7 +340,7 @@ test_setup() { "$TESTDIR"/initramfs.testing "$DRACUT" -N -l -i "$TESTDIR"/overlay / \ - -a "test rootfs-block debug kernel-modules network-legacy" \ + -a "test rootfs-block debug kernel-modules ${USE_NETWORK}" \ -d "af_packet piix ide-gd_mod ata_piix ext4 sd_mod e1000 drbg" \ -i "./server.link" "/etc/systemd/network/01-server.link" \ -i "./wait-if-server.sh" "/lib/dracut/hooks/pre-mount/99-wait-if-server.sh" \ diff --git a/test/TEST-50-MULTINIC/client-init.sh b/test/TEST-50-MULTINIC/client-init.sh index 8495913..09db5b3 100755 --- a/test/TEST-50-MULTINIC/client-init.sh +++ b/test/TEST-50-MULTINIC/client-init.sh @@ -23,7 +23,7 @@ for i in /sys/class/net/*; do done for i in /run/initramfs/net.*.did-setup; do - # booting with network-legacy module + # booting with network module [ -f "$i" ] || continue strglobin "$i" ":*:*:*:*:" && continue i=${i%.did-setup} diff --git a/test/TEST-50-MULTINIC/hosts b/test/TEST-50-MULTINIC/hosts deleted file mode 100644 index d02a4e9..0000000 --- a/test/TEST-50-MULTINIC/hosts +++ /dev/null @@ -1,5 +0,0 @@ -127.0.0.1 localhost -192.168.50.1 server -192.168.50.100 client-if1 -192.168.50.101 client-if2 -192.168.50.102 client-if3 diff --git a/test/TEST-50-MULTINIC/test.sh b/test/TEST-50-MULTINIC/test.sh index e2aa5a3..71a6271 100755 --- a/test/TEST-50-MULTINIC/test.sh +++ b/test/TEST-50-MULTINIC/test.sh @@ -26,7 +26,7 @@ run_server() { -net socket,listen=127.0.0.1:12350 \ -net nic,macaddr=52:54:01:12:34:56,model=e1000 \ -serial "${SERIAL:-"file:$TESTDIR/server.log"}" \ - -append "panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot root=LABEL=dracut rootfstype=ext4 rw console=ttyS0,115200n81 selinux=0" \ + -append "panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot root=LABEL=dracut rootfstype=ext4 rw console=ttyS0,115200n81" \ -initrd "$TESTDIR"/initramfs.server \ -pidfile "$TESTDIR"/server.pid -daemonize || return 1 @@ -76,7 +76,7 @@ client_test() { -netdev hubport,id=n2,hubid=2 \ -device e1000,netdev=n1,mac=52:54:00:12:34:98 \ -device e1000,netdev=n2,mac=52:54:00:12:34:99 \ - -append "$cmdline rd.retry=5 ro init=/sbin/init systemd.log_target=console" \ + -append "$TEST_KERNEL_CMDLINE $cmdline rd.retry=5 ro init=/sbin/init systemd.log_target=console" \ -initrd "$TESTDIR"/initramfs.testing || return 1 { @@ -208,7 +208,6 @@ test_setup() { instmods nfsd sunrpc ipv6 lockd af_packet inst ./server-init.sh /sbin/init inst_simple /etc/os-release - inst ./hosts /etc/hosts inst ./exports /etc/exports inst ./dhcpd.conf /etc/dhcpd.conf inst_multiple -o {,/usr}/etc/nsswitch.conf {,/usr}/etc/rpc \ @@ -319,7 +318,7 @@ test_setup() { # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81 selinux=0" \ + -append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 test_marker_check dracut-root-block-created || return 1 @@ -355,7 +354,7 @@ test_setup() { ) # Make server's dracut image "$DRACUT" -l -i "$TESTDIR"/overlay / \ - -m "bash rootfs-block debug kernel-modules watchdog qemu network-legacy" \ + -m "bash rootfs-block debug kernel-modules watchdog qemu ${USE_NETWORK}" \ -d "af_packet piix ide-gd_mod ata_piix ext4 sd_mod nfsv2 nfsv3 nfsv4 nfs_acl nfs_layout_nfsv41_files nfsd e1000 i6300esb" \ --no-hostonly-cmdline -N \ -f "$TESTDIR"/initramfs.server "$KVERSION" || return 1 diff --git a/test/TEST-60-BONDBRIDGEVLAN/hosts b/test/TEST-60-BONDBRIDGEVLAN/hosts deleted file mode 100644 index d02a4e9..0000000 --- a/test/TEST-60-BONDBRIDGEVLAN/hosts +++ /dev/null @@ -1,5 +0,0 @@ -127.0.0.1 localhost -192.168.50.1 server -192.168.50.100 client-if1 -192.168.50.101 client-if2 -192.168.50.102 client-if3 diff --git a/test/TEST-60-BONDBRIDGEVLAN/test.sh b/test/TEST-60-BONDBRIDGEVLAN/test.sh index be4cb6d..2ac6d63 100755 --- a/test/TEST-60-BONDBRIDGEVLAN/test.sh +++ b/test/TEST-60-BONDBRIDGEVLAN/test.sh @@ -49,7 +49,7 @@ run_server() { -device virtio-net-pci,netdev=n3,mac=52:54:01:12:34:59 \ -hda "$TESTDIR"/server.ext4 \ -serial "${SERIAL:-"file:$TESTDIR/server.log"}" \ - -append "panic=1 oops=panic softlockup_panic=1 root=LABEL=dracut rootfstype=ext4 rw console=ttyS0,115200n81 selinux=0" \ + -append "panic=1 oops=panic softlockup_panic=1 root=LABEL=dracut rootfstype=ext4 rw console=ttyS0,115200n81" \ -initrd "$TESTDIR"/initramfs.server \ -pidfile "$TESTDIR"/server.pid -daemonize || return 1 chmod 644 -- "$TESTDIR"/server.pid || return 1 @@ -92,6 +92,7 @@ client_test() { -netdev hubport,id=n5,hubid=1 -device virtio-net-pci,mac=52:54:00:12:34:05,netdev=n5 \ -hda "$TESTDIR"/client.img \ -append " + $TEST_KERNEL_CMDLINE ifname=net1:52:54:00:12:34:01 ifname=net2:52:54:00:12:34:02 ifname=net3:52:54:00:12:34:03 @@ -246,7 +247,6 @@ test_setup() { instmods nfsd sunrpc ipv6 lockd af_packet 8021q bonding inst_simple /etc/os-release inst ./server-init.sh /sbin/init - inst ./hosts /etc/hosts inst ./exports /etc/exports inst ./dhcpd.conf /etc/dhcpd.conf inst_multiple -o {,/usr}/etc/nsswitch.conf {,/usr}/etc/rpc {,/usr}/etc/protocols @@ -348,7 +348,7 @@ test_setup() { # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ "${disk_args[@]}" \ - -append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81 selinux=0" \ + -append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 test_marker_check dracut-root-block-created || return 1 rm -- "$TESTDIR"/marker.img diff --git a/test/TEST-98-GETARG/test.sh b/test/TEST-98-GETARG/test.sh index 8f628a2..e7337d9 100755 --- a/test/TEST-98-GETARG/test.sh +++ b/test/TEST-98-GETARG/test.sh @@ -91,14 +91,17 @@ test_run() { . dracut-dev-lib.sh . dracut-lib.sh + # shellcheck disable=SC2317 # overwrites debug_off from dracut-lib.sh debug_off() { : } + # shellcheck disable=SC2317 # overwrites debug_on from dracut-lib.sh debug_on() { : } + # shellcheck disable=SC2317 # called later by getarg in dracut-lib.sh getcmdline() { echo "rdbreak=cmdline rd.lvm rd.auto=0 rd.auto rd.retry=10" } @@ -108,6 +111,7 @@ test_run() { getargbool 1 rd.lvm -d -n rd_NO_LVM || ret=$((ret + 1)) getargbool 0 rd.auto || ret=$((ret + 1)) + # shellcheck disable=SC2317 # called later by getarg in dracut-lib.sh getcmdline() { echo "rd.break=cmdlined rd.lvm=0 rd.auto rd.auto=1 rd.auto=0" } @@ -115,6 +119,7 @@ test_run() { getargbool 1 rd.lvm -d -n rd_NO_LVM && ret=$((ret + 1)) getargbool 0 rd.auto && ret=$((ret + 1)) + # shellcheck disable=SC2317 # called later by getarg in dracut-lib.sh getcmdline() { echo "ip=a ip=b ip=dhcp6" } @@ -126,6 +131,7 @@ test_run() { [[ ${args[$i]} == "${RESULT[$i]}" ]] || ret=$((ret + 1)) done + # shellcheck disable=SC2317 # called later by getarg in dracut-lib.sh getcmdline() { echo "bridge bridge=val" } @@ -136,6 +142,7 @@ test_run() { [[ ${args[$i]} == "${RESULT[$i]}" ]] || ret=$((ret + 1)) done + # shellcheck disable=SC2317 # called later by getarg in dracut-lib.sh getcmdline() { echo "rd.break rd.md.uuid=bf96e457:230c9ad4:1f3e59d6:745cf942 rd.md.uuid=bf96e457:230c9ad4:1f3e59d6:745cf943 rd.shell" } diff --git a/test/container/Dockerfile-Arch b/test/container/Dockerfile-Arch index 2af810a..cc2cb3f 100644 --- a/test/container/Dockerfile-Arch +++ b/test/container/Dockerfile-Arch @@ -16,6 +16,7 @@ RUN pacman --noconfirm -Syu \ dhcp \ dmraid \ elfutils \ + erofs-utils \ f2fs-tools \ git \ glibc \ diff --git a/test/container/Dockerfile-Debian b/test/container/Dockerfile-Debian index 7e7e6d4..37a83a5 100644 --- a/test/container/Dockerfile-Debian +++ b/test/container/Dockerfile-Debian @@ -21,6 +21,7 @@ RUN apt-get update -y -qq && apt-get upgrade -y -qq && apt-get install -y -qq -- docbook \ docbook-xml \ docbook-xsl \ + erofs-utils \ fdisk \ g++ \ gawk \ @@ -57,6 +58,7 @@ RUN apt-get update -y -qq && apt-get upgrade -y -qq && apt-get install -y -qq -- squashfs-tools \ strace \ systemd-boot-efi \ + systemd-coredump \ tcpdump \ tgt \ thin-provisioning-tools \ diff --git a/test/container/Dockerfile-Fedora-latest b/test/container/Dockerfile-Fedora-latest index 106af17..70ea199 100644 --- a/test/container/Dockerfile-Fedora-latest +++ b/test/container/Dockerfile-Fedora-latest @@ -19,6 +19,7 @@ RUN dnf -y install --setopt=install_weak_deps=False \ dhcp-server \ dmraid \ e2fsprogs \ + erofs-utils \ f2fs-tools \ fcoe-utils \ fuse3 \ diff --git a/test/container/Dockerfile-Gentoo b/test/container/Dockerfile-Gentoo index 7b4eb2a..a832752 100644 --- a/test/container/Dockerfile-Gentoo +++ b/test/container/Dockerfile-Gentoo @@ -9,7 +9,7 @@ RUN echo "EMERGE_DEFAULT_OPTS=\"-j$(nproc) -l$(nproc)\"" >> /etc/portage/make.co RUN echo "FEATURES=\"getbinpkg binpkg-ignore-signature parallel-fetch parallel-install pkgdir-index-trusted\"" >> /etc/portage/make.conf # systemd-boot, no need to install intramfs with kernel -RUN echo "USE=\"boot kernel-install -initramfs\"" >> /etc/portage/make.conf +RUN echo "USE=\"boot kernel-install pkcs7 pkcs11 tpm -initramfs\"" >> /etc/portage/make.conf # Use debian's installkernel RUN echo 'sys-kernel/installkernel -systemd' >> /etc/portage/package.use/kernel diff --git a/test/container/Dockerfile-OpenSuse-latest b/test/container/Dockerfile-OpenSuse-latest index a5fb7de..3ea5b10 100644 --- a/test/container/Dockerfile-OpenSuse-latest +++ b/test/container/Dockerfile-OpenSuse-latest @@ -14,8 +14,10 @@ RUN dnf -y install --setopt=install_weak_deps=False \ dhcp-server \ dmraid \ e2fsprogs \ + erofs-utils \ gcc \ git \ + hmaccalc \ iproute \ iputils \ iscsiuio \ diff --git a/test/container/Dockerfile-Ubuntu b/test/container/Dockerfile-Ubuntu index ef15a67..6a0f928 100644 --- a/test/container/Dockerfile-Ubuntu +++ b/test/container/Dockerfile-Ubuntu @@ -20,6 +20,7 @@ RUN apt-get update -y -qq && apt-get upgrade -y -qq && \ docbook \ docbook-xml \ docbook-xsl \ + erofs-utils \ fdisk \ g++ \ gawk \ @@ -56,6 +57,7 @@ RUN apt-get update -y -qq && apt-get upgrade -y -qq && \ squashfs-tools \ strace \ systemd-boot-efi \ + systemd-coredump \ systemd-ukify \ tcpdump \ tgt \ diff --git a/test/container/Dockerfile-Void b/test/container/Dockerfile-Void index 99044c3..9f75547 100644 --- a/test/container/Dockerfile-Void +++ b/test/container/Dockerfile-Void @@ -23,6 +23,7 @@ RUN xbps-install -Syu xbps && xbps-install -yu \ e2fsprogs \ edk2-ovmf \ elfutils \ + erofs-utils \ eudev \ f2fs-tools \ git \ diff --git a/test/container/Dockerfile-alpine b/test/container/Dockerfile-alpine index 4f28c95..c2db721 100644 --- a/test/container/Dockerfile-alpine +++ b/test/container/Dockerfile-alpine @@ -19,6 +19,7 @@ RUN apk add --no-cache \ dmraid \ dosfstools \ e2fsprogs \ + erofs-utils \ eudev \ findmnt \ gawk \ diff --git a/test/run-qemu b/test/run-qemu index 149a407..5c9ee5d 100755 --- a/test/run-qemu +++ b/test/run-qemu @@ -4,13 +4,6 @@ export PATH=/usr/sbin:/usr/bin:/sbin:/bin ARCH="${ARCH-$(uname -m)}" - -case "$ARCH" in - amd64 | i?86 | x86_64) - QEMU_CPU="IvyBridge-v2" - ;; -esac - QEMU_CPU="${QEMU_CPU:-max}" [[ -x /usr/bin/qemu ]] && BIN=/usr/bin/qemu && ARGS=(-cpu "$QEMU_CPU") @@ -43,12 +36,17 @@ case "$ARCH" in esac # Provide rng device sourcing the hosts /dev/urandom and other standard parameters -ARGS+=(-smp 2 -m 1024 -nodefaults -vga none -display none -no-reboot -device i6300esb -watchdog-action poweroff -device virtio-rng-pci) +ARGS+=(-smp 2 -m 2048 -nodefaults -vga none -display none -no-reboot -watchdog-action poweroff -device virtio-rng-pci) if ! [[ $* == *-daemonize* ]] && ! [[ $* == *-daemonize* ]]; then ARGS+=(-serial stdio) fi +# virtual hardware watchdog not available on s390x +if [[ $ARCH != "s390x" ]]; then + ARGS+=(-device i6300esb) +fi + KVERSION=${KVERSION-$(uname -r)} VMLINUZ="/lib/modules/${KVERSION}/vmlinuz" diff --git a/test/test-functions b/test/test-functions index b664fb0..2b32821 100644 --- a/test/test-functions +++ b/test/test-functions @@ -12,13 +12,18 @@ export TESTDIR KVERSION=${KVERSION-$(uname -r)} -[ -z "$USE_NETWORK" ] && USE_NETWORK="network-legacy" +[ -z "$USE_NETWORK" ] && USE_NETWORK="network" if [[ -z $basedir ]]; then basedir="$(realpath ../..)"; fi DRACUT=${DRACUT-${basedir}/dracut.sh} PKGLIBDIR=${PKGLIBDIR-$basedir} +TEST_KERNEL_CMDLINE+=" panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot console=ttyS0,115200n81 $DEBUGFAIL " +if [[ $V != "1" && $V != "2" ]]; then + TEST_KERNEL_CMDLINE+="quiet " +fi + test_dracut() { TEST_DRACUT_ARGS+=" --local --no-hostonly --no-hostonly-cmdline --no-early-microcode --add test --force --kver $KVERSION" @@ -31,7 +36,7 @@ test_dracut() { IFS=' ' read -a TEST_DRACUT_ARGS_ARRAY <<< "$TEST_DRACUT_ARGS" "$DRACUT" \ - --kernel-cmdline "panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot quiet rd.retry=10 rd.info rd.shell=0 selinux=0 console=ttyS0,115200n81 $DEBUGFAIL" \ + --kernel-cmdline "rd.retry=10 rd.info rd.shell=0" \ "${TEST_DRACUT_ARGS_ARRAY[@]}" \ "$@" || return 1 } @@ -143,20 +148,11 @@ while (($# > 0)); do else echo -e "TEST: $TEST_DESCRIPTION " "$COLOR_SUCCESS" "[STARTED]" "$COLOR_NORMAL" fi - if [[ $V == "1" ]]; then - set -o pipefail - ( - test_setup && test_run - ret=$? - test_cleanup - if ((ret != 0)) && [[ -f "$TESTDIR"/server.log ]]; then - mv "$TESTDIR"/server.log ./server${TEST_RUN_ID:+-$TEST_RUN_ID}.log - fi - rm -fr -- "$TESTDIR" - rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID} - exit $ret - ) < /dev/null 2>&1 | tee "test${TEST_RUN_ID:+-$TEST_RUN_ID}.log" - elif [[ $V == "2" ]]; then + if [[ $V == "1" || $V == "2" ]]; then + tee_command="tee" + if [[ $V == "2" && -x "$basedir/logtee" ]]; then + tee_command="$basedir/logtee" + fi set -o pipefail ( test_setup && test_run @@ -168,7 +164,7 @@ while (($# > 0)); do rm -fr -- "$TESTDIR" rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID} exit $ret - ) < /dev/null 2>&1 | "$basedir/logtee" "test${TEST_RUN_ID:+-$TEST_RUN_ID}.log" + ) < /dev/null 2>&1 | "$tee_command" "test${TEST_RUN_ID:+-$TEST_RUN_ID}.log" else ( test_setup && test_run |