diff --git a/test/TEST-01-BASIC/99-idesymlinks.rules b/test/TEST-01-BASIC/99-idesymlinks.rules deleted file mode 100644 index d557790a..00000000 --- a/test/TEST-01-BASIC/99-idesymlinks.rules +++ /dev/null @@ -1,8 +0,0 @@ -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}" diff --git a/test/TEST-01-BASIC/create-root.sh b/test/TEST-01-BASIC/create-root.sh index aa18e1cd..ecdc2b0a 100755 --- a/test/TEST-01-BASIC/create-root.sh +++ b/test/TEST-01-BASIC/create-root.sh @@ -1,24 +1,22 @@ #!/bin/sh + +trap 'poweroff -f' EXIT + # don't let udev and this script step on eachother's toes for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do : > "/etc/udev/rules.d/$x" done rm -f -- /etc/lvm/lvm.conf udevadm control --reload -set -e -# save a partition at the beginning for future flagging purposes -sfdisk /dev/sda << EOF -,1M -, -EOF - udevadm settle -mkfs.ext3 -L ' rdinit=/bin/sh' /dev/sda2 + +set -ex + +mkfs.ext3 -L ' rdinit=/bin/sh' /dev/disk/by-id/ata-disk_root mkdir -p /root -mount /dev/sda2 /root +mount /dev/disk/by-id/ata-disk_root /root cp -a -t /root /source/* mkdir -p /root/run umount /root -echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/sda1 -sync +echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker poweroff -f diff --git a/test/TEST-01-BASIC/test-init.sh b/test/TEST-01-BASIC/test-init.sh index 5dd8eada..9a3940b2 100755 --- a/test/TEST-01-BASIC/test-init.sh +++ b/test/TEST-01-BASIC/test-init.sh @@ -7,7 +7,8 @@ export PATH=/sbin:/bin:/usr/sbin:/usr/bin command -v plymouth > /dev/null 2>&1 && plymouth --quit exec > /dev/console 2>&1 -echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sdb +echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker + export TERM=linux export PS1='initramfs-test:\w\$ ' [ -f /etc/mtab ] || ln -sfn /proc/mounts /etc/mtab @@ -20,5 +21,4 @@ if getargbool 0 rd.shell; then fi echo "Powering down." mount -n -o remount,ro / -sync poweroff -f diff --git a/test/TEST-01-BASIC/test.sh b/test/TEST-01-BASIC/test.sh index 825d717f..b79661da 100755 --- a/test/TEST-01-BASIC/test.sh +++ b/test/TEST-01-BASIC/test.sh @@ -8,21 +8,23 @@ KVERSION=${KVERSION-$(uname -r)} # DEBUGFAIL="rd.shell rd.break" test_run() { - dd if=/dev/zero of="$TESTDIR"/result bs=1M count=1 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/root.img root + "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext3 \ - -drive format=raw,index=1,media=disk,file="$TESTDIR"/result \ + "${disk_args[@]}" \ -watchdog i6300esb -watchdog-action poweroff \ -append "panic=1 systemd.crash_reboot \"root=LABEL= rdinit=/bin/sh\" rw systemd.log_level=debug systemd.log_target=console rd.retry=3 rd.debug console=ttyS0,115200n81 rd.shell=0 $DEBUGFAIL" \ -initrd "$TESTDIR"/initramfs.testing || return 1 - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/result || return 1 + + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img } test_setup() { - rm -f -- "$TESTDIR"/root.ext3 - # Create the blank file to use as a root filesystem - dd if=/dev/zero of="$TESTDIR"/root.ext3 bs=1M count=80 - kernel=$KVERSION # Create what will eventually be our root filesystem onto an overlay ( @@ -72,7 +74,6 @@ test_setup() { inst_multiple sfdisk mkfs.ext3 poweroff cp umount sync dd inst_hook initqueue 01 ./create-root.sh inst_hook initqueue/finished 01 ./finished-false.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) # create an initramfs that will create the target root filesystem. @@ -85,13 +86,22 @@ test_setup() { --no-hostonly-cmdline -N \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 rm -rf -- "$TESTDIR"/overlay - # Invoke KVM and/or QEMU to actually create the target filesystem. + dd if=/dev/zero of="$TESTDIR"/root.img bs=1MiB count=80 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/root.img root + + # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext3 \ + "${disk_args[@]}" \ -append "root=/dev/dracut/root rw rootfstype=ext3 quiet console=ttyS0,115200n81 selinux=0" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/root.ext3 || return 1 + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1 + rm -- "$TESTDIR"/marker.img ( # shellcheck disable=SC2031 @@ -101,7 +111,6 @@ test_setup() { inst_multiple poweroff shutdown dd inst_hook shutdown-emergency 000 ./hard-off.sh inst_hook emergency 000 ./hard-off.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \ -a "debug watchdog" \ diff --git a/test/TEST-02-SYSTEMD/99-idesymlinks.rules b/test/TEST-02-SYSTEMD/99-idesymlinks.rules deleted file mode 100644 index d557790a..00000000 --- a/test/TEST-02-SYSTEMD/99-idesymlinks.rules +++ /dev/null @@ -1,8 +0,0 @@ -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}" diff --git a/test/TEST-02-SYSTEMD/create-root.sh b/test/TEST-02-SYSTEMD/create-root.sh index c5c7c86b..e012a13e 100755 --- a/test/TEST-02-SYSTEMD/create-root.sh +++ b/test/TEST-02-SYSTEMD/create-root.sh @@ -1,4 +1,7 @@ #!/bin/sh + +trap 'poweroff -f' EXIT + # don't let udev and this script step on eachother's toes for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do : > "/etc/udev/rules.d/$x" @@ -6,18 +9,13 @@ done rm -f -- /etc/lvm/lvm.conf udevadm control --reload set -e -# save a partition at the beginning for future flagging purposes -sfdisk /dev/sda << EOF -,1M -, -EOF udevadm settle -mkfs.ext3 -L dracut /dev/sda2 +mkfs.ext3 -L dracut /dev/disk/by-id/ata-disk_root mkdir -p /root -mount /dev/sda2 /root +mount /dev/disk/by-id/ata-disk_root /root cp -a -t /root /source/* mkdir -p /root/run umount /root -echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/sda1 +echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker poweroff -f diff --git a/test/TEST-02-SYSTEMD/test-init.sh b/test/TEST-02-SYSTEMD/test-init.sh index 91f04371..9a3940b2 100755 --- a/test/TEST-02-SYSTEMD/test-init.sh +++ b/test/TEST-02-SYSTEMD/test-init.sh @@ -1,11 +1,14 @@ #!/bin/sh +: > /dev/watchdog + . /lib/dracut-lib.sh export PATH=/sbin:/bin:/usr/sbin:/usr/bin command -v plymouth > /dev/null 2>&1 && plymouth --quit exec > /dev/console 2>&1 -echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sda1 +echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker + export TERM=linux export PS1='initramfs-test:\w\$ ' [ -f /etc/mtab ] || ln -sfn /proc/mounts /etc/mtab @@ -18,5 +21,4 @@ if getargbool 0 rd.shell; then fi echo "Powering down." mount -n -o remount,ro / -sync poweroff -f diff --git a/test/TEST-02-SYSTEMD/test.sh b/test/TEST-02-SYSTEMD/test.sh index 6915a29b..df679610 100755 --- a/test/TEST-02-SYSTEMD/test.sh +++ b/test/TEST-02-SYSTEMD/test.sh @@ -7,18 +7,22 @@ KVERSION="${KVERSION-$(uname -r)}" # Uncomment this to debug failures #DEBUGFAIL="rd.shell=1 rd.break=pre-mount" test_run() { + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/root.img root + "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext3 \ + "${disk_args[@]}" \ -append "panic=1 systemd.crash_reboot root=LABEL=dracut rw loglevel=77 systemd.log_level=debug systemd.log_target=console rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 init=/sbin/init rd.shell=0 $DEBUGFAIL" \ - -initrd "$TESTDIR"/initramfs.testing - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/root.ext3 || return 1 + -initrd "$TESTDIR"/initramfs.testing || return 1 + + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img } test_setup() { - rm -f -- "$TESTDIR"/root.ext3 - # Create the blank file to use as a root filesystem - dd if=/dev/zero of="$TESTDIR"/root.ext3 bs=1M count=80 - kernel=$KVERSION # Create what will eventually be our root filesystem onto an overlay ( @@ -69,7 +73,6 @@ test_setup() { inst_multiple sfdisk mkfs.ext3 poweroff cp umount dd inst_hook initqueue 01 ./create-root.sh inst_hook initqueue/finished 01 ./finished-false.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) # create an initramfs that will create the target root filesystem. @@ -82,13 +85,22 @@ test_setup() { --no-hostonly-cmdline -N \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 rm -rf -- "$TESTDIR"/overlay - # Invoke KVM and/or QEMU to actually create the target filesystem. + dd if=/dev/zero of="$TESTDIR"/root.img bs=1MiB count=80 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/root.img root + + # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext3 \ + "${disk_args[@]}" \ -append "root=/dev/fakeroot rw rootfstype=ext3 quiet console=ttyS0,115200n81 selinux=0" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/root.ext3 || return 1 + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1 + rm -- "$TESTDIR"/marker.img ( # shellcheck disable=SC2031 @@ -99,7 +111,6 @@ test_setup() { inst_hook shutdown-emergency 000 ./hard-off.sh inst_hook pre-pivot 000 ./systemd-analyze.sh inst_hook emergency 000 ./hard-off.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \ -a "debug systemd" \ diff --git a/test/TEST-03-USR-MOUNT/99-idesymlinks.rules b/test/TEST-03-USR-MOUNT/99-idesymlinks.rules deleted file mode 100644 index d557790a..00000000 --- a/test/TEST-03-USR-MOUNT/99-idesymlinks.rules +++ /dev/null @@ -1,8 +0,0 @@ -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}" diff --git a/test/TEST-03-USR-MOUNT/create-root.sh b/test/TEST-03-USR-MOUNT/create-root.sh index 919898ef..90490f80 100755 --- a/test/TEST-03-USR-MOUNT/create-root.sh +++ b/test/TEST-03-USR-MOUNT/create-root.sh @@ -1,44 +1,33 @@ #!/bin/sh + +trap 'poweroff -f' EXIT + # don't let udev and this script step on eachother's toes -set -x for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do : > "/etc/udev/rules.d/$x" done rm -f -- /etc/lvm/lvm.conf udevadm control --reload -udevadm settle set -e -# save a partition at the beginning for future flagging purposes -sfdisk /dev/sda << EOF -,1M -, -EOF - -sfdisk /dev/sdb << EOF -,1M -, -EOF udevadm settle modprobe btrfs -mkfs.btrfs -L dracut /dev/sda2 -mkfs.btrfs -L dracutusr /dev/sdb2 -btrfs device scan /dev/sda2 -btrfs device scan /dev/sdb2 +mkfs.btrfs -L dracut /dev/disk/by-id/ata-disk_root +mkfs.btrfs -L dracutusr /dev/disk/by-id/ata-disk_usr +btrfs device scan /dev/disk/by-id/ata-disk_root +btrfs device scan /dev/disk/by-id/ata-disk_usr mkdir -p /root -mount -t btrfs /dev/sda2 /root +mount -t btrfs /dev/disk/by-id/ata-disk_root /root [ -d /root/usr ] || mkdir -p /root/usr -mount -t btrfs /dev/sdb2 /root/usr +mount -t btrfs /dev/disk/by-id/ata-disk_usr /root/usr btrfs subvolume create /root/usr/usr umount /root/usr -mount -t btrfs -o subvol=usr /dev/sdb2 /root/usr +mount -t btrfs -o subvol=usr /dev/disk/by-id/ata-disk_usr /root/usr cp -a -t /root /source/* mkdir -p /root/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/sda1 -udevadm settle -sync +echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker poweroff -f diff --git a/test/TEST-03-USR-MOUNT/fstab b/test/TEST-03-USR-MOUNT/fstab index 0cc33705..feac57a4 100644 --- a/test/TEST-03-USR-MOUNT/fstab +++ b/test/TEST-03-USR-MOUNT/fstab @@ -1,2 +1,2 @@ -/dev/sda2 / btrfs defaults 0 0 -/dev/sdb2 /usr btrfs subvol=usr,ro 0 0 +/dev/disk/by-id/ata-disk_root / btrfs defaults 0 0 +/dev/disk/by-id/ata-disk_usr /usr btrfs subvol=usr,ro 0 0 diff --git a/test/TEST-03-USR-MOUNT/test-init.sh b/test/TEST-03-USR-MOUNT/test-init.sh index 389d329b..9a3940b2 100755 --- a/test/TEST-03-USR-MOUNT/test-init.sh +++ b/test/TEST-03-USR-MOUNT/test-init.sh @@ -1,5 +1,4 @@ #!/bin/sh - : > /dev/watchdog . /lib/dracut-lib.sh @@ -8,9 +7,8 @@ export PATH=/sbin:/bin:/usr/sbin:/usr/bin command -v plymouth > /dev/null 2>&1 && plymouth --quit exec > /dev/console 2>&1 -if ismounted /usr; then - echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sdc -fi +echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker + export TERM=linux export PS1='initramfs-test:\w\$ ' [ -f /etc/mtab ] || ln -sfn /proc/mounts /etc/mtab @@ -23,5 +21,4 @@ if getargbool 0 rd.shell; then fi echo "Powering down." mount -n -o remount,ro / -sync poweroff -f diff --git a/test/TEST-03-USR-MOUNT/test.sh b/test/TEST-03-USR-MOUNT/test.sh index d8360a57..f7d65e94 100755 --- a/test/TEST-03-USR-MOUNT/test.sh +++ b/test/TEST-03-USR-MOUNT/test.sh @@ -15,16 +15,21 @@ client_run() { echo "CLIENT TEST START: $test_name" - dd if=/dev/zero of="$TESTDIR"/result bs=1M count=1 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/root.btrfs root + qemu_add_drive_args disk_index disk_args "$TESTDIR"/usr.btrfs usr + "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.btrfs \ - -drive format=raw,index=1,media=disk,file="$TESTDIR"/usr.btrfs \ - -drive format=raw,index=2,media=disk,file="$TESTDIR"/result \ + "${disk_args[@]}" \ -watchdog i6300esb -watchdog-action poweroff \ -append "panic=1 systemd.crash_reboot root=LABEL=dracut $client_opts loglevel=7 rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug rd.shell=0 $DEBUGFAIL" \ - -initrd "$TESTDIR"/initramfs.testing + -initrd "$TESTDIR"/initramfs.testing || return 1 - if ! grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/result; then + if ! grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img; then echo "CLIENT TEST END: $test_name [FAILED]" return 1 fi @@ -40,12 +45,6 @@ test_run() { } test_setup() { - rm -f -- "$TESTDIR"/root.btrfs - rm -f -- "$TESTDIR"/usr.btrfs - # Create the blank file to use as a root filesystem - dd if=/dev/zero of="$TESTDIR"/root.btrfs bs=1M count=160 - dd if=/dev/zero of="$TESTDIR"/usr.btrfs bs=1M count=160 - kernel=$KVERSION # Create what will eventually be our root filesystem onto an overlay ( @@ -77,7 +76,7 @@ test_setup() { ln -s dracut-util "${initdir}/usr/bin/dracut-getarg" ln -s dracut-util "${initdir}/usr/bin/dracut-getargs" - inst_multiple grep + inst_multiple grep df inst_simple ./fstab /etc/fstab inst_simple /etc/os-release inst ./test-init.sh /sbin/init @@ -96,7 +95,6 @@ test_setup() { inst_multiple sfdisk mkfs.btrfs btrfs poweroff cp umount sync dd inst_hook initqueue 01 ./create-root.sh inst_hook initqueue/finished 01 ./finished-false.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) # create an initramfs that will create the target root filesystem. @@ -109,20 +107,26 @@ test_setup() { --nohardlink \ --no-hostonly-cmdline -N \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 - - # Invoke KVM and/or QEMU to actually create the target filesystem. - - # echo $TESTDIR/overlay - # echo $TESTDIR/initramfs.makeroot - #exit 1 rm -rf -- "$TESTDIR"/overlay + # Create the blank file to use as a root filesystem + dd if=/dev/zero of="$TESTDIR"/root.btrfs bs=1MiB count=160 + dd if=/dev/zero of="$TESTDIR"/usr.btrfs bs=1MiB count=160 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/root.btrfs root + qemu_add_drive_args disk_index disk_args "$TESTDIR"/usr.btrfs usr + + # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.btrfs \ - -drive format=raw,index=1,media=disk,file="$TESTDIR"/usr.btrfs \ + "${disk_args[@]}" \ -append "root=/dev/dracut/root rw rootfstype=btrfs quiet console=ttyS0,115200n81 selinux=0" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 - if ! grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/root.btrfs; then + + if ! grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img; then echo "Could not create root filesystem" return 1 fi @@ -135,7 +139,6 @@ test_setup() { inst_multiple poweroff shutdown dd inst_hook shutdown-emergency 000 ./hard-off.sh inst_hook emergency 000 ./hard-off.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \ -a "debug watchdog" \ diff --git a/test/TEST-04-FULL-SYSTEMD/99-idesymlinks.rules b/test/TEST-04-FULL-SYSTEMD/99-idesymlinks.rules deleted file mode 100644 index d557790a..00000000 --- a/test/TEST-04-FULL-SYSTEMD/99-idesymlinks.rules +++ /dev/null @@ -1,8 +0,0 @@ -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}" diff --git a/test/TEST-04-FULL-SYSTEMD/create-root.sh b/test/TEST-04-FULL-SYSTEMD/create-root.sh index 9f8b5ba1..90490f80 100755 --- a/test/TEST-04-FULL-SYSTEMD/create-root.sh +++ b/test/TEST-04-FULL-SYSTEMD/create-root.sh @@ -1,44 +1,33 @@ #!/bin/sh + +trap 'poweroff -f' EXIT + # don't let udev and this script step on eachother's toes -set -x for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do : > "/etc/udev/rules.d/$x" done rm -f -- /etc/lvm/lvm.conf -modprobe btrfs udevadm control --reload -udevadm settle set -e -# save a partition at the beginning for future flagging purposes -sfdisk /dev/sda << EOF -,1M -, -EOF - -sfdisk /dev/sdb << EOF -,1M -, -EOF udevadm settle - -mkfs.btrfs -L dracut /dev/sda2 -mkfs.btrfs -L dracutusr /dev/sdb2 -btrfs device scan /dev/sda2 -btrfs device scan /dev/sdb2 +modprobe btrfs +mkfs.btrfs -L dracut /dev/disk/by-id/ata-disk_root +mkfs.btrfs -L dracutusr /dev/disk/by-id/ata-disk_usr +btrfs device scan /dev/disk/by-id/ata-disk_root +btrfs device scan /dev/disk/by-id/ata-disk_usr mkdir -p /root -mount -t btrfs /dev/sda2 /root +mount -t btrfs /dev/disk/by-id/ata-disk_root /root [ -d /root/usr ] || mkdir -p /root/usr -mount -t btrfs /dev/sdb2 /root/usr +mount -t btrfs /dev/disk/by-id/ata-disk_usr /root/usr btrfs subvolume create /root/usr/usr umount /root/usr -mount -t btrfs -o subvol=usr /dev/sdb2 /root/usr +mount -t btrfs -o subvol=usr /dev/disk/by-id/ata-disk_usr /root/usr cp -a -t /root /source/* mkdir -p /root/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/sdc -sync +echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker poweroff -f diff --git a/test/TEST-04-FULL-SYSTEMD/fstab b/test/TEST-04-FULL-SYSTEMD/fstab index 354107b1..feac57a4 100644 --- a/test/TEST-04-FULL-SYSTEMD/fstab +++ b/test/TEST-04-FULL-SYSTEMD/fstab @@ -1,2 +1,2 @@ -LABEL=dracut / btrfs subvol=root 0 0 -LABEL=dracutusr /usr btrfs subvol=usr,ro 0 0 +/dev/disk/by-id/ata-disk_root / btrfs defaults 0 0 +/dev/disk/by-id/ata-disk_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 d46a1263..e87f30cc 100755 --- a/test/TEST-04-FULL-SYSTEMD/test-init.sh +++ b/test/TEST-04-FULL-SYSTEMD/test-init.sh @@ -21,7 +21,7 @@ else echo "**************************FAILED**************************" else - echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sdc + echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker echo "All OK" fi fi @@ -33,11 +33,9 @@ export PS1='initramfs-test:\w\$ ' stty sane echo "made it to the rootfs!" if getargbool 0 rd.shell; then - # while sleep 1; do sleep 1;done strstr "$(setsid --help)" "control" && CTTY="-c" setsid $CTTY sh -i fi -sync -systemctl poweroff echo "Powering down." +systemctl --no-block poweroff exit 0 diff --git a/test/TEST-04-FULL-SYSTEMD/test.sh b/test/TEST-04-FULL-SYSTEMD/test.sh index bbe268c5..8919c985 100755 --- a/test/TEST-04-FULL-SYSTEMD/test.sh +++ b/test/TEST-04-FULL-SYSTEMD/test.sh @@ -17,15 +17,20 @@ client_run() { echo "CLIENT TEST START: $test_name" - dd if=/dev/zero of="$TESTDIR"/result bs=1M count=1 - "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.btrfs \ - -drive format=raw,index=1,media=disk,file="$TESTDIR"/usr.btrfs \ - -drive format=raw,index=2,media=disk,file="$TESTDIR"/result \ - -append "panic=1 systemd.crash_reboot root=LABEL=dracut $client_opts rd.retry=3 console=ttyS0,115200n81 selinux=0 $DEBUGOUT rd.shell=0 $DEBUGFAIL" \ - -initrd "$TESTDIR"/initramfs.testing + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/root.btrfs root + qemu_add_drive_args disk_index disk_args "$TESTDIR"/usr.btrfs usr - if ! grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/result; then + "$testdir"/run-qemu \ + "${disk_args[@]}" \ + -append "panic=1 systemd.crash_reboot root=LABEL=dracut $client_opts rd.retry=3 console=ttyS0,115200n81 selinux=0 $DEBUGOUT rd.shell=0 $DEBUGFAIL" \ + -initrd "$TESTDIR"/initramfs.testing || return 1 + + if ! grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img; then echo "CLIENT TEST END: $test_name [FAILED]" return 1 fi @@ -41,11 +46,9 @@ test_run() { } test_setup() { - rm -f -- "$TESTDIR"/root.btrfs - rm -f -- "$TESTDIR"/usr.btrfs - # Create the blank file to use as a root filesystem - dd if=/dev/zero of="$TESTDIR"/root.btrfs bs=1M count=320 - dd if=/dev/zero of="$TESTDIR"/usr.btrfs bs=1M count=320 + # shellcheck disable=SC2064 + trap "$(shopt -p nullglob globstar)" RETURN + shopt -q -s nullglob globstar export kernel=$KVERSION # Create what will eventually be our root filesystem onto an overlay @@ -69,7 +72,7 @@ test_setup() { inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip \ mount dmesg mkdir cp ping dd \ - umount strace less setsid tree systemctl reset sync + umount strace less setsid systemctl reset sync for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do [ -f ${_terminfodir}/l/linux ] && break @@ -81,9 +84,7 @@ test_setup() { inst /lib/systemd/system/systemd-remount-fs.service inst /lib/systemd/systemd-remount-fs inst /lib/systemd/system/systemd-journal-flush.service - inst /etc/sysconfig/init inst /lib/systemd/system/slices.target - inst /lib/systemd/system/system.slice inst_multiple -o /lib/systemd/system/dracut* inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh" @@ -150,28 +151,26 @@ EOF # install basic tools needed inst_multiple sh bash setsid loadkeys setfont \ - login sushell sulogin gzip sleep echo mount umount + login sulogin gzip sleep echo mount umount inst_multiple modprobe # install libnss_files for login inst_libdir_file "libnss_files*" # install dbus and pam - find \ - /etc/dbus-1 \ - /etc/pam.d \ - /etc/security \ - /lib64/security \ - /lib/security -xtype f \ - | while read -r file || [ -n "$file" ]; do - inst_multiple -o "$file" - done + inst_multiple -o \ + /etc/dbus-1/** \ + /etc/pam.d/** \ + /etc/security/** \ + /lib64/security/** \ + /lib/security/** # install dbus socket and service file - inst /usr/lib/systemd/system/dbus.socket - inst /usr/lib/systemd/system/dbus.service - inst /usr/lib/systemd/system/dbus-broker.service - inst /usr/lib/systemd/system/dbus-daemon.service + inst_multiple -o \ + /usr/lib/systemd/system/dbus.socket \ + /usr/lib/systemd/system/dbus.service \ + /usr/lib/systemd/system/dbus-broker.service \ + /usr/lib/systemd/system/dbus-daemon.service ( echo "FONT=eurlatgr" @@ -240,7 +239,6 @@ EOF inst_multiple sfdisk mkfs.btrfs btrfs poweroff cp umount sync dd inst_hook initqueue 01 ./create-root.sh inst_hook initqueue/finished 01 ./finished-false.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) # create an initramfs that will create the target root filesystem. @@ -253,18 +251,26 @@ EOF --nohardlink \ --no-hostonly-cmdline -N \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 - - # Invoke KVM and/or QEMU to actually create the target filesystem. rm -rf -- "$TESTDIR"/overlay - dd if=/dev/zero of="$TESTDIR"/result bs=1M count=1 + # Create the blank file to use as a root filesystem + dd if=/dev/zero of="$TESTDIR"/root.btrfs bs=1MiB count=160 + dd if=/dev/zero of="$TESTDIR"/usr.btrfs bs=1MiB count=160 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/root.btrfs root + qemu_add_drive_args disk_index disk_args "$TESTDIR"/usr.btrfs usr + + # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.btrfs \ - -drive format=raw,index=1,media=disk,file="$TESTDIR"/usr.btrfs \ - -drive format=raw,index=2,media=disk,file="$TESTDIR"/result \ + "${disk_args[@]}" \ -append "root=/dev/fakeroot rw rootfstype=btrfs quiet console=ttyS0,115200n81 selinux=0" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 - if ! grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/result; then + + if ! grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img; then echo "Could not create root filesystem" return 1 fi @@ -277,7 +283,6 @@ EOF inst_multiple poweroff shutdown dd inst_hook shutdown-emergency 000 ./hard-off.sh inst_hook emergency 000 ./hard-off.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) [ -e /etc/machine-id ] && EXTRA_MACHINE="/etc/machine-id" diff --git a/test/TEST-10-RAID/99-idesymlinks.rules b/test/TEST-10-RAID/99-idesymlinks.rules deleted file mode 100644 index d557790a..00000000 --- a/test/TEST-10-RAID/99-idesymlinks.rules +++ /dev/null @@ -1,8 +0,0 @@ -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}" diff --git a/test/TEST-10-RAID/create-root.sh b/test/TEST-10-RAID/create-root.sh index 9c26f0ac..2012b729 100755 --- a/test/TEST-10-RAID/create-root.sh +++ b/test/TEST-10-RAID/create-root.sh @@ -1,4 +1,7 @@ #!/bin/sh + +trap 'poweroff -f' EXIT + # don't let udev and this script step on eachother's toes for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do : > "/etc/udev/rules.d/$x" @@ -6,40 +9,39 @@ done rm -f -- /etc/lvm/lvm.conf udevadm control --reload udevadm settle -# save a partition at the beginning for future flagging purposes -sfdisk /dev/sda << EOF -,4M -,41M -,41M -,41M -EOF -udevadm settle -mdadm --create /dev/md0 --run --auto=yes --level=5 --raid-devices=3 /dev/sda2 /dev/sda3 /dev/sda4 +set -ex +mdadm --create /dev/md0 --run --auto=yes --level=5 --raid-devices=3 /dev/disk/by-id/ata-disk_raid[123] # wait for the array to finish initailizing, otherwise this sometimes fails # randomly. -mdadm -W /dev/md0 -set -e +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 -l 100%FREE -n root dracut \ - && lvm vgchange -ay -mke2fs /dev/dracut/root +lvm lvcreate -l 100%FREE -n root dracut +lvm vgchange -ay +mke2fs -L root /dev/dracut/root mkdir -p /sysroot mount /dev/dracut/root /sysroot 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=env --name=/dev/md0 | while read -r line || [ -n "$line" ]; do [ "$line" != "${line#*ID_FS_UUID*}" ] && echo "$line"; done)" { echo "dracut-root-block-created" + echo MD_UUID="$MD_UUID" echo "ID_FS_UUID=$ID_FS_UUID" -} | dd oflag=direct,dsync of=/dev/sda1 +} | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker sync poweroff -f diff --git a/test/TEST-10-RAID/test-init.sh b/test/TEST-10-RAID/test-init.sh index 9a0ed37f..9a3940b2 100755 --- a/test/TEST-10-RAID/test-init.sh +++ b/test/TEST-10-RAID/test-init.sh @@ -1,19 +1,24 @@ #!/bin/sh +: > /dev/watchdog + . /lib/dracut-lib.sh export PATH=/sbin:/bin:/usr/sbin:/usr/bin command -v plymouth > /dev/null 2>&1 && plymouth --quit exec > /dev/console 2>&1 -echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sda1 +echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker + export TERM=linux export PS1='initramfs-test:\w\$ ' [ -f /etc/mtab ] || ln -sfn /proc/mounts /etc/mtab [ -f /etc/fstab ] || ln -sfn /proc/mounts /etc/fstab stty sane echo "made it to the rootfs!" -getargbool 0 rd.shell && sh -i +if getargbool 0 rd.shell; then + strstr "$(setsid --help)" "control" && CTTY="-c" + setsid $CTTY sh -i +fi echo "Powering down." mount -n -o remount,ro / -sync poweroff -f diff --git a/test/TEST-10-RAID/test.sh b/test/TEST-10-RAID/test.sh index ad82c2e7..79e62393 100755 --- a/test/TEST-10-RAID/test.sh +++ b/test/TEST-10-RAID/test.sh @@ -8,20 +8,24 @@ KVERSION=${KVERSION-$(uname -r)} #DEBUGFAIL="rd.shell rd.udev.log-priority=debug loglevel=70 systemd.log_target=kmsg" #DEBUGFAIL="rd.break rd.shell rd.debug debug" test_run() { - DISKIMAGE=$TESTDIR/TEST-10-RAID-root.img + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-1.img raid1 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-2.img raid2 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-3.img raid3 + "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$DISKIMAGE" \ + "${disk_args[@]}" \ -append "panic=1 systemd.crash_reboot root=/dev/dracut/root rd.auto rw rd.retry=10 console=ttyS0,115200n81 selinux=0 rd.shell=0 $DEBUGFAIL" \ - -initrd "$TESTDIR"/initramfs.testing - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$DISKIMAGE" || return 1 + -initrd "$TESTDIR"/initramfs.testing || return 1 + + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img } test_setup() { - DISKIMAGE=$TESTDIR/TEST-10-RAID-root.img - # Create the blank file to use as a root filesystem - rm -f -- "$DISKIMAGE" - dd if=/dev/zero of="$DISKIMAGE" bs=1M count=128 - kernel=$KVERSION # Create what will eventually be our root filesystem onto an overlay ( @@ -67,10 +71,9 @@ test_setup() { export initdir=$TESTDIR/overlay # shellcheck disable=SC1090 . "$basedir"/dracut-init.sh - inst_multiple sfdisk mke2fs poweroff cp umount dd sync + inst_multiple sfdisk mke2fs poweroff cp umount dd sync grep inst_hook initqueue 01 ./create-root.sh inst_hook initqueue/finished 01 ./finished-false.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) # create an initramfs that will create the target root filesystem. @@ -83,13 +86,26 @@ test_setup() { --no-hostonly-cmdline -N \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 rm -rf -- "$TESTDIR"/overlay - # Invoke KVM and/or QEMU to actually create the target filesystem. + + # Create the blank files to use as a root filesystem + dd if=/dev/zero of="$TESTDIR"/raid-1.img bs=1MiB count=40 + dd if=/dev/zero of="$TESTDIR"/raid-2.img bs=1MiB count=40 + dd if=/dev/zero of="$TESTDIR"/raid-3.img bs=1MiB count=40 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-1.img raid1 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-2.img raid2 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-3.img raid3 + "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$DISKIMAGE" \ + "${disk_args[@]}" \ -append "root=/dev/cannotreach rw rootfstype=ext2 console=ttyS0,115200n81 selinux=0" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$DISKIMAGE" || return 1 - eval "$(grep -F -a -m 1 ID_FS_UUID "$DISKIMAGE")" + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1 + eval "$(grep -F -a -m 1 ID_FS_UUID "$TESTDIR"/marker.img)" ( # shellcheck disable=SC2031 @@ -104,7 +120,6 @@ test_setup() { echo "testluks UUID=$ID_FS_UUID /etc/key" > "$initdir"/etc/crypttab #echo "luks-$ID_FS_UUID /dev/md0 none" > $initdir/etc/crypttab echo -n "test" > "$initdir"/etc/key - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \ diff --git a/test/TEST-11-LVM/99-idesymlinks.rules b/test/TEST-11-LVM/99-idesymlinks.rules deleted file mode 100644 index d557790a..00000000 --- a/test/TEST-11-LVM/99-idesymlinks.rules +++ /dev/null @@ -1,8 +0,0 @@ -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}" diff --git a/test/TEST-11-LVM/create-root.sh b/test/TEST-11-LVM/create-root.sh index 3d2638e3..398f7727 100755 --- a/test/TEST-11-LVM/create-root.sh +++ b/test/TEST-11-LVM/create-root.sh @@ -1,4 +1,7 @@ #!/bin/sh + +trap 'poweroff -f' EXIT + # don't let udev and this script step on eachother's toes for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do : > "/etc/udev/rules.d/$x" @@ -6,28 +9,20 @@ done rm -f -- /etc/lvm/lvm.conf udevadm control --reload udevadm settle -# save a partition at the beginning for future flagging purposes -sfdisk /dev/sda << EOF -,2M -,20M -,20M -,20M -EOF -udevadm settle -for i in sda2 sda3 sda4; do - lvm pvcreate -ff -y /dev/$i -done \ - && lvm vgcreate dracut /dev/sda[234] \ - && lvm lvcreate -l 100%FREE -n root dracut \ - && lvm vgchange -ay \ - && mke2fs /dev/dracut/root \ - && mkdir -p /sysroot \ - && mount /dev/dracut/root /sysroot \ - && cp -a -t /sysroot /source/* \ - && umount /sysroot \ - && sleep 1 \ - && lvm lvchange -a n /dev/dracut/root \ - && sleep 1 \ - && echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/sda1 -sync + +set -ex +for dev in /dev/disk/by-id/ata-disk_disk[123]; do + lvm pvcreate -ff -y "$dev" +done + +lvm vgcreate dracut /dev/disk/by-id/ata-disk_disk[123] +lvm lvcreate -l 100%FREE -n root dracut +lvm vgchange -ay +mke2fs /dev/dracut/root +mkdir -p /sysroot +mount /dev/dracut/root /sysroot +cp -a -t /sysroot /source/* +umount /sysroot +lvm lvchange -a n /dev/dracut/root +echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker poweroff -f diff --git a/test/TEST-11-LVM/test-init.sh b/test/TEST-11-LVM/test-init.sh index 9a0ed37f..9a3940b2 100755 --- a/test/TEST-11-LVM/test-init.sh +++ b/test/TEST-11-LVM/test-init.sh @@ -1,19 +1,24 @@ #!/bin/sh +: > /dev/watchdog + . /lib/dracut-lib.sh export PATH=/sbin:/bin:/usr/sbin:/usr/bin command -v plymouth > /dev/null 2>&1 && plymouth --quit exec > /dev/console 2>&1 -echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sda1 +echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker + export TERM=linux export PS1='initramfs-test:\w\$ ' [ -f /etc/mtab ] || ln -sfn /proc/mounts /etc/mtab [ -f /etc/fstab ] || ln -sfn /proc/mounts /etc/fstab stty sane echo "made it to the rootfs!" -getargbool 0 rd.shell && sh -i +if getargbool 0 rd.shell; then + strstr "$(setsid --help)" "control" && CTTY="-c" + setsid $CTTY sh -i +fi echo "Powering down." mount -n -o remount,ro / -sync poweroff -f diff --git a/test/TEST-11-LVM/test.sh b/test/TEST-11-LVM/test.sh index 92c0eae0..ac2481a7 100755 --- a/test/TEST-11-LVM/test.sh +++ b/test/TEST-11-LVM/test.sh @@ -9,17 +9,24 @@ KVERSION=${KVERSION-$(uname -r)} #DEBUGFAIL="rd.break rd.shell" test_run() { + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-1.img disk1 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-2.img disk2 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-3.img disk3 + "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext2 \ + "${disk_args[@]}" \ -append "panic=1 systemd.crash_reboot root=/dev/dracut/root rw rd.auto=1 quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug rd.shell=0 $DEBUGFAIL" \ - -initrd "$TESTDIR"/initramfs.testing - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/root.ext2 || return 1 + -initrd "$TESTDIR"/initramfs.testing || return 1 + + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img } test_setup() { - # Create the blank file to use as a root filesystem - dd if=/dev/zero of="$TESTDIR"/root.ext2 bs=1M count=80 - kernel=$KVERSION # Create what will eventually be our root filesystem onto an overlay ( @@ -69,7 +76,6 @@ test_setup() { inst_multiple sfdisk mke2fs poweroff cp umount dd sync inst_hook initqueue 01 ./create-root.sh inst_hook initqueue/finished 01 ./finished-false.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) # create an initramfs that will create the target root filesystem. @@ -81,11 +87,26 @@ test_setup() { --no-hostonly-cmdline -N \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 rm -rf -- "$TESTDIR"/overlay - # Invoke KVM and/or QEMU to actually create the target filesystem. - "$testdir"/run-qemu -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext2 \ + + # Create the blank files to use as a root filesystem + dd if=/dev/zero of="$TESTDIR"/disk-1.img bs=1MiB count=40 + dd if=/dev/zero of="$TESTDIR"/disk-2.img bs=1MiB count=40 + dd if=/dev/zero of="$TESTDIR"/disk-3.img bs=1MiB count=40 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-1.img disk1 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-2.img disk2 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-3.img disk3 + + "$testdir"/run-qemu \ + "${disk_args[@]}" \ -append "root=/dev/fakeroot rw rootfstype=ext2 quiet console=ttyS0,115200n81 selinux=0" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/root.ext2 || return 1 + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1 + ( # shellcheck disable=SC2031 export initdir=$TESTDIR/overlay @@ -94,7 +115,6 @@ test_setup() { inst_multiple poweroff shutdown dd inst_hook shutdown-emergency 000 ./hard-off.sh inst_hook emergency 000 ./hard-off.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \ -o "plymouth network kernel-network-modules" \ diff --git a/test/TEST-12-RAID-DEG/99-idesymlinks.rules b/test/TEST-12-RAID-DEG/99-idesymlinks.rules deleted file mode 100644 index d557790a..00000000 --- a/test/TEST-12-RAID-DEG/99-idesymlinks.rules +++ /dev/null @@ -1,8 +0,0 @@ -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}" diff --git a/test/TEST-12-RAID-DEG/create-root.sh b/test/TEST-12-RAID-DEG/create-root.sh index 2ad00fa5..2012b729 100755 --- a/test/TEST-12-RAID-DEG/create-root.sh +++ b/test/TEST-12-RAID-DEG/create-root.sh @@ -1,24 +1,22 @@ #!/bin/sh -# don't let udev and this script step on eachother's toes trap 'poweroff -f' EXIT +# don't let udev and this script step on eachother's toes for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do : > "/etc/udev/rules.d/$x" done rm -f -- /etc/lvm/lvm.conf udevadm control --reload udevadm settle -sleep 1 -mdadm --create /dev/md0 --run --auto=yes --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd +set -ex +mdadm --create /dev/md0 --run --auto=yes --level=5 --raid-devices=3 /dev/disk/by-id/ata-disk_raid[123] # wait for the array to finish initailizing, otherwise this sometimes fails # randomly. -mdadm -W /dev/md0 +mdadm -W /dev/md0 || : printf test > keyfile cryptsetup -q luksFormat /dev/md0 /keyfile echo "The passphrase is test" -set -e -set -x 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 @@ -44,6 +42,6 @@ eval "$(udevadm info --query=env --name=/dev/md0 | while read -r line || [ -n "$ echo "dracut-root-block-created" echo MD_UUID="$MD_UUID" echo "ID_FS_UUID=$ID_FS_UUID" -} | dd oflag=direct,dsync of=/dev/sda +} | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker sync poweroff -f diff --git a/test/TEST-12-RAID-DEG/test-init.sh b/test/TEST-12-RAID-DEG/test-init.sh index dd5c57de..64fc6059 100755 --- a/test/TEST-12-RAID-DEG/test-init.sh +++ b/test/TEST-12-RAID-DEG/test-init.sh @@ -1,23 +1,27 @@ #!/bin/sh +: > /dev/watchdog + . /lib/dracut-lib.sh export PATH=/sbin:/bin:/usr/sbin:/usr/bin command -v plymouth > /dev/null 2>&1 && plymouth --quit exec > /dev/console 2>&1 -echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sda +echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker + export TERM=linux export PS1='initramfs-test:\w\$ ' [ -f /etc/mtab ] || ln -sfn /proc/mounts /etc/mtab [ -f /etc/fstab ] || ln -sfn /proc/mounts /etc/fstab stty sane echo "made it to the rootfs!" -getargbool 0 rd.shell && sh -i +if getargbool 0 rd.shell; then + strstr "$(setsid --help)" "control" && CTTY="-c" + setsid $CTTY sh -i +fi echo "Powering down." mount -n -o remount,ro / -#echo " rd.break=shutdown " >> /run/initramfs/etc/cmdline if [ -d /run/initramfs/etc ]; then echo " rd.debug=0 " >> /run/initramfs/etc/cmdline fi -sync poweroff -f diff --git a/test/TEST-12-RAID-DEG/test.sh b/test/TEST-12-RAID-DEG/test.sh index 2e7aa3ef..3f3f1ffb 100755 --- a/test/TEST-12-RAID-DEG/test.sh +++ b/test/TEST-12-RAID-DEG/test.sh @@ -12,21 +12,25 @@ KVERSION=${KVERSION-$(uname -r)} client_run() { echo "CLIENT TEST START: $*" - cp --sparse=always --reflink=auto "$TESTDIR"/disk2.img "$TESTDIR"/disk2.img.new - cp --sparse=always --reflink=auto "$TESTDIR"/disk3.img "$TESTDIR"/disk3.img.new + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + # degrade the RAID + # qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-1.img raid1 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-2.img raid2 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-3.img raid3 "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/marker.img \ - -drive format=raw,index=2,media=disk,file="$TESTDIR"/disk2.img.new \ - -drive format=raw,index=3,media=disk,file="$TESTDIR"/disk3.img.new \ + "${disk_args[@]}" \ -append "panic=1 systemd.crash_reboot $* systemd.log_target=kmsg root=LABEL=root rw rd.retry=10 rd.info console=ttyS0,115200n81 log_buf_len=2M selinux=0 rd.shell=0 $DEBUGFAIL " \ -initrd "$TESTDIR"/initramfs.testing + if ! grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img; then echo "CLIENT TEST END: $* [FAIL]" return 1 fi - rm -f -- "$TESTDIR"/marker.img - dd if=/dev/zero of="$TESTDIR"/marker.img bs=1M count=40 echo "CLIENT TEST END: $* [OK]" return 0 @@ -54,13 +58,6 @@ test_run() { } test_setup() { - # Create the blank file to use as a root filesystem - rm -f -- "$TESTDIR"/marker.img - dd if=/dev/zero of="$TESTDIR"/marker.img bs=1M count=40 - dd if=/dev/zero of="$TESTDIR"/disk1.img bs=1M count=35 - dd if=/dev/zero of="$TESTDIR"/disk2.img bs=1M count=35 - dd if=/dev/zero of="$TESTDIR"/disk3.img bs=1M count=35 - kernel=$KVERSION # Create what will eventually be our root filesystem onto an overlay ( @@ -108,7 +105,6 @@ test_setup() { inst_multiple sfdisk mke2fs poweroff cp umount dd grep sync inst_hook initqueue 01 ./create-root.sh inst_hook initqueue/finished 01 ./finished-false.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) # create an initramfs that will create the target root filesystem. @@ -120,12 +116,22 @@ test_setup() { --no-hostonly-cmdline -N \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 rm -rf -- "$TESTDIR"/overlay - # Invoke KVM and/or QEMU to actually create the target filesystem. + + # Create the blank files to use as a root filesystem + dd if=/dev/zero of="$TESTDIR"/raid-1.img bs=1MiB count=40 + dd if=/dev/zero of="$TESTDIR"/raid-2.img bs=1MiB count=40 + dd if=/dev/zero of="$TESTDIR"/raid-3.img bs=1MiB count=40 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-1.img raid1 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-2.img raid2 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-3.img raid3 + "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/marker.img \ - -drive format=raw,index=1,media=disk,file="$TESTDIR"/disk1.img \ - -drive format=raw,index=2,media=disk,file="$TESTDIR"/disk2.img \ - -drive format=raw,index=3,media=disk,file="$TESTDIR"/disk3.img \ + "${disk_args[@]}" \ -append "root=/dev/fakeroot rw rootfstype=ext2 quiet console=ttyS0,115200n81 selinux=0" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 @@ -144,12 +150,12 @@ test_setup() { inst_multiple poweroff shutdown dd inst_hook shutdown-emergency 000 ./hard-off.sh inst_hook emergency 000 ./hard-off.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules inst ./cryptroot-ask.sh /sbin/cryptroot-ask mkdir -p "$initdir"/etc echo "ARRAY /dev/md0 level=raid5 num-devices=3 UUID=$MD_UUID" > "$initdir"/etc/mdadm.conf echo "luks-$ID_FS_UUID UUID=$ID_FS_UUID /etc/key" > "$initdir"/etc/crypttab echo -n test > "$initdir"/etc/key + chmod 0600 "$initdir"/etc/key ) "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \ diff --git a/test/TEST-13-ENC-RAID-LVM/99-idesymlinks.rules b/test/TEST-13-ENC-RAID-LVM/99-idesymlinks.rules deleted file mode 100644 index d557790a..00000000 --- a/test/TEST-13-ENC-RAID-LVM/99-idesymlinks.rules +++ /dev/null @@ -1,8 +0,0 @@ -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}" diff --git a/test/TEST-13-ENC-RAID-LVM/create-root.sh b/test/TEST-13-ENC-RAID-LVM/create-root.sh index 72d8d723..4c1abf89 100755 --- a/test/TEST-13-ENC-RAID-LVM/create-root.sh +++ b/test/TEST-13-ENC-RAID-LVM/create-root.sh @@ -1,4 +1,7 @@ #!/bin/sh + +trap 'poweroff -f' EXIT + # don't let udev and this script step on eachother's toes set -x for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do @@ -7,53 +10,41 @@ done rm -f -- /etc/lvm/lvm.conf udevadm control --reload udevadm settle -# save a partition at the beginning for future flagging purposes -sfdisk /dev/sda << EOF -,4M -,43M -,43M -,43M -EOF -udevadm settle + +set -ex printf test > keyfile -cryptsetup -q luksFormat /dev/sda2 /keyfile -cryptsetup -q luksFormat /dev/sda3 /keyfile -cryptsetup -q luksFormat /dev/sda4 /keyfile -cryptsetup luksOpen /dev/sda2 dracut_sda2 < /keyfile -cryptsetup luksOpen /dev/sda3 dracut_sda3 < /keyfile -cryptsetup luksOpen /dev/sda4 dracut_sda4 < /keyfile -mdadm --create /dev/md0 --run --auto=yes --level=5 --raid-devices=3 /dev/mapper/dracut_sda2 /dev/mapper/dracut_sda3 /dev/mapper/dracut_sda4 +cryptsetup -q luksFormat /dev/disk/by-id/ata-disk_disk1 /keyfile +cryptsetup -q luksFormat /dev/disk/by-id/ata-disk_disk2 /keyfile +cryptsetup -q luksFormat /dev/disk/by-id/ata-disk_disk3 /keyfile +cryptsetup luksOpen /dev/disk/by-id/ata-disk_disk1 dracut_disk1 < /keyfile +cryptsetup luksOpen /dev/disk/by-id/ata-disk_disk2 dracut_disk2 < /keyfile +cryptsetup luksOpen /dev/disk/by-id/ata-disk_disk3 dracut_disk3 < /keyfile +mdadm --create /dev/md0 --run --auto=yes --level=5 --raid-devices=3 /dev/mapper/dracut_disk1 /dev/mapper/dracut_disk2 /dev/mapper/dracut_disk3 # wait for the array to finish initailizing, otherwise this sometimes fails # randomly. mdadm -W /dev/md0 -lvm pvcreate -ff -y /dev/md0 \ - && lvm vgcreate dracut /dev/md0 \ - && lvm lvcreate -l 100%FREE -n root dracut \ - && lvm vgchange -ay \ - && mke2fs /dev/dracut/root \ - && mkdir -p /sysroot \ - && mount /dev/dracut/root /sysroot \ - && cp -a -t /sysroot /source/* \ - && umount /sysroot \ - && sleep 2 \ - && lvm lvchange -a n /dev/dracut/root \ - && sleep 2 \ - && lvm vgchange -a n dracut \ - && { - lvm vgdisplay \ - && { mdadm -W /dev/md0 || :; } \ - && mdadm --stop /dev/md0 \ - && cryptsetup luksClose /dev/mapper/dracut_sda2 \ - && cryptsetup luksClose /dev/mapper/dracut_sda3 \ - && cryptsetup luksClose /dev/mapper/dracut_sda4 \ - && : - : - } \ - && { - echo "dracut-root-block-created" - for i in /dev/sda[234]; do - udevadm info --query=env --name="$i" | grep -F 'ID_FS_UUID=' - done - } | dd oflag=direct,dsync of=/dev/sda1 +lvm pvcreate -ff -y /dev/md0 +lvm vgcreate dracut /dev/md0 + +lvm lvcreate -l 100%FREE -n root dracut +lvm vgchange -ay +mke2fs /dev/dracut/root +mkdir -p /sysroot +mount /dev/dracut/root /sysroot +cp -a -t /sysroot /source/* +umount /sysroot +lvm lvchange -a n /dev/dracut/root +mdadm -W /dev/md0 || : +mdadm --stop /dev/md0 +cryptsetup luksClose /dev/mapper/dracut_disk1 +cryptsetup luksClose /dev/mapper/dracut_disk2 +cryptsetup luksClose /dev/mapper/dracut_disk3 + +{ + echo "dracut-root-block-created" + for i in /dev/disk/by-id/ata-disk_disk[123]; do + udevadm info --query=env --name="$i" | grep -F 'ID_FS_UUID=' + done +} | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker sync poweroff -f diff --git a/test/TEST-13-ENC-RAID-LVM/test-init.sh b/test/TEST-13-ENC-RAID-LVM/test-init.sh index 4ac913e6..64fc6059 100755 --- a/test/TEST-13-ENC-RAID-LVM/test-init.sh +++ b/test/TEST-13-ENC-RAID-LVM/test-init.sh @@ -1,11 +1,27 @@ #!/bin/sh +: > /dev/watchdog + +. /lib/dracut-lib.sh + export PATH=/sbin:/bin:/usr/sbin:/usr/bin +command -v plymouth > /dev/null 2>&1 && plymouth --quit exec > /dev/console 2>&1 -echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sdb + +echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker + export TERM=linux export PS1='initramfs-test:\w\$ ' -[ -f /etc/fstab ] || ln -s /proc/mounts /etc/fstab +[ -f /etc/mtab ] || ln -sfn /proc/mounts /etc/mtab +[ -f /etc/fstab ] || ln -sfn /proc/mounts /etc/fstab stty sane -echo "made it to the rootfs! Powering down." +echo "made it to the rootfs!" +if getargbool 0 rd.shell; then + strstr "$(setsid --help)" "control" && CTTY="-c" + setsid $CTTY sh -i +fi +echo "Powering down." mount -n -o remount,ro / +if [ -d /run/initramfs/etc ]; then + echo " rd.debug=0 " >> /run/initramfs/etc/cmdline +fi poweroff -f diff --git a/test/TEST-13-ENC-RAID-LVM/test.sh b/test/TEST-13-ENC-RAID-LVM/test.sh index c90231f9..612a6520 100755 --- a/test/TEST-13-ENC-RAID-LVM/test.sh +++ b/test/TEST-13-ENC-RAID-LVM/test.sh @@ -12,47 +12,49 @@ KVERSION=${KVERSION-$(uname -r)} test_run() { LUKSARGS=$(cat "$TESTDIR"/luks.txt) - dd if=/dev/zero of="$TESTDIR"/check-success.img bs=1M count=1 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 echo "CLIENT TEST START: $LUKSARGS" + + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-1.img disk1 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-2.img disk2 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-3.img disk3 + "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext2 \ - -drive format=raw,index=1,media=disk,file="$TESTDIR"/check-success.img \ + "${disk_args[@]}" \ -append "panic=1 systemd.crash_reboot root=/dev/dracut/root rw rd.auto rd.retry=20 console=ttyS0,115200n81 selinux=0 rd.debug rootwait $LUKSARGS rd.shell=0 $DEBUGFAIL" \ -initrd "$TESTDIR"/initramfs.testing - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/check-success.img || return 1 + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img || return 1 echo "CLIENT TEST END: [OK]" - dd if=/dev/zero of="$TESTDIR"/check-success.img bs=1M count=1 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 echo "CLIENT TEST START: Any LUKS" "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext2 \ - -drive format=raw,index=1,media=disk,file="$TESTDIR"/check-success.img \ + "${disk_args[@]}" \ -append "panic=1 systemd.crash_reboot root=/dev/dracut/root rw quiet rd.auto rd.retry=20 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL" \ -initrd "$TESTDIR"/initramfs.testing - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/check-success.img || return 1 + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img || return 1 echo "CLIENT TEST END: [OK]" - dd if=/dev/zero of="$TESTDIR"/check-success.img bs=1M count=1 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 echo "CLIENT TEST START: Wrong LUKS UUID" "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext2 \ - -drive format=raw,index=1,media=disk,file="$TESTDIR"/check-success.img \ + "${disk_args[@]}" \ -append "panic=1 systemd.crash_reboot root=/dev/dracut/root rw quiet rd.auto rd.retry=10 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL rd.luks.uuid=failme" \ -initrd "$TESTDIR"/initramfs.testing - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/check-success.img && return 1 + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img && return 1 echo "CLIENT TEST END: [OK]" return 0 } test_setup() { - # Create the blank file to use as a root filesystem - rm -f -- "$TESTDIR"/root.ext2 - dd if=/dev/zero of="$TESTDIR"/root.ext2 bs=1M count=134 - kernel=$KVERSION # Create what will eventually be our root filesystem onto an overlay ( @@ -77,6 +79,12 @@ test_setup() { inst_multiple -o ${_terminfodir}/l/linux inst "$basedir/modules.d/35network-legacy/dhclient-script.sh" "/sbin/dhclient-script" inst "$basedir/modules.d/35network-legacy/ifup.sh" "/sbin/ifup" + + inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh" + inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util" + ln -s dracut-util "${initdir}/usr/bin/dracut-getarg" + ln -s dracut-util "${initdir}/usr/bin/dracut-getargs" + inst_multiple grep inst_simple /etc/os-release inst ./test-init.sh /sbin/init @@ -95,7 +103,6 @@ test_setup() { inst_multiple sfdisk mke2fs poweroff cp umount grep dd sync inst_hook initqueue 01 ./create-root.sh inst_hook initqueue/finished 01 ./finished-false.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) # create an initramfs that will create the target root filesystem. @@ -107,12 +114,26 @@ test_setup() { --no-hostonly-cmdline -N \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 rm -rf -- "$TESTDIR"/overlay - # Invoke KVM and/or QEMU to actually create the target filesystem. - "$testdir"/run-qemu -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext2 \ + + # Create the blank files to use as a root filesystem + dd if=/dev/zero of="$TESTDIR"/disk-1.img bs=1MiB count=40 + dd if=/dev/zero of="$TESTDIR"/disk-2.img bs=1MiB count=40 + dd if=/dev/zero of="$TESTDIR"/disk-3.img bs=1MiB count=40 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-1.img disk1 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-2.img disk2 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-3.img disk3 + + "$testdir"/run-qemu \ + "${disk_args[@]}" \ -append "root=/dev/fakeroot rw rootfstype=ext2 quiet console=ttyS0,115200n81 selinux=0" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/root.ext2 || return 1 - cryptoUUIDS=$(grep -F --binary-files=text -m 3 ID_FS_UUID "$TESTDIR"/root.ext2) + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1 + cryptoUUIDS=$(grep -F --binary-files=text -m 3 ID_FS_UUID "$TESTDIR"/marker.img) for uuid in $cryptoUUIDS; do eval "$uuid" printf ' rd.luks.uuid=luks-%s ' "$ID_FS_UUID" @@ -126,16 +147,16 @@ test_setup() { inst_multiple poweroff shutdown dd inst_hook shutdown-emergency 000 ./hard-off.sh inst_hook emergency 000 ./hard-off.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules inst ./cryptroot-ask.sh /sbin/cryptroot-ask mkdir -p "$initdir"/etc - i=2 + i=1 for uuid in $cryptoUUIDS; do eval "$uuid" - printf 'luks-%s /dev/sda%s /etc/key timeout=0\n' "$ID_FS_UUID" $i + printf 'luks-%s /dev/disk/by-id/ata-disk_disk%s /etc/key timeout=0\n' "$ID_FS_UUID" $i ((i += 1)) done > "$initdir"/etc/crypttab echo -n test > "$initdir"/etc/key + chmod 0600 "$initdir"/etc/key ) "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \ -o "plymouth network kernel-network-modules" \ diff --git a/test/TEST-14-IMSM/99-idesymlinks.rules b/test/TEST-14-IMSM/99-idesymlinks.rules deleted file mode 100644 index d557790a..00000000 --- a/test/TEST-14-IMSM/99-idesymlinks.rules +++ /dev/null @@ -1,8 +0,0 @@ -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}" diff --git a/test/TEST-14-IMSM/create-root.sh b/test/TEST-14-IMSM/create-root.sh index 555a3fdb..5097688e 100755 --- a/test/TEST-14-IMSM/create-root.sh +++ b/test/TEST-14-IMSM/create-root.sh @@ -12,11 +12,7 @@ udevadm control --reload udevadm settle # dmraid does not want symlinks in --disk "..." -if [ -e /dev/hda ]; then - echo y | dmraid -f isw -C Test0 --type 1 --disk "/dev/hdb /dev/hdc" -else - echo y | dmraid -f isw -C Test0 --type 1 --disk "/dev/sdb /dev/sdc" -fi +echo y | dmraid -f isw -C Test0 --type 1 --disk "$(realpath /dev/disk/by-id/ata-disk_disk1) $(realpath /dev/disk/by-id/ata-disk_disk2)" udevadm settle SETS=$(dmraid -c -s) @@ -78,7 +74,7 @@ echo "MD_UUID=$MD_UUID" { echo "dracut-root-block-created" echo MD_UUID="$MD_UUID" -} | dd oflag=direct,dsync of=/dev/sda +} | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker mdadm --wait-clean /dev/md0 sync poweroff -f diff --git a/test/TEST-14-IMSM/test-init.sh b/test/TEST-14-IMSM/test-init.sh index 9853e18c..64fc6059 100755 --- a/test/TEST-14-IMSM/test-init.sh +++ b/test/TEST-14-IMSM/test-init.sh @@ -1,19 +1,27 @@ #!/bin/sh +: > /dev/watchdog + . /lib/dracut-lib.sh export PATH=/sbin:/bin:/usr/sbin:/usr/bin command -v plymouth > /dev/null 2>&1 && plymouth --quit exec > /dev/console 2>&1 -echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sda +echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker + export TERM=linux export PS1='initramfs-test:\w\$ ' -cat /proc/mdstat -[ -f /etc/fstab ] || ln -s /proc/mounts /etc/fstab +[ -f /etc/mtab ] || ln -sfn /proc/mounts /etc/mtab +[ -f /etc/fstab ] || ln -sfn /proc/mounts /etc/fstab stty sane echo "made it to the rootfs!" -getargbool 0 rd.shell && sh -i +if getargbool 0 rd.shell; then + strstr "$(setsid --help)" "control" && CTTY="-c" + setsid $CTTY sh -i +fi echo "Powering down." mount -n -o remount,ro / -sync +if [ -d /run/initramfs/etc ]; then + echo " rd.debug=0 " >> /run/initramfs/etc/cmdline +fi poweroff -f diff --git a/test/TEST-14-IMSM/test.sh b/test/TEST-14-IMSM/test.sh index 39efd577..a551ac24 100755 --- a/test/TEST-14-IMSM/test.sh +++ b/test/TEST-14-IMSM/test.sh @@ -11,15 +11,18 @@ KVERSION=${KVERSION-$(uname -r)} client_run() { echo "CLIENT TEST START: $*" - rm -f -- "$TESTDIR"/marker.img - dd if=/dev/zero of="$TESTDIR"/marker.img bs=1M count=1 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-1.img disk1 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-2.img disk2 "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/marker.img \ - -drive format=raw,index=1,media=disk,file="$TESTDIR"/disk1 \ - -drive format=raw,index=2,media=disk,file="$TESTDIR"/disk2 \ + "${disk_args[@]}" \ -append "panic=1 systemd.crash_reboot $* root=LABEL=root rw debug rd.retry=5 rd.debug console=ttyS0,115200n81 selinux=0 rd.info rd.shell=0 $DEBUGFAIL" \ - -initrd "$TESTDIR"/initramfs.testing + -initrd "$TESTDIR"/initramfs.testing || return 1 if ! grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img; then echo "CLIENT TEST END: $* [FAIL]" @@ -49,15 +52,6 @@ test_run() { } test_setup() { - - # Create the blank file to use as a root filesystem - rm -f -- "$TESTDIR"/marker.img - rm -f -- "$TESTDIR"/disk1 - rm -f -- "$TESTDIR"/disk2 - dd if=/dev/zero of="$TESTDIR"/marker.img bs=1M count=1 - dd if=/dev/zero of="$TESTDIR"/disk1 bs=1M count=104 - dd if=/dev/zero of="$TESTDIR"/disk2 bs=1M count=104 - kernel=$KVERSION # Create what will eventually be our root filesystem onto an overlay ( @@ -103,9 +97,8 @@ test_setup() { export initdir=$TESTDIR/overlay # shellcheck disable=SC1090 . "$basedir"/dracut-init.sh - inst_multiple sfdisk mke2fs poweroff cp umount grep dd sync + inst_multiple sfdisk mke2fs poweroff cp umount grep dd sync realpath inst_hook initqueue 01 ./create-root.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) # create an initramfs that will create the target root filesystem. @@ -117,11 +110,21 @@ test_setup() { --no-hostonly-cmdline -N \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 rm -rf -- "$TESTDIR"/overlay + + # Create the blank files to use as a root filesystem + dd if=/dev/zero of="$TESTDIR"/disk-1.img bs=1MiB count=100 + dd if=/dev/zero of="$TESTDIR"/disk-2.img bs=1MiB count=100 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-1.img disk1 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-2.img disk2 + # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/marker.img \ - -drive format=raw,index=1,media=disk,file="$TESTDIR"/disk1 \ - -drive format=raw,index=2,media=disk,file="$TESTDIR"/disk2 \ + "${disk_args[@]}" \ -append "root=/dev/dracut/root rw rootfstype=ext2 quiet console=ttyS0,115200n81 selinux=0" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1 @@ -141,7 +144,6 @@ test_setup() { inst_multiple poweroff shutdown inst_hook shutdown-emergency 000 ./hard-off.sh inst_hook emergency 000 ./hard-off.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \ -o "plymouth network kernel-network-modules" \ diff --git a/test/TEST-15-BTRFSRAID/99-idesymlinks.rules b/test/TEST-15-BTRFSRAID/99-idesymlinks.rules deleted file mode 100644 index d557790a..00000000 --- a/test/TEST-15-BTRFSRAID/99-idesymlinks.rules +++ /dev/null @@ -1,8 +0,0 @@ -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}" diff --git a/test/TEST-15-BTRFSRAID/create-root.sh b/test/TEST-15-BTRFSRAID/create-root.sh index 380a8d14..b8560ad8 100755 --- a/test/TEST-15-BTRFSRAID/create-root.sh +++ b/test/TEST-15-BTRFSRAID/create-root.sh @@ -1,4 +1,7 @@ #!/bin/sh + +trap 'poweroff -f' EXIT + # don't let udev and this script step on eachother's toes for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do : > "/etc/udev/rules.d/$x" @@ -6,24 +9,20 @@ done modprobe btrfs udevadm control --reload udevadm settle -# save a partition at the beginning for future flagging purposes -sfdisk -X gpt /dev/sda << EOF -,10M -,200M -,200M -,200M -,200M -EOF -udevadm settle -mkfs.btrfs -draid10 -mraid10 -L root /dev/sda2 /dev/sda3 /dev/sda4 /dev/sda5 + +set -e + +mkfs.btrfs -draid10 -mraid10 -L root /dev/disk/by-id/ata-disk_raid[1234] udevadm settle + btrfs device scan udevadm settle -set -e + mkdir -p /sysroot -mount -t btrfs /dev/sda5 /sysroot +mount -t btrfs /dev/disk/by-id/ata-disk_raid4 /sysroot cp -a -t /sysroot /source/* umount /sysroot -echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/sda1 + +echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker sync poweroff -f diff --git a/test/TEST-15-BTRFSRAID/test-init.sh b/test/TEST-15-BTRFSRAID/test-init.sh index 119e4876..4fb9146b 100755 --- a/test/TEST-15-BTRFSRAID/test-init.sh +++ b/test/TEST-15-BTRFSRAID/test-init.sh @@ -1,12 +1,25 @@ #!/bin/sh +: > /dev/watchdog + +. /lib/dracut-lib.sh + export PATH=/sbin:/bin:/usr/sbin:/usr/bin +command -v plymouth > /dev/null 2>&1 && plymouth --quit exec > /dev/console 2>&1 -echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sda -sync + +echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker + export TERM=linux export PS1='initramfs-test:\w\$ ' -[ -f /etc/fstab ] || ln -s /proc/mounts /etc/fstab +[ -f /etc/mtab ] || ln -sfn /proc/mounts /etc/mtab +[ -f /etc/fstab ] || ln -sfn /proc/mounts /etc/fstab stty sane -echo "made it to the rootfs! Powering down." +echo "made it to the rootfs!" +if getargbool 0 rd.shell; then + strstr "$(setsid --help)" "control" && CTTY="-c" + setsid $CTTY sh -i +fi +echo "Powering down." mount -n -o remount,ro / + poweroff -f diff --git a/test/TEST-15-BTRFSRAID/test.sh b/test/TEST-15-BTRFSRAID/test.sh index 7addd6dc..5a086ec7 100755 --- a/test/TEST-15-BTRFSRAID/test.sh +++ b/test/TEST-15-BTRFSRAID/test.sh @@ -7,15 +7,21 @@ KVERSION=${KVERSION-$(uname -r)} # Uncomment this to debug failures #DEBUGFAIL="rd.shell" test_run() { - DISKIMAGE=$TESTDIR/TEST-15-BTRFSRAID-root.img - MARKER_DISKIMAGE=$TESTDIR/TEST-15-BTRFSRAID-marker.img - dd if=/dev/zero of="$MARKER_DISKIMAGE" bs=512 count=10 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-1.img raid1 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-2.img raid2 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-3.img raid3 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-4.img raid4 + "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$MARKER_DISKIMAGE" \ - -drive format=raw,index=1,media=disk,file="$DISKIMAGE" \ + "${disk_args[@]}" \ -append "panic=1 systemd.crash_reboot root=LABEL=root rw rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.shell=0 $DEBUGFAIL" \ -initrd "$TESTDIR"/initramfs.testing - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$MARKER_DISKIMAGE" || return 1 + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img || return 1 } test_setup() { @@ -48,6 +54,12 @@ test_setup() { inst_multiple -o ${_terminfodir}/l/linux inst "$basedir/modules.d/35network-legacy/dhclient-script.sh" "/sbin/dhclient-script" inst "$basedir/modules.d/35network-legacy/ifup.sh" "/sbin/ifup" + + inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh" + inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util" + ln -s dracut-util "${initdir}/usr/bin/dracut-getarg" + ln -s dracut-util "${initdir}/usr/bin/dracut-getargs" + inst_multiple grep inst ./test-init.sh /sbin/init inst_simple /etc/os-release @@ -66,7 +78,6 @@ test_setup() { inst_multiple sfdisk mkfs.btrfs poweroff cp umount dd sync inst_hook initqueue 01 ./create-root.sh inst_hook initqueue/finished 01 ./finished-false.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) # create an initramfs that will create the target root filesystem. @@ -81,13 +92,27 @@ test_setup() { rm -rf -- "$TESTDIR"/overlay - # Invoke KVM and/or QEMU to actually create the target filesystem. + # Create the blank files to use as a root filesystem + dd if=/dev/zero of="$TESTDIR"/raid-1.img bs=1MiB count=150 + dd if=/dev/zero of="$TESTDIR"/raid-2.img bs=1MiB count=150 + dd if=/dev/zero of="$TESTDIR"/raid-3.img bs=1MiB count=150 + dd if=/dev/zero of="$TESTDIR"/raid-4.img bs=1MiB count=150 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-1.img raid1 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-2.img raid2 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-3.img raid3 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid-4.img raid4 + "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$DISKIMAGE" \ + "${disk_args[@]}" \ -append "root=/dev/fakeroot rw quiet console=ttyS0,115200n81 selinux=0" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 - dd if="$DISKIMAGE" bs=512 count=4 skip=2048 | grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created || return 1 + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1 ( # shellcheck disable=SC2031 @@ -97,7 +122,6 @@ test_setup() { inst_multiple poweroff shutdown inst_hook shutdown-emergency 000 ./hard-off.sh inst_hook emergency 000 ./hard-off.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \ -o "plymouth network kernel-network-modules" \ diff --git a/test/TEST-16-DMSQUASH/99-idesymlinks.rules b/test/TEST-16-DMSQUASH/99-idesymlinks.rules deleted file mode 100644 index d557790a..00000000 --- a/test/TEST-16-DMSQUASH/99-idesymlinks.rules +++ /dev/null @@ -1,8 +0,0 @@ -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}" diff --git a/test/TEST-16-DMSQUASH/create.py b/test/TEST-16-DMSQUASH/create.py index b09bba53..00e92da0 100644 --- a/test/TEST-16-DMSQUASH/create.py +++ b/test/TEST-16-DMSQUASH/create.py @@ -1,4 +1,4 @@ -#!/usr/bin/python -tt +#!/usr/bin/python3 -tt # # livecd-creator : Creates Live CD based for Fedora. # diff --git a/test/TEST-16-DMSQUASH/test-init.sh b/test/TEST-16-DMSQUASH/test-init.sh index 7f2cd72c..4fb9146b 100755 --- a/test/TEST-16-DMSQUASH/test-init.sh +++ b/test/TEST-16-DMSQUASH/test-init.sh @@ -1,19 +1,25 @@ #!/bin/sh +: > /dev/watchdog + . /lib/dracut-lib.sh export PATH=/sbin:/bin:/usr/sbin:/usr/bin command -v plymouth > /dev/null 2>&1 && plymouth --quit exec > /dev/console 2>&1 -echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sdb +echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker + export TERM=linux export PS1='initramfs-test:\w\$ ' [ -f /etc/mtab ] || ln -sfn /proc/mounts /etc/mtab [ -f /etc/fstab ] || ln -sfn /proc/mounts /etc/fstab stty sane echo "made it to the rootfs!" -getargbool 0 rd.shell && sh -i +if getargbool 0 rd.shell; then + strstr "$(setsid --help)" "control" && CTTY="-c" + setsid $CTTY sh -i +fi echo "Powering down." mount -n -o remount,ro / -sync + poweroff -f diff --git a/test/TEST-16-DMSQUASH/test.sh b/test/TEST-16-DMSQUASH/test.sh index 6bde17aa..288a05c6 100755 --- a/test/TEST-16-DMSQUASH/test.sh +++ b/test/TEST-16-DMSQUASH/test.sh @@ -8,7 +8,7 @@ KVERSION="${KVERSION-$(uname -r)}" #DEBUGFAIL="rd.shell rd.break rd.debug systemd.log_level=debug systemd.log_target=console" test_check() { - for pdir in $(python -c "import site; print(site.getsitepackages())" | sed -e 's/\[\(.*\)\]/\1/' -e "s/', /' /g"); do + for pdir in $(python3 -c "import site; print(site.getsitepackages())" | sed -e 's/\[\(.*\)\]/\1/' -e "s/', /' /g"); do # shellcheck disable=SC2001 pdir1=$(echo "$pdir" | sed "s/^'\(.*\)'$/\1/") if [[ -d $pdir1/imgcreate ]]; then @@ -20,10 +20,16 @@ test_check() { } test_run() { + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/livecd.iso livecd 1 + "$testdir"/run-qemu \ + "${disk_args[@]}" \ -boot order=d \ - -drive format=raw,bps=1000000,index=0,media=disk,file="$TESTDIR"/livecd.iso \ - -drive format=raw,index=1,media=disk,file="$TESTDIR"/root.img \ -append "panic=1 systemd.crash_reboot root=live:CDLABEL=LiveCD live rw quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.shell=0 $DEBUGFAIL" \ -initrd "$TESTDIR"/initramfs.testing @@ -36,7 +42,7 @@ test_run() { # -append "root=live:CDLABEL=LiveCD live quiet rhgb selinux=0 rd.live.check" \ # -initrd "$TESTDIR"/initramfs.testing - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success -- "$TESTDIR"/root.img || return 1 + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success -- "$TESTDIR"/marker.img || return 1 } test_setup() { @@ -49,11 +55,8 @@ test_setup() { inst_multiple poweroff shutdown inst_hook shutdown-emergency 000 ./hard-off.sh inst_hook emergency 000 ./hard-off.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) - dd if=/dev/zero of="$TESTDIR"/root.img count=100 - "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \ -a "debug dmsquash-live qemu" \ -o "rngd" \ @@ -114,7 +117,7 @@ test_setup() { cp -a -- /etc/ld.so.conf* "$initdir"/etc ldconfig -r "$initdir" ) - python create.py -d -c livecd-fedora-minimal.ks + python3 create.py -d -c livecd-fedora-minimal.ks return 0 } diff --git a/test/TEST-17-LVM-THIN/99-idesymlinks.rules b/test/TEST-17-LVM-THIN/99-idesymlinks.rules deleted file mode 100644 index d557790a..00000000 --- a/test/TEST-17-LVM-THIN/99-idesymlinks.rules +++ /dev/null @@ -1,8 +0,0 @@ -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}" diff --git a/test/TEST-17-LVM-THIN/create-root.sh b/test/TEST-17-LVM-THIN/create-root.sh index 930c45fc..576348cf 100755 --- a/test/TEST-17-LVM-THIN/create-root.sh +++ b/test/TEST-17-LVM-THIN/create-root.sh @@ -1,4 +1,7 @@ #!/bin/sh + +trap 'poweroff -f' EXIT + # don't let udev and this script step on eachother's toes for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do : > "/etc/udev/rules.d/$x" @@ -6,30 +9,26 @@ done rm -f -- /etc/lvm/lvm.conf udevadm control --reload udevadm settle -# save a partition at the beginning for future flagging purposes -sfdisk /dev/sda << EOF -,4M -,29M -,29M -,29M -EOF -udevadm settle -for i in sda2 sda3 sda4; do - lvm pvcreate -ff -y /dev/$i -done \ - && lvm vgcreate dracut /dev/sda[234] \ - && lvm lvcreate -l 17 -T dracut/mythinpool \ - && lvm lvcreate -V1G -T dracut/mythinpool -n root \ - && lvm vgchange -ay \ - && mke2fs /dev/dracut/root \ - && mkdir -p /sysroot \ - && mount /dev/dracut/root /sysroot \ - && cp -a -t /sysroot /source/* \ - && umount /sysroot \ - && sleep 1 \ - && lvm lvchange -a n /dev/dracut/root \ - && sleep 1 -dmsetup status | grep out_of_data_space \ - || echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/sda1 + +set -ex +for dev in /dev/disk/by-id/ata-disk_disk[123]; do + lvm pvcreate -ff -y "$dev" +done + +lvm vgcreate dracut /dev/disk/by-id/ata-disk_disk[123] +lvm lvcreate -l 17 -T dracut/mythinpool +lvm lvcreate -V1G -T dracut/mythinpool -n root +lvm vgchange -ay +mke2fs /dev/dracut/root +mkdir -p /sysroot +mount /dev/dracut/root /sysroot +cp -a -t /sysroot /source/* +umount /sysroot +lvm lvchange -a n /dev/dracut/root + +if ! dmsetup status | grep -q out_of_data_space; then + echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker +fi + sync poweroff -f diff --git a/test/TEST-17-LVM-THIN/test-init.sh b/test/TEST-17-LVM-THIN/test-init.sh index 9a0ed37f..9a3940b2 100755 --- a/test/TEST-17-LVM-THIN/test-init.sh +++ b/test/TEST-17-LVM-THIN/test-init.sh @@ -1,19 +1,24 @@ #!/bin/sh +: > /dev/watchdog + . /lib/dracut-lib.sh export PATH=/sbin:/bin:/usr/sbin:/usr/bin command -v plymouth > /dev/null 2>&1 && plymouth --quit exec > /dev/console 2>&1 -echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/sda1 +echo "dracut-root-block-success" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker + export TERM=linux export PS1='initramfs-test:\w\$ ' [ -f /etc/mtab ] || ln -sfn /proc/mounts /etc/mtab [ -f /etc/fstab ] || ln -sfn /proc/mounts /etc/fstab stty sane echo "made it to the rootfs!" -getargbool 0 rd.shell && sh -i +if getargbool 0 rd.shell; then + strstr "$(setsid --help)" "control" && CTTY="-c" + setsid $CTTY sh -i +fi echo "Powering down." mount -n -o remount,ro / -sync poweroff -f diff --git a/test/TEST-17-LVM-THIN/test.sh b/test/TEST-17-LVM-THIN/test.sh index cbef6f3e..f9f73109 100755 --- a/test/TEST-17-LVM-THIN/test.sh +++ b/test/TEST-17-LVM-THIN/test.sh @@ -8,17 +8,23 @@ KVERSION=${KVERSION-$(uname -r)} #DEBUGFAIL="rd.break rd.shell" test_run() { + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-1.img disk1 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-2.img disk2 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-3.img disk3 + "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext2 \ + "${disk_args[@]}" \ -append "panic=1 systemd.crash_reboot root=/dev/dracut/root rw rd.auto=1 quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug rd.shell=0 $DEBUGFAIL" \ - -initrd "$TESTDIR"/initramfs.testing - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/root.ext2 || return 1 + -initrd "$TESTDIR"/initramfs.testing || return 1 + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img || return 1 } test_setup() { - # Create the blank file to use as a root filesystem - dd if=/dev/zero of="$TESTDIR"/root.ext2 bs=1M count=92 - kernel=$KVERSION # Create what will eventually be our root filesystem onto an overlay ( @@ -68,7 +74,6 @@ test_setup() { inst_multiple sfdisk mke2fs poweroff cp umount grep dmsetup dd sync inst_hook initqueue 01 ./create-root.sh inst_hook initqueue/finished 01 ./finished-false.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) # create an initramfs that will create the target root filesystem. @@ -80,11 +85,26 @@ test_setup() { --no-hostonly-cmdline -N \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 rm -rf -- "$TESTDIR"/overlay - # Invoke KVM and/or QEMU to actually create the target filesystem. - "$testdir"/run-qemu -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext2 \ + + # Create the blank files to use as a root filesystem + dd if=/dev/zero of="$TESTDIR"/disk-1.img bs=1MiB count=40 + dd if=/dev/zero of="$TESTDIR"/disk-2.img bs=1MiB count=40 + dd if=/dev/zero of="$TESTDIR"/disk-3.img bs=1MiB count=40 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-1.img disk1 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-2.img disk2 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/disk-3.img disk3 + + "$testdir"/run-qemu \ + "${disk_args[@]}" \ -append "root=/dev/fakeroot rw rootfstype=ext2 quiet console=ttyS0,115200n81 selinux=0" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/root.ext2 || return 1 + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1 + ( # shellcheck disable=SC2031 export initdir=$TESTDIR/overlay @@ -93,7 +113,6 @@ test_setup() { inst_multiple poweroff shutdown inst_hook shutdown-emergency 000 ./hard-off.sh inst_hook emergency 000 ./hard-off.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \ -o "plymouth network kernel-network-modules" \ diff --git a/test/TEST-20-NFS/99-idesymlinks.rules b/test/TEST-20-NFS/99-idesymlinks.rules deleted file mode 100644 index d557790a..00000000 --- a/test/TEST-20-NFS/99-idesymlinks.rules +++ /dev/null @@ -1,8 +0,0 @@ -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}" diff --git a/test/TEST-20-NFS/client-init.sh b/test/TEST-20-NFS/client-init.sh index 4dec9374..e4cfe5c5 100755 --- a/test/TEST-20-NFS/client-init.sh +++ b/test/TEST-20-NFS/client-init.sh @@ -19,7 +19,7 @@ echo "made it to the rootfs! Powering down." while read -r dev _ fstype opts rest || [ -n "$dev" ]; do [ "$fstype" != "nfs" -a "$fstype" != "nfs4" ] && continue - echo "nfs-OK $dev $fstype $opts" | dd oflag=direct,dsync of=/dev/sda + echo "nfs-OK $dev $fstype $opts" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker break done < /proc/mounts diff --git a/test/TEST-20-NFS/create-root.sh b/test/TEST-20-NFS/create-root.sh index 8f33cb6f..7948b79e 100755 --- a/test/TEST-20-NFS/create-root.sh +++ b/test/TEST-20-NFS/create-root.sh @@ -1,4 +1,7 @@ #!/bin/sh + +trap 'poweroff -f' EXIT + # don't let udev and this script step on eachother's toes for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do : > "/etc/udev/rules.d/$x" @@ -7,20 +10,14 @@ rm -f -- /etc/lvm/lvm.conf udevadm control --reload udevadm settle -set -e -# save a partition at the beginning for future flagging purposes -sfdisk /dev/sda << EOF -,1M -, -EOF +set -ex -udevadm settle -mkfs.ext3 -L dracut /dev/sda2 +mkfs.ext3 -L dracut /dev/disk/by-id/ata-disk_root mkdir -p /root -mount /dev/sda2 /root +mount /dev/disk/by-id/ata-disk_root /root cp -a -t /root /source/* mkdir -p /root/run umount /root -echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/sda1 +echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker sync poweroff -f diff --git a/test/TEST-20-NFS/server-init.sh b/test/TEST-20-NFS/server-init.sh index ba2bdd23..48e55ebd 100755 --- a/test/TEST-20-NFS/server-init.sh +++ b/test/TEST-20-NFS/server-init.sh @@ -52,15 +52,15 @@ linkup() { wait_for_if_link "$1" 2> /dev/null && ip link set "$1" up 2> /dev/null && wait_for_if_up "$1" 2> /dev/null } -wait_for_if_link eth0 ens2 +wait_for_if_link eth0 enp0s1 ip addr add 127.0.0.1/8 dev lo ip link set lo up -ip link set dev eth0 name ens2 -ip addr add 192.168.50.1/24 dev ens2 -ip addr add 192.168.50.2/24 dev ens2 -ip addr add 192.168.50.3/24 dev ens2 -linkup ens2 +ip link set dev eth0 name enp0s1 +ip addr add 192.168.50.1/24 dev enp0s1 +ip addr add 192.168.50.2/24 dev enp0s1 +ip addr add 192.168.50.3/24 dev enp0s1 +linkup enp0s1 echo > /dev/watchdog modprobe af_packet diff --git a/test/TEST-20-NFS/test.sh b/test/TEST-20-NFS/test.sh index 950f184b..5a46f3d5 100755 --- a/test/TEST-20-NFS/test.sh +++ b/test/TEST-20-NFS/test.sh @@ -23,8 +23,13 @@ KVERSION=${KVERSION-$(uname -r)} run_server() { # Start server first echo "NFS TEST SETUP: Starting DHCP/NFS server" + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/root.img root 1 + "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/server.ext3 \ + "${disk_args[@]}" \ -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"}" \ @@ -59,13 +64,14 @@ client_test() { echo "CLIENT TEST START: $test_name" # Need this so kvm-qemu will boot (needs non-/dev/zero local disk) - if ! dd if=/dev/zero of="$TESTDIR"/client.img bs=1M count=1 &> /dev/null; then - echo "Unable to make client sda image" 1>&2 - return 1 - fi + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/client.img \ + "${disk_args[@]}" \ -net nic,macaddr="$mac",model=e1000 \ -net socket,connect=127.0.0.1:12320 \ -watchdog i6300esb -watchdog-action poweroff \ @@ -73,13 +79,13 @@ client_test() { -initrd "$TESTDIR"/initramfs.testing # shellcheck disable=SC2181 - if [[ $? -ne 0 ]] || ! grep -U --binary-files=binary -F -m 1 -q nfs-OK "$TESTDIR"/client.img; then + if [[ $? -ne 0 ]] || ! grep -U --binary-files=binary -F -m 1 -q nfs-OK "$TESTDIR"/marker.img; then echo "CLIENT TEST END: $test_name [FAILED - BAD EXIT]" return 1 fi # nfsinfo=( server:/path nfs{,4} options ) - read -r -a nfsinfo < <(awk '{print $2, $3, $4; exit}' "$TESTDIR"/client.img) + read -r -a nfsinfo < <(awk '{print $2, $3, $4; exit}' "$TESTDIR"/marker.img) if [[ ${nfsinfo[0]%%:*} != "$server" ]]; then echo "CLIENT TEST INFO: got server: ${nfsinfo[0]%%:*}" @@ -165,7 +171,7 @@ test_nfsv3() { 52:54:00:12:34:05 "root=dhcp" 192.168.50.1 wsize=4096 || return 1 client_test "NFSv3 Bridge Customized root=dhcp DHCP path,options" \ - 52:54:00:12:34:05 "root=dhcp bridge=foobr0:ens2" 192.168.50.1 wsize=4096 || return 1 + 52:54:00:12:34:05 "root=dhcp bridge=foobr0:enp0s1" 192.168.50.1 wsize=4096 || return 1 client_test "NFSv3 root=dhcp DHCP IP:path,options" \ 52:54:00:12:34:06 "root=dhcp" 192.168.50.2 wsize=4096 || return 1 @@ -222,9 +228,6 @@ test_run() { } test_setup() { - # Make server root - dd if=/dev/zero of="$TESTDIR"/server.ext3 bs=1M count=120 - export kernel=$KVERSION export srcmods="/lib/modules/$kernel/" # Detect lib paths @@ -358,7 +361,6 @@ test_setup() { inst_multiple sfdisk mkfs.ext3 poweroff cp umount sync dd inst_hook initqueue 01 ./create-root.sh inst_hook initqueue/finished 01 ./finished-false.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) # create an initramfs that will create the target root filesystem. @@ -371,13 +373,21 @@ test_setup() { --no-hostonly-cmdline -N \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 rm -rf -- "$TESTDIR"/server - # Invoke KVM and/or QEMU to actually create the target filesystem. + dd if=/dev/zero of="$TESTDIR"/root.img bs=1MiB count=80 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/root.img root + + # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/server.ext3 \ + "${disk_args[@]}" \ -append "root=/dev/dracut/root rw rootfstype=ext3 quiet console=ttyS0,115200n81 selinux=0" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/server.ext3 || return 1 + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1 # Make an overlay with needed tools for the test harness ( @@ -389,7 +399,6 @@ test_setup() { inst_multiple poweroff shutdown inst_hook shutdown-emergency 000 ./hard-off.sh inst_hook emergency 000 ./hard-off.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules inst_simple ./99-default.link /etc/systemd/network/99-default.link ) diff --git a/test/TEST-30-ISCSI/99-idesymlinks.rules b/test/TEST-30-ISCSI/99-idesymlinks.rules deleted file mode 100644 index d557790a..00000000 --- a/test/TEST-30-ISCSI/99-idesymlinks.rules +++ /dev/null @@ -1,8 +0,0 @@ -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}" diff --git a/test/TEST-30-ISCSI/client-init.sh b/test/TEST-30-ISCSI/client-init.sh index 6539332c..441c7e39 100755 --- a/test/TEST-30-ISCSI/client-init.sh +++ b/test/TEST-30-ISCSI/client-init.sh @@ -11,13 +11,14 @@ stty sane echo "made it to the rootfs! Powering down." while read -r dev _ fstype opts rest || [ -n "$dev" ]; do [ "$fstype" != "ext3" ] && continue - echo "iscsi-OK $dev $fstype $opts" | dd oflag=direct,dsync of=/dev/sda + echo "iscsi-OK $dev $fstype $opts" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker break done < /proc/mounts -#sh -i + if getargbool 0 rd.shell; then strstr "$(setsid --help)" "control" && CTTY="-c" setsid $CTTY sh -i fi + sync poweroff -f diff --git a/test/TEST-30-ISCSI/create-client-root.sh b/test/TEST-30-ISCSI/create-client-root.sh index 04cfaeb7..1ec20aff 100755 --- a/test/TEST-30-ISCSI/create-client-root.sh +++ b/test/TEST-30-ISCSI/create-client-root.sh @@ -1,4 +1,7 @@ #!/bin/sh + +trap 'poweroff -f' EXIT + # don't let udev and this script step on eachother's toes for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do : > "/etc/udev/rules.d/$x" @@ -7,25 +10,24 @@ rm -f -- /etc/lvm/lvm.conf udevadm control --reload udevadm settle -echo "Size of /dev/sdc and /dev/sdd" -blockdev --getsize64 /dev/sdc /dev/sdd +set -ex -mkfs.ext3 -j -L singleroot -F /dev/sda \ - && mkdir -p /sysroot \ - && mount /dev/sda /sysroot \ - && cp -a -t /sysroot /source/* \ - && umount /sysroot \ - && mdadm --create /dev/md0 --run --auto=yes --level=stripe --raid-devices=2 /dev/sdc /dev/sdd \ - && mdadm -W /dev/md0 || : \ - && lvm pvcreate -ff -y /dev/md0 \ - && lvm vgcreate dracut /dev/md0 \ - && lvm lvcreate -l 100%FREE -n root dracut \ - && lvm vgchange -ay \ - && mkfs.ext3 -j -L sysroot /dev/dracut/root \ - && mount /dev/dracut/root /sysroot \ - && cp -a -t /sysroot /source/* \ - && umount /sysroot \ - && lvm lvchange -a n /dev/dracut/root \ - && echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/sdb +mkfs.ext3 -j -L singleroot -F /dev/disk/by-id/ata-disk_singleroot +mkdir -p /sysroot +mount /dev/disk/by-id/ata-disk_singleroot /sysroot +cp -a -t /sysroot /source/* +umount /sysroot +mdadm --create /dev/md0 --run --auto=yes --level=stripe --raid-devices=2 /dev/disk/by-id/ata-disk_raid0-1 /dev/disk/by-id/ata-disk_raid0-2 +mdadm -W /dev/md0 || : +lvm pvcreate -ff -y /dev/md0 +lvm vgcreate dracut /dev/md0 +lvm lvcreate -l 100%FREE -n root dracut +lvm vgchange -ay +mkfs.ext3 -j -L sysroot /dev/dracut/root +mount /dev/dracut/root /sysroot +cp -a -t /sysroot /source/* +umount /sysroot +lvm lvchange -a n /dev/dracut/root +echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker sync poweroff -f diff --git a/test/TEST-30-ISCSI/create-server-root.sh b/test/TEST-30-ISCSI/create-server-root.sh index 3b02da85..7767d253 100755 --- a/test/TEST-30-ISCSI/create-server-root.sh +++ b/test/TEST-30-ISCSI/create-server-root.sh @@ -1,4 +1,7 @@ #!/bin/sh + +trap 'poweroff -f' EXIT + # don't let udev and this script step on eachother's toes for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do : > "/etc/udev/rules.d/$x" @@ -6,20 +9,12 @@ done rm -f -- /etc/lvm/lvm.conf udevadm control --reload udevadm settle -set -e -# save a partition at the beginning for future flagging purposes -sfdisk /dev/sda << EOF -,1M -, -EOF -udevadm settle -mkfs.ext3 -L dracut /dev/sda2 +mkfs.ext3 -L dracut /dev/disk/by-id/ata-disk_root mkdir -p /root -mount /dev/sda2 /root +mount /dev/disk/by-id/ata-disk_root /root cp -a -t /root /source/* mkdir -p /root/run umount /root -echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/sda1 -sync +echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker poweroff -f diff --git a/test/TEST-30-ISCSI/server-init.sh b/test/TEST-30-ISCSI/server-init.sh index e0e6fc75..420ad618 100755 --- a/test/TEST-30-ISCSI/server-init.sh +++ b/test/TEST-30-ISCSI/server-init.sh @@ -14,27 +14,21 @@ wait_for_if_link() { while [ $cnt -lt 600 ]; do li=$(ip -o link show dev "$1" 2> /dev/null) [ -n "$li" ] && return 0 - if [[ $2 ]]; then - li=$(ip -o link show dev "$2" 2> /dev/null) - [ -n "$li" ] && return 0 - fi sleep 0.1 cnt=$((cnt + 1)) done return 1 } -wait_for_if_link eth0 ens2 -wait_for_if_link eth1 ens3 +wait_for_if_link enp0s1 +wait_for_if_link enp0s2 ip addr add 127.0.0.1/8 dev lo ip link set lo up -ip link set dev eth0 name ens2 -ip addr add 192.168.50.1/24 dev ens2 -ip link set ens2 up -ip link set dev eth1 name ens3 -ip addr add 192.168.51.1/24 dev ens3 -ip link set ens3 up +ip addr add 192.168.50.1/24 dev enp0s1 +ip link set enp0s1 up +ip addr add 192.168.51.1/24 dev enp0s2 +ip link set enp0s2 up : > /var/lib/dhcpd/dhcpd.leases chmod 777 /var/lib/dhcpd/dhcpd.leases dhcpd -d -cf /etc/dhcpd.conf -lf /var/lib/dhcpd/dhcpd.leases & @@ -43,9 +37,9 @@ tgtd tgtadm --lld iscsi --mode target --op new --tid 1 --targetname iqn.2009-06.dracut:target0 tgtadm --lld iscsi --mode target --op new --tid 2 --targetname iqn.2009-06.dracut:target1 tgtadm --lld iscsi --mode target --op new --tid 3 --targetname iqn.2009-06.dracut:target2 -tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 -b /dev/sdb -tgtadm --lld iscsi --mode logicalunit --op new --tid 2 --lun 2 -b /dev/sdc -tgtadm --lld iscsi --mode logicalunit --op new --tid 3 --lun 3 -b /dev/sdd +tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 -b /dev/disk/by-id/ata-disk_singleroot +tgtadm --lld iscsi --mode logicalunit --op new --tid 2 --lun 2 -b /dev/disk/by-id/ata-disk_raid0-1 +tgtadm --lld iscsi --mode logicalunit --op new --tid 3 --lun 3 -b /dev/disk/by-id/ata-disk_raid0-2 tgtadm --lld iscsi --mode target --op bind --tid 1 -I 192.168.50.101 tgtadm --lld iscsi --mode target --op bind --tid 2 -I 192.168.51.101 tgtadm --lld iscsi --mode target --op bind --tid 3 -I 192.168.50.101 diff --git a/test/TEST-30-ISCSI/test.sh b/test/TEST-30-ISCSI/test.sh index 2e558f88..39269c5b 100755 --- a/test/TEST-30-ISCSI/test.sh +++ b/test/TEST-30-ISCSI/test.sh @@ -23,16 +23,20 @@ run_server() { # Start server first echo "iSCSI TEST SETUP: Starting DHCP/iSCSI server" + declare -a disk_args=() + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/server.img serverroot 1 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/singleroot.img singleroot + qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid0-1.img raid0-1 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid0-2.img raid0-2 + "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/server.ext3 \ - -drive format=raw,index=1,media=disk,file="$TESTDIR"/root.ext3 \ - -drive format=raw,index=2,media=disk,file="$TESTDIR"/iscsidisk2.img \ - -drive format=raw,index=3,media=disk,file="$TESTDIR"/iscsidisk3.img \ + "${disk_args[@]}" \ -serial "${SERIAL:-"file:$TESTDIR/server.log"}" \ -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 quiet root=/dev/sda2 rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 $SERVER_DEBUG" \ + -append "panic=1 quiet root=/dev/disk/by-id/ata-disk_serverroot rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 $SERVER_DEBUG" \ -initrd "$TESTDIR"/initramfs.server \ -pidfile "$TESTDIR"/server.pid -daemonize || return 1 chmod 644 "$TESTDIR"/server.pid || return 1 @@ -41,15 +45,17 @@ run_server() { tty -s && stty sane if ! [[ $SERIAL ]]; then - echo "Waiting for the server to startup" - while ! grep -q Serving "$TESTDIR"/server.log; do + while :; do + grep Serving "$TESTDIR"/server.log && break echo "Waiting for the server to startup" + tail "$TESTDIR"/server.log sleep 1 done else echo Sleeping 10 seconds to give the server a head start sleep 10 fi + } run_client() { @@ -57,17 +63,22 @@ run_client() { shift echo "CLIENT TEST START: $test_name" - dd if=/dev/zero of="$TESTDIR"/client.img bs=1M count=1 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/client.img \ + "${disk_args[@]}" \ -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:12330 \ -acpitable file=ibft.table \ -append "panic=1 systemd.crash_reboot rw rd.auto rd.retry=50 console=ttyS0,115200n81 selinux=0 rd.debug=0 rd.shell=0 $DEBUGFAIL $*" \ -initrd "$TESTDIR"/initramfs.testing - if ! grep -U --binary-files=binary -F -m 1 -q iscsi-OK "$TESTDIR"/client.img; then + + # shellcheck disable=SC2181 + if [[ $? -ne 0 ]] || ! grep -U --binary-files=binary -F -m 1 -q iscsi-OK "$TESTDIR"/marker.img; then echo "CLIENT TEST END: $test_name [FAILED - BAD EXIT]" return 1 fi @@ -80,13 +91,13 @@ do_test_run() { initiator=$(iscsi-iname) run_client "root=dhcp" \ - "root=/dev/root netroot=dhcp ip=ens2:dhcp" \ + "root=/dev/root netroot=dhcp ip=enp0s1:dhcp" \ "rd.iscsi.initiator=$initiator" \ || return 1 run_client "netroot=iscsi target0" \ "root=LABEL=singleroot netroot=iscsi:192.168.50.1::::iqn.2009-06.dracut:target0" \ - "ip=192.168.50.101::192.168.50.1:255.255.255.0:iscsi-1:ens2:off" \ + "ip=192.168.50.101::192.168.50.1:255.255.255.0:iscsi-1:enp0s1:off" \ "rd.iscsi.initiator=$initiator" \ || return 1 @@ -181,7 +192,6 @@ test_setup() { inst_multiple sfdisk mkfs.ext3 poweroff cp umount setsid dd sync blockdev inst_hook initqueue 01 ./create-client-root.sh inst_hook initqueue/finished 01 ./finished-false.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) # create an initramfs that will create the target root filesystem. @@ -194,22 +204,25 @@ test_setup() { -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 rm -rf -- "$TESTDIR"/overlay - # Need this so kvm-qemu will boot (needs non-/dev/zero local disk) - if ! dd if=/dev/zero of="$TESTDIR"/client.img bs=1M count=1; then - echo "Unable to make client sdb image" 1>&2 - return 1 - fi + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + dd if=/dev/zero of="$TESTDIR"/singleroot.img bs=1MiB count=200 + dd if=/dev/zero of="$TESTDIR"/raid0-1.img bs=1MiB count=100 + dd if=/dev/zero of="$TESTDIR"/raid0-2.img bs=1MiB count=100 + + declare -a disk_args=() + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/singleroot.img singleroot + qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid0-1.img raid0-1 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid0-2.img raid0-2 + # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext3 \ - -drive format=raw,index=1,media=disk,file="$TESTDIR"/client.img \ - -drive format=raw,index=2,media=disk,file="$TESTDIR"/iscsidisk2.img \ - -drive format=raw,index=3,media=disk,file="$TESTDIR"/iscsidisk3.img \ + "${disk_args[@]}" \ -append "root=/dev/fakeroot rw rootfstype=ext3 quiet console=ttyS0,115200n81 selinux=0" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/client.img || return 1 - rm -- "$TESTDIR"/client.img - rm -rf -- "$TESTDIR"/overlay + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1 + rm -- "$TESTDIR"/marker.img # Make server root dd if=/dev/zero of="$TESTDIR"/server.ext3 bs=1M count=120 @@ -263,7 +276,6 @@ test_setup() { inst_multiple sfdisk mkfs.ext3 poweroff cp umount sync dd inst_hook initqueue 01 ./create-server-root.sh inst_hook initqueue/finished 01 ./finished-false.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) # create an initramfs that will create the target root filesystem. @@ -275,14 +287,23 @@ test_setup() { --nomdadmconf \ --no-hostonly-cmdline -N \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 + rm -rf -- "$TESTDIR"/overlay + + dd if=/dev/zero of="$TESTDIR"/server.img bs=1MiB count=60 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/server.img root # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/server.ext3 \ + "${disk_args[@]}" \ -append "root=/dev/dracut/root rw rootfstype=ext3 quiet console=ttyS0,115200n81 selinux=0" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/server.ext3 || return 1 - rm -rf -- "$TESTDIR"/overlay + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1 + rm -- "$TESTDIR"/marker.img # Make an overlay with needed tools for the test harness ( @@ -293,7 +314,6 @@ test_setup() { inst_multiple poweroff shutdown inst_hook shutdown-emergency 000 ./hard-off.sh inst_hook emergency 000 ./hard-off.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules inst_simple ./99-default.link /etc/systemd/network/99-default.link ) diff --git a/test/TEST-35-ISCSI-MULTI/client-init.sh b/test/TEST-35-ISCSI-MULTI/client-init.sh index 965ddc5c..441c7e39 100755 --- a/test/TEST-35-ISCSI-MULTI/client-init.sh +++ b/test/TEST-35-ISCSI-MULTI/client-init.sh @@ -14,6 +14,7 @@ while read -r dev _ fstype opts rest || [ -n "$dev" ]; do echo "iscsi-OK $dev $fstype $opts" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker break done < /proc/mounts + if getargbool 0 rd.shell; then strstr "$(setsid --help)" "control" && CTTY="-c" setsid $CTTY sh -i diff --git a/test/TEST-35-ISCSI-MULTI/create-client-root.sh b/test/TEST-35-ISCSI-MULTI/create-client-root.sh index 92f70670..279363ee 100755 --- a/test/TEST-35-ISCSI-MULTI/create-client-root.sh +++ b/test/TEST-35-ISCSI-MULTI/create-client-root.sh @@ -1,4 +1,7 @@ #!/bin/sh + +trap 'poweroff -f' EXIT + # don't let udev and this script step on eachother's toes for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do : > "/etc/udev/rules.d/$x" diff --git a/test/TEST-35-ISCSI-MULTI/create-server-root.sh b/test/TEST-35-ISCSI-MULTI/create-server-root.sh index cf55509b..7767d253 100755 --- a/test/TEST-35-ISCSI-MULTI/create-server-root.sh +++ b/test/TEST-35-ISCSI-MULTI/create-server-root.sh @@ -1,4 +1,7 @@ #!/bin/sh + +trap 'poweroff -f' EXIT + # don't let udev and this script step on eachother's toes for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do : > "/etc/udev/rules.d/$x" @@ -7,8 +10,6 @@ rm -f -- /etc/lvm/lvm.conf udevadm control --reload udevadm settle -ls -al /dev/disk/by-id - mkfs.ext3 -L dracut /dev/disk/by-id/ata-disk_root mkdir -p /root mount /dev/disk/by-id/ata-disk_root /root diff --git a/test/TEST-35-ISCSI-MULTI/test.sh b/test/TEST-35-ISCSI-MULTI/test.sh index b52cab15..1dee2eed 100755 --- a/test/TEST-35-ISCSI-MULTI/test.sh +++ b/test/TEST-35-ISCSI-MULTI/test.sh @@ -30,7 +30,7 @@ run_server() { qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid0-1.img raid0-1 qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid0-2.img raid0-2 - "$testdir"/run-qemu -M q35 \ + "$testdir"/run-qemu \ "${disk_args[@]}" \ -serial "${SERIAL:-"file:$TESTDIR/server.log"}" \ -net nic,macaddr=52:54:00:12:34:56,model=e1000 \ @@ -67,7 +67,7 @@ run_client() { declare -i disk_index=0 qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker - "$testdir"/run-qemu -M q35 \ + "$testdir"/run-qemu \ "${disk_args[@]}" \ -net nic,macaddr=52:54:00:12:34:00,model=e1000 \ -net nic,macaddr=52:54:00:12:34:01,model=e1000 \ @@ -221,7 +221,7 @@ test_setup() { qemu_add_drive_args disk_index disk_args "$TESTDIR"/raid0-2.img raid0-2 # Invoke KVM and/or QEMU to actually create the target filesystem. - "$testdir"/run-qemu -M q35 \ + "$testdir"/run-qemu \ "${disk_args[@]}" \ -append "root=/dev/fakeroot rw rootfstype=ext3 quiet console=ttyS0,115200n81 selinux=0" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 @@ -290,9 +290,10 @@ test_setup() { --nomdadmconf \ --no-hostonly-cmdline -N \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 + rm -rf -- "$TESTDIR"/overlay - dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 dd if=/dev/zero of="$TESTDIR"/server.img bs=1MiB count=60 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 declare -a disk_args=() # shellcheck disable=SC2034 declare -i disk_index=0 @@ -300,13 +301,12 @@ test_setup() { qemu_add_drive_args disk_index disk_args "$TESTDIR"/server.img root # Invoke KVM and/or QEMU to actually create the target filesystem. - "$testdir"/run-qemu -M q35 \ + "$testdir"/run-qemu \ "${disk_args[@]}" \ -append "root=/dev/dracut/root rw rootfstype=ext3 quiet console=ttyS0,115200n81 selinux=0" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1 rm -- "$TESTDIR"/marker.img - rm -rf -- "$TESTDIR"/overlay # Make an overlay with needed tools for the test harness ( diff --git a/test/TEST-40-NBD/99-idesymlinks.rules b/test/TEST-40-NBD/99-idesymlinks.rules deleted file mode 100644 index d557790a..00000000 --- a/test/TEST-40-NBD/99-idesymlinks.rules +++ /dev/null @@ -1,8 +0,0 @@ -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}" diff --git a/test/TEST-40-NBD/client-init.sh b/test/TEST-40-NBD/client-init.sh index 5adb66f2..f250626f 100755 --- a/test/TEST-40-NBD/client-init.sh +++ b/test/TEST-40-NBD/client-init.sh @@ -1,11 +1,15 @@ #!/bin/sh : > /dev/watchdog +. /lib/dracut-lib.sh + export PATH=/sbin:/bin:/usr/sbin:/usr/bin +command -v plymouth > /dev/null 2>&1 && plymouth --quit exec > /dev/console 2>&1 + while read -r dev fs fstype opts rest || [ -n "$dev" ]; do [ "$dev" = "rootfs" ] && continue [ "$fs" != "/" ] && continue - echo "nbd-OK $fstype $opts" | dd oflag=direct,dsync of=/dev/sda + echo "nbd-OK $fstype $opts" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker echo "nbd-OK $fstype $opts" break done < /proc/mounts @@ -13,8 +17,13 @@ export TERM=linux export PS1='nbdclient-test:\w\$ ' stty sane echo "made it to the rootfs! Powering down." -#sh -i -: > /dev/watchdog -mount -n -o remount,ro / &> /dev/null -: > /dev/watchdog + +if getargbool 0 rd.shell; then + strstr "$(setsid --help)" "control" && CTTY="-c" + setsid $CTTY sh -i +fi + +mount -n -o remount,ro / + +sync poweroff -f diff --git a/test/TEST-40-NBD/create-client-root.sh b/test/TEST-40-NBD/create-client-root.sh index 535e046b..54a19149 100755 --- a/test/TEST-40-NBD/create-client-root.sh +++ b/test/TEST-40-NBD/create-client-root.sh @@ -1,23 +1,24 @@ #!/bin/sh + +trap 'poweroff -f' EXIT + # don't let udev and this script step on eachother's toes for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do : > "/etc/udev/rules.d/$x" done rm -f -- /etc/lvm/lvm.conf udevadm control --reload -udevadm settle set -e udevadm settle -mkfs.ext3 -L dracut /dev/sda +mkfs.ext3 -L dracut /dev/disk/by-id/ata-disk_root mkdir -p /root -mount /dev/sda /root +mount /dev/disk/by-id/ata-disk_root /root cp -a -t /root /source/* mkdir -p /root/run umount /root { echo "dracut-root-block-created" echo "ID_FS_UUID=$ID_FS_UUID" -} | dd oflag=direct,dsync of=/dev/sdb -sync +} | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker poweroff -f diff --git a/test/TEST-40-NBD/create-encrypted-root.sh b/test/TEST-40-NBD/create-encrypted-root.sh index bbd48b8e..8b60ccd7 100755 --- a/test/TEST-40-NBD/create-encrypted-root.sh +++ b/test/TEST-40-NBD/create-encrypted-root.sh @@ -1,4 +1,7 @@ #!/bin/sh + +trap 'poweroff -f' EXIT + # don't let udev and this script step on eachother's toes for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do : > "/etc/udev/rules.d/$x" @@ -7,29 +10,31 @@ rm -f -- /etc/lvm/lvm.conf udevadm control --reload udevadm settle +set -ex + printf test > keyfile -cryptsetup -q luksFormat /dev/sda /keyfile +cryptsetup -q luksFormat /dev/disk/by-id/ata-disk_root /keyfile echo "The passphrase is test" -cryptsetup luksOpen /dev/sda dracut_crypt_test < /keyfile \ - && lvm pvcreate -ff -y /dev/mapper/dracut_crypt_test \ - && lvm vgcreate dracut /dev/mapper/dracut_crypt_test \ - && lvm lvcreate -l 100%FREE -n root dracut \ - && lvm vgchange -ay \ - && mkfs.ext3 -L dracut -j /dev/dracut/root \ - && mkdir -p /sysroot \ - && mount /dev/dracut/root /sysroot \ - && cp -a -t /sysroot /source/* \ - && umount /sysroot +cryptsetup luksOpen /dev/disk/by-id/ata-disk_root dracut_crypt_test < /keyfile +lvm pvcreate -ff -y /dev/mapper/dracut_crypt_test +lvm vgcreate dracut /dev/mapper/dracut_crypt_test +lvm lvcreate -l 100%FREE -n root dracut +lvm vgchange -ay +mkfs.ext3 -L dracut -j /dev/dracut/root +mkdir -p /sysroot +mount /dev/dracut/root /sysroot +cp -a -t /sysroot /source/* +umount /sysroot sleep 1 lvm lvchange -a n /dev/dracut/root udevadm settle cryptsetup luksClose /dev/mapper/dracut_crypt_test udevadm settle sleep 1 -eval "$(udevadm info --query=env --name=/dev/sda | while read -r line || [ -n "$line" ]; do [ "$line" != "${line#*ID_FS_UUID*}" ] && echo "$line"; done)" +eval "$(udevadm info --query=env --name=/dev/disk/by-id/ata-disk_root | 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/sdb +} | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker sync poweroff -f diff --git a/test/TEST-40-NBD/create-server-root.sh b/test/TEST-40-NBD/create-server-root.sh index 535e046b..b1e87000 100755 --- a/test/TEST-40-NBD/create-server-root.sh +++ b/test/TEST-40-NBD/create-server-root.sh @@ -1,4 +1,7 @@ #!/bin/sh + +trap 'poweroff -f' EXIT + # don't let udev and this script step on eachother's toes for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do : > "/etc/udev/rules.d/$x" @@ -9,15 +12,15 @@ udevadm settle set -e udevadm settle -mkfs.ext3 -L dracut /dev/sda +mkfs.ext3 -L dracut /dev/disk/by-id/ata-disk_root mkdir -p /root -mount /dev/sda /root +mount /dev/disk/by-id/ata-disk_root /root cp -a -t /root /source/* mkdir -p /root/run umount /root { echo "dracut-root-block-created" echo "ID_FS_UUID=$ID_FS_UUID" -} | dd oflag=direct,dsync of=/dev/sdb +} | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker sync poweroff -f diff --git a/test/TEST-40-NBD/server-init.sh b/test/TEST-40-NBD/server-init.sh index e22c6496..7866f659 100755 --- a/test/TEST-40-NBD/server-init.sh +++ b/test/TEST-40-NBD/server-init.sh @@ -14,10 +14,6 @@ wait_for_if_link() { while [ $cnt -lt 600 ]; do li=$(ip -o link show dev "$1" 2> /dev/null) [ -n "$li" ] && return 0 - if [[ $2 ]]; then - li=$(ip -o link show dev "$2" 2> /dev/null) - [ -n "$li" ] && return 0 - fi sleep 0.1 cnt=$((cnt + 1)) done @@ -51,13 +47,12 @@ linkup() { wait_for_if_link "$1" 2> /dev/null && ip link set "$1" up 2> /dev/null && wait_for_if_up "$1" 2> /dev/null } -wait_for_if_link eth0 ens3 - ip addr add 127.0.0.1/8 dev lo ip link set lo up -ip link set dev eth0 name ens3 -ip addr add 192.168.50.1/24 dev ens3 -linkup ens3 + +wait_for_if_link enp0s1 +ip addr add 192.168.50.1/24 dev enp0s1 +linkup enp0s1 modprobe af_packet nbd-server diff --git a/test/TEST-40-NBD/test.sh b/test/TEST-40-NBD/test.sh index 3491dd2a..11cff752 100755 --- a/test/TEST-40-NBD/test.sh +++ b/test/TEST-40-NBD/test.sh @@ -35,15 +35,21 @@ run_server() { # Start server first echo "NBD TEST SETUP: Starting DHCP/NBD server" + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/unencrypted.img unencrypted + qemu_add_drive_args disk_index disk_args "$TESTDIR"/encrypted.img encrypted + qemu_add_drive_args disk_index disk_args "$TESTDIR"/server.img serverroot + "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/server.ext3 \ - -drive format=raw,index=1,media=disk,file="$TESTDIR"/nbd.ext3 \ - -drive format=raw,index=2,media=disk,file="$TESTDIR"/encrypted.ext3 \ + "${disk_args[@]}" \ + -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 \ - -serial "${SERIAL:-"file:$TESTDIR/server.log"}" \ - -append "panic=1 systemd.crash_reboot root=/dev/sda rootfstype=ext3 rw quiet console=ttyS0,115200n81 selinux=0" \ - -initrd "$TESTDIR"/initramfs.server -pidfile "$TESTDIR"/server.pid -daemonize || return 1 + -append "panic=1 rd.luks=0 systemd.crash_reboot quiet root=/dev/disk/by-id/ata-disk_serverroot rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 $SERVER_DEBUG" \ + -initrd "$TESTDIR"/initramfs.server \ + -pidfile "$TESTDIR"/server.pid -daemonize || return 1 chmod 644 "$TESTDIR"/server.pid || return 1 # Cleanup the terminal if we have one @@ -75,27 +81,26 @@ client_test() { echo "CLIENT TEST START: $test_name" - # Clear out the flags for each test - if ! dd if=/dev/zero of="$TESTDIR"/flag.img bs=1M count=1; then - echo "Unable to make client flag image" 1>&2 - return 1 - fi + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/flag.img \ + "${disk_args[@]}" \ -net nic,macaddr="$mac",model=e1000 \ -net socket,connect=127.0.0.1:12340 \ -append "panic=1 systemd.crash_reboot rd.shell=0 $cmdline $DEBUGFAIL rd.auto rd.info rd.retry=10 ro console=ttyS0,115200n81 selinux=0 " \ -initrd "$TESTDIR"/initramfs.testing # shellcheck disable=SC2181 - if [[ $? -ne 0 ]] || ! grep -U --binary-files=binary -F -m 1 -q nbd-OK "$TESTDIR"/flag.img; then + if [[ $? -ne 0 ]] || ! grep -U --binary-files=binary -F -m 1 -q nbd-OK "$TESTDIR"/marker.img; then echo "CLIENT TEST END: $test_name [FAILED - BAD EXIT]" return 1 fi # nbdinfo=( fstype fsoptions ) - read -r -a nbdinfo < <(awk '{print $2, $3; exit}' "$TESTDIR"/flag.img) + read -r -a nbdinfo < <(awk '{print $2, $3; exit}' "$TESTDIR"/marker.img) if [[ ${nbdinfo[0]} != "$fstype" ]]; then echo "CLIENT TEST END: $test_name [FAILED - WRONG FS TYPE] \"${nbdinfo[0]}\" != \"$fstype\"" @@ -191,10 +196,6 @@ client_run() { } make_encrypted_root() { - # Create the blank file to use as a root filesystem - dd if=/dev/zero of="$TESTDIR"/encrypted.ext3 bs=1M count=80 - dd if=/dev/zero of="$TESTDIR"/flag.img bs=1M count=1 - rm -fr "$TESTDIR"/overlay kernel=$KVERSION # Create what will eventually be our root filesystem onto an overlay @@ -214,11 +215,17 @@ make_encrypted_root() { ) inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip \ - mount dmesg mkdir cp ping dd + mount dmesg mkdir cp ping dd sync for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do [ -f ${_terminfodir}/l/linux ] && break done inst_multiple -o ${_terminfodir}/l/linux + + inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh" + inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util" + ln -s dracut-util "${initdir}/usr/bin/dracut-getarg" + ln -s dracut-util "${initdir}/usr/bin/dracut-getargs" + inst ./client-init.sh /sbin/init inst_simple /etc/os-release find_binary plymouth > /dev/null && inst_multiple plymouth @@ -246,7 +253,6 @@ make_encrypted_root() { inst_hook emergency 000 ./hard-off.sh inst_hook initqueue 01 ./create-encrypted-root.sh inst_hook initqueue/finished 01 ./finished-false.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) # create an initramfs that will create the target root filesystem. @@ -259,20 +265,24 @@ make_encrypted_root() { -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 rm -rf -- "$TESTDIR"/overlay + dd if=/dev/zero of="$TESTDIR"/encrypted.img bs=1MiB count=120 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/encrypted.img root + # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/encrypted.ext3 \ - -drive format=raw,index=1,media=disk,file="$TESTDIR"/flag.img \ + "${disk_args[@]}" \ -append "root=/dev/fakeroot rw quiet console=ttyS0,115200n81 selinux=0" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/flag.img || return 1 - grep -F -a -m 1 ID_FS_UUID "$TESTDIR"/flag.img > "$TESTDIR"/luks.uuid + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1 + grep -F -a -m 1 ID_FS_UUID "$TESTDIR"/marker.img > "$TESTDIR"/luks.uuid } make_client_root() { - dd if=/dev/zero of="$TESTDIR"/nbd.ext3 bs=1M count=120 - dd if=/dev/zero of="$TESTDIR"/flag.img bs=1M count=1 - rm -fr "$TESTDIR"/overlay kernel=$KVERSION ( @@ -292,11 +302,17 @@ make_client_root() { done ) inst_multiple sh ls shutdown poweroff stty cat ps ln ip \ - dmesg mkdir cp ping dd + dmesg mkdir cp ping dd mount sync for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do [ -f ${_terminfodir}/l/linux ] && break done inst_multiple -o ${_terminfodir}/l/linux + + inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh" + inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util" + ln -s dracut-util "${initdir}/usr/bin/dracut-getarg" + ln -s dracut-util "${initdir}/usr/bin/dracut-getargs" + inst ./client-init.sh /sbin/init inst_simple /etc/os-release inst /etc/nsswitch.conf /etc/nsswitch.conf @@ -320,7 +336,6 @@ make_client_root() { inst_multiple sfdisk mkfs.ext3 poweroff cp umount sync dd inst_hook initqueue 01 ./create-client-root.sh inst_hook initqueue/finished 01 ./finished-false.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) # create an initramfs that will create the target root filesystem. @@ -333,20 +348,24 @@ make_client_root() { --no-hostonly-cmdline -N \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 + dd if=/dev/zero of="$TESTDIR"/unencrypted.img bs=1MiB count=120 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/unencrypted.img root + # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/nbd.ext3 \ - -drive format=raw,index=1,media=disk,file="$TESTDIR"/flag.img \ + "${disk_args[@]}" \ -append "root=/dev/dracut/root rw rootfstype=ext3 quiet console=ttyS0,115200n81 selinux=0" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/flag.img || return 1 + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1 rm -fr "$TESTDIR"/overlay } make_server_root() { - dd if=/dev/zero of="$TESTDIR"/server.ext3 bs=1M count=120 - dd if=/dev/zero of="$TESTDIR"/flag.img bs=1M count=1 - rm -fr "$TESTDIR"/overlay export kernel=$KVERSION ( @@ -365,11 +384,11 @@ make_server_root() { cat > "$initdir/etc/nbd-server/config" << EOF [generic] [raw] -exportname = /dev/sdb +exportname = /dev/disk/by-id/ata-disk_unencrypted port = 2000 bs = 4096 [encrypted] -exportname = /dev/sdc +exportname = /dev/disk/by-id/ata-disk_encrypted port = 2001 bs = 4096 EOF @@ -409,7 +428,6 @@ EOF inst_multiple sfdisk mkfs.ext3 poweroff cp umount sync dd sync inst_hook initqueue 01 ./create-server-root.sh inst_hook initqueue/finished 01 ./finished-false.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) # create an initramfs that will create the target root filesystem. @@ -422,13 +440,20 @@ EOF --no-hostonly-cmdline -N \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 + dd if=/dev/zero of="$TESTDIR"/server.img bs=1MiB count=120 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/server.img root + # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/server.ext3 \ - -drive format=raw,index=1,media=disk,file="$TESTDIR"/flag.img \ + "${disk_args[@]}" \ -append "root=/dev/dracut/root rw rootfstype=ext3 quiet console=ttyS0,115200n81 selinux=0" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/flag.img || return 1 + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1 rm -fr "$TESTDIR"/overlay } @@ -446,7 +471,6 @@ test_setup() { . "$basedir"/dracut-init.sh inst_multiple poweroff shutdown dd inst_hook shutdown-emergency 000 ./hard-off.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules inst ./cryptroot-ask.sh /sbin/cryptroot-ask # inst ./debug-shell.service /lib/systemd/system/debug-shell.service @@ -461,8 +485,8 @@ test_setup() { ) "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \ - -m "dash udev-rules rootfs-block fs-lib base debug kernel-modules" \ - -d "af_packet piix ide-gd_mod ata_piix ext3 ext3 sd_mod e1000" \ + -a "udev-rules base rootfs-block fs-lib debug kernel-modules" \ + -d "af_packet piix ide-gd_mod ata_piix ext3 sd_mod e1000 drbg" \ --no-hostonly-cmdline -N \ -f "$TESTDIR"/initramfs.server "$KVERSION" || return 1 diff --git a/test/TEST-50-MULTINIC/99-idesymlinks.rules b/test/TEST-50-MULTINIC/99-idesymlinks.rules deleted file mode 100644 index d557790a..00000000 --- a/test/TEST-50-MULTINIC/99-idesymlinks.rules +++ /dev/null @@ -1,8 +0,0 @@ -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}" diff --git a/test/TEST-50-MULTINIC/client-init.sh b/test/TEST-50-MULTINIC/client-init.sh index eb4f51b3..c1055a3c 100755 --- a/test/TEST-50-MULTINIC/client-init.sh +++ b/test/TEST-50-MULTINIC/client-init.sh @@ -27,7 +27,7 @@ done { echo "OK" echo "$IFACES" -} | dd oflag=direct,dsync of=/dev/sda +} | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker getargbool 0 rd.shell && sh -i diff --git a/test/TEST-50-MULTINIC/create-root.sh b/test/TEST-50-MULTINIC/create-root.sh index 3b02da85..e012a13e 100755 --- a/test/TEST-50-MULTINIC/create-root.sh +++ b/test/TEST-50-MULTINIC/create-root.sh @@ -1,25 +1,21 @@ #!/bin/sh + +trap 'poweroff -f' EXIT + # don't let udev and this script step on eachother's toes for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do : > "/etc/udev/rules.d/$x" done rm -f -- /etc/lvm/lvm.conf udevadm control --reload -udevadm settle set -e -# save a partition at the beginning for future flagging purposes -sfdisk /dev/sda << EOF -,1M -, -EOF udevadm settle -mkfs.ext3 -L dracut /dev/sda2 +mkfs.ext3 -L dracut /dev/disk/by-id/ata-disk_root mkdir -p /root -mount /dev/sda2 /root +mount /dev/disk/by-id/ata-disk_root /root cp -a -t /root /source/* mkdir -p /root/run umount /root -echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/sda1 -sync +echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker poweroff -f diff --git a/test/TEST-50-MULTINIC/server-init.sh b/test/TEST-50-MULTINIC/server-init.sh index 3dd7ebf2..a62ba518 100755 --- a/test/TEST-50-MULTINIC/server-init.sh +++ b/test/TEST-50-MULTINIC/server-init.sh @@ -15,10 +15,6 @@ wait_for_if_link() { while [ $cnt -lt 600 ]; do li=$(ip -o link show dev "$1" 2> /dev/null) [ -n "$li" ] && return 0 - if [[ $2 ]]; then - li=$(ip -o link show dev "$2" 2> /dev/null) - [ -n "$li" ] && return 0 - fi sleep 0.1 cnt=$((cnt + 1)) done @@ -52,14 +48,14 @@ linkup() { wait_for_if_link "$1" 2> /dev/null && ip link set "$1" up 2> /dev/null && wait_for_if_up "$1" 2> /dev/null } -wait_for_if_link eth0 ens2 +wait_for_if_link enp0s1 : > /dev/watchdog ip addr add 127.0.0.1/8 dev lo linkup lo -ip link set dev eth0 name ens2 -ip addr add 192.168.50.1/24 dev ens2 -linkup ens2 + +ip addr add 192.168.50.1/24 dev enp0s1 +linkup enp0s1 : > /dev/watchdog modprobe af_packet diff --git a/test/TEST-50-MULTINIC/test.sh b/test/TEST-50-MULTINIC/test.sh index 46a76f70..56a12a5d 100755 --- a/test/TEST-50-MULTINIC/test.sh +++ b/test/TEST-50-MULTINIC/test.sh @@ -21,8 +21,13 @@ run_server() { # Start server first echo "MULTINIC TEST SETUP: Starting DHCP/NFS server" + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/server.img root + "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/server.ext3 \ + "${disk_args[@]}" \ -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"}" \ @@ -59,13 +64,15 @@ client_test() { echo "CLIENT TEST START: $test_name" - # Need this so kvm-qemu will boot (needs non-/dev/zero local disk) - if ! dd if=/dev/zero of="$TESTDIR"/client.img bs=1M count=1; then - echo "Unable to make client sda image" 1>&2 - return 1 - fi + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker - "$testdir"/run-qemu -drive format=raw,index=0,media=disk,file="$TESTDIR"/client.img \ + # Invoke KVM and/or QEMU to actually create the target filesystem. + "$testdir"/run-qemu \ + "${disk_args[@]}" \ -net socket,connect=127.0.0.1:12350 \ -net nic,macaddr=52:54:00:12:34:"$mac1",model=e1000 \ -net nic,macaddr=52:54:00:12:34:"$mac2",model=e1000 \ @@ -76,12 +83,12 @@ client_test() { -device e1000,netdev=n2,mac=52:54:00:12:34:99 \ -watchdog i6300esb -watchdog-action poweroff \ -append "quiet rd.net.timeout.dhcp=3 panic=1 systemd.crash_reboot rd.shell=0 $cmdline $DEBUGFAIL rd.retry=5 ro console=ttyS0,115200n81 selinux=0 init=/sbin/init rd.debug systemd.log_target=console" \ - -initrd "$TESTDIR"/initramfs.testing + -initrd "$TESTDIR"/initramfs.testing || return 1 { read -r OK read -r IFACES - } < "$TESTDIR"/client.img + } < "$TESTDIR"/marker.img if [[ $OK != "OK" ]]; then echo "CLIENT TEST END: $test_name [FAILED - BAD EXIT]" @@ -128,54 +135,51 @@ test_client() { client_test "MULTINIC root=nfs BOOTIF=" \ 00 01 02 \ "root=nfs:192.168.50.1:/nfs/client BOOTIF=52-54-00-12-34-00" \ - "ens2" || return 1 + "enp0s1" || return 1 - client_test "MULTINIC root=nfs BOOTIF= ip=ens4:dhcp" \ + client_test "MULTINIC root=nfs BOOTIF= ip=enp0s3:dhcp" \ 00 01 02 \ - "root=nfs:192.168.50.1:/nfs/client BOOTIF=52-54-00-12-34-00 ip=ens3:dhcp" \ - "ens2 ens3" || return 1 + "root=nfs:192.168.50.1:/nfs/client BOOTIF=52-54-00-12-34-00 ip=enp0s2:dhcp" \ + "enp0s1 enp0s2" || return 1 # PXE Style BOOTIF= with dhcp root-path client_test "MULTINIC root=dhcp BOOTIF=" \ 00 01 02 \ "root=dhcp BOOTIF=52-54-00-12-34-02" \ - "ens4" || return 1 + "enp0s3" || return 1 # Multinic case, where only one nic works client_test "MULTINIC root=nfs ip=dhcp" \ FF 00 FE \ "root=nfs:192.168.50.1:/nfs/client ip=dhcp" \ - "ens3" || return 1 + "enp0s2" || return 1 # Require two interfaces - client_test "MULTINIC root=nfs ip=ens3:dhcp ip=ens4:dhcp bootdev=ens3" \ + client_test "MULTINIC root=nfs ip=enp0s2:dhcp ip=enp0s3:dhcp bootdev=enp0s2" \ 00 01 02 \ - "root=nfs:192.168.50.1:/nfs/client ip=ens3:dhcp ip=ens4:dhcp bootdev=ens3" \ - "ens3 ens4" || return 1 + "root=nfs:192.168.50.1:/nfs/client ip=enp0s2:dhcp ip=enp0s3:dhcp bootdev=enp0s2" \ + "enp0s2 enp0s3" || return 1 # Require three interfaces with dhcp root-path - client_test "MULTINIC root=dhcp ip=ens2:dhcp ip=ens3:dhcp ip=ens4:dhcp bootdev=ens4" \ + client_test "MULTINIC root=dhcp ip=enp0s1:dhcp ip=enp0s2:dhcp ip=enp0s3:dhcp bootdev=enp0s3" \ 00 01 02 \ - "root=dhcp ip=ens2:dhcp ip=ens3:dhcp ip=ens4:dhcp bootdev=ens4" \ - "ens2 ens3 ens4" || return 1 + "root=dhcp ip=enp0s1:dhcp ip=enp0s2:dhcp ip=enp0s3:dhcp bootdev=enp0s3" \ + "enp0s1 enp0s2 enp0s3" || return 1 client_test "MULTINIC bonding" \ 00 01 02 \ - "root=nfs:192.168.50.1:/nfs/client ip=bond0:dhcp bond=bond0:ens2,ens3,ens4:mode=balance-rr" \ + "root=nfs:192.168.50.1:/nfs/client ip=bond0:dhcp bond=bond0:enp0s1,enp0s2,enp0s3:mode=balance-rr" \ "bond0" || return 1 # bridge, where only one interface is actually connected client_test "MULTINIC bridging" \ 00 01 02 \ - "root=nfs:192.168.50.1:/nfs/client ip=bridge0:dhcp bridge=bridge0:ens2,ens6,ens7" \ + "root=nfs:192.168.50.1:/nfs/client ip=bridge0:dhcp bridge=bridge0:enp0s1,enp0s5,enp0s6" \ "bridge0" || return 1 return 0 } test_setup() { - # Make server root - dd if=/dev/zero of="$TESTDIR"/server.ext3 bs=1M count=120 - kernel=$KVERSION ( mkdir -p "$TESTDIR"/overlay/source @@ -305,7 +309,6 @@ test_setup() { inst_multiple sfdisk mkfs.ext3 poweroff cp umount sync dd inst_hook initqueue 01 ./create-root.sh inst_hook initqueue/finished 01 ./finished-false.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) # create an initramfs that will create the target root filesystem. @@ -317,14 +320,22 @@ test_setup() { --nomdadmconf \ --no-hostonly-cmdline -N \ -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 + rm -fr "$TESTDIR"/overlay + + dd if=/dev/zero of="$TESTDIR"/server.img bs=1MiB count=120 + dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1 + declare -a disk_args=() + # shellcheck disable=SC2034 + declare -i disk_index=0 + qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker + qemu_add_drive_args disk_index disk_args "$TESTDIR"/server.img root # Invoke KVM and/or QEMU to actually create the target filesystem. "$testdir"/run-qemu \ - -drive format=raw,index=0,media=disk,file="$TESTDIR"/server.ext3 \ + "${disk_args[@]}" \ -append "root=/dev/dracut/root rw rootfstype=ext3 quiet console=ttyS0,115200n81 selinux=0" \ -initrd "$TESTDIR"/initramfs.makeroot || return 1 - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/server.ext3 || return 1 - rm -fr "$TESTDIR"/overlay + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/marker.img || return 1 # Make an overlay with needed tools for the test harness ( @@ -335,7 +346,6 @@ test_setup() { inst_multiple poweroff shutdown inst_hook shutdown-emergency 000 ./hard-off.sh inst_hook emergency 000 ./hard-off.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules inst_simple ./99-default.link /etc/systemd/network/99-default.link ) diff --git a/test/TEST-60-BONDBRIDGEVLANIFCFG/99-idesymlinks.rules b/test/TEST-60-BONDBRIDGEVLANIFCFG/99-idesymlinks.rules deleted file mode 100644 index d557790a..00000000 --- a/test/TEST-60-BONDBRIDGEVLANIFCFG/99-idesymlinks.rules +++ /dev/null @@ -1,8 +0,0 @@ -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd" -ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}" diff --git a/test/TEST-60-BONDBRIDGEVLANIFCFG/create-root.sh b/test/TEST-60-BONDBRIDGEVLANIFCFG/create-root.sh index 3b02da85..59797a3e 100755 --- a/test/TEST-60-BONDBRIDGEVLANIFCFG/create-root.sh +++ b/test/TEST-60-BONDBRIDGEVLANIFCFG/create-root.sh @@ -1,4 +1,7 @@ #!/bin/sh + +trap 'poweroff -f' EXIT + # don't let udev and this script step on eachother's toes for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do : > "/etc/udev/rules.d/$x" diff --git a/test/TEST-60-BONDBRIDGEVLANIFCFG/test.sh b/test/TEST-60-BONDBRIDGEVLANIFCFG/test.sh index c96fe78c..4b4da7c6 100755 --- a/test/TEST-60-BONDBRIDGEVLANIFCFG/test.sh +++ b/test/TEST-60-BONDBRIDGEVLANIFCFG/test.sh @@ -320,7 +320,6 @@ test_setup() { inst_multiple sfdisk mkfs.ext3 poweroff cp umount sync dd inst_hook initqueue 01 ./create-root.sh inst_hook initqueue/finished 01 ./finished-false.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules ) # create an initramfs that will create the target root filesystem. @@ -349,7 +348,6 @@ test_setup() { . "$basedir"/dracut-init.sh inst_multiple poweroff shutdown inst_hook emergency 000 ./hard-off.sh - inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules inst_simple ./99-default.link /etc/systemd/network/99-default.link ) diff --git a/test/run-qemu b/test/run-qemu index 7029997f..4e798c8c 100755 --- a/test/run-qemu +++ b/test/run-qemu @@ -18,7 +18,7 @@ export PATH=/sbin:/bin:/usr/sbin:/usr/bin } # Provide rng device sourcing the hosts /dev/urandom and other standard parameters -ARGS+=(-smp 2 -m 512 -nodefaults -vga none -display none -no-reboot -device virtio-rng-pci) +ARGS+=(-M q35 -smp 2 -m 512 -nodefaults -vga none -display none -no-reboot -device virtio-rng-pci) if ! [[ $* == *-daemonize* ]] && ! [[ $* == *-daemonize* ]]; then ARGS+=(-serial stdio)