]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
ci: use /dev/disk/by-id
authorHarald Hoyer <harald@redhat.com>
Tue, 20 Apr 2021 14:16:14 +0000 (16:16 +0200)
committerHarald Hoyer <harald@hoyer.xyz>
Thu, 22 Apr 2021 00:55:31 +0000 (02:55 +0200)
Due to parallel probing of the linux kernel `/dev/sd*` can't be used to
reliably address a hard disk. This can be seen by the many spurious
failures of the dracut CI, where `mdadm` failed with error 524 or tests
failed due to the success marker message written to the wrong disk.

* don't rely on `/dev/sd*` but use disk ids and `/dev/disk/by-id/ata-disk_<name>`

* specify the exact qemu machine architecture `-M q35` needed for the
  disk ids. A later patch will move this to `run-qemu`, when all tests are converted

* due to `-M q35` the interface names have changed from
  `ens2` -> `enp0s1` and `ens3` -> `enp0s2`

81 files changed:
test/TEST-01-BASIC/99-idesymlinks.rules [deleted file]
test/TEST-01-BASIC/create-root.sh
test/TEST-01-BASIC/test-init.sh
test/TEST-01-BASIC/test.sh
test/TEST-02-SYSTEMD/99-idesymlinks.rules [deleted file]
test/TEST-02-SYSTEMD/create-root.sh
test/TEST-02-SYSTEMD/test-init.sh
test/TEST-02-SYSTEMD/test.sh
test/TEST-03-USR-MOUNT/99-idesymlinks.rules [deleted file]
test/TEST-03-USR-MOUNT/create-root.sh
test/TEST-03-USR-MOUNT/fstab
test/TEST-03-USR-MOUNT/test-init.sh
test/TEST-03-USR-MOUNT/test.sh
test/TEST-04-FULL-SYSTEMD/99-idesymlinks.rules [deleted file]
test/TEST-04-FULL-SYSTEMD/create-root.sh
test/TEST-04-FULL-SYSTEMD/fstab
test/TEST-04-FULL-SYSTEMD/test-init.sh
test/TEST-04-FULL-SYSTEMD/test.sh
test/TEST-10-RAID/99-idesymlinks.rules [deleted file]
test/TEST-10-RAID/create-root.sh
test/TEST-10-RAID/test-init.sh
test/TEST-10-RAID/test.sh
test/TEST-11-LVM/99-idesymlinks.rules [deleted file]
test/TEST-11-LVM/create-root.sh
test/TEST-11-LVM/test-init.sh
test/TEST-11-LVM/test.sh
test/TEST-12-RAID-DEG/99-idesymlinks.rules [deleted file]
test/TEST-12-RAID-DEG/create-root.sh
test/TEST-12-RAID-DEG/test-init.sh
test/TEST-12-RAID-DEG/test.sh
test/TEST-13-ENC-RAID-LVM/99-idesymlinks.rules [deleted file]
test/TEST-13-ENC-RAID-LVM/create-root.sh
test/TEST-13-ENC-RAID-LVM/test-init.sh
test/TEST-13-ENC-RAID-LVM/test.sh
test/TEST-14-IMSM/99-idesymlinks.rules [deleted file]
test/TEST-14-IMSM/create-root.sh
test/TEST-14-IMSM/test-init.sh
test/TEST-14-IMSM/test.sh
test/TEST-15-BTRFSRAID/99-idesymlinks.rules [deleted file]
test/TEST-15-BTRFSRAID/create-root.sh
test/TEST-15-BTRFSRAID/test-init.sh
test/TEST-15-BTRFSRAID/test.sh
test/TEST-16-DMSQUASH/99-idesymlinks.rules [deleted file]
test/TEST-16-DMSQUASH/create.py
test/TEST-16-DMSQUASH/test-init.sh
test/TEST-16-DMSQUASH/test.sh
test/TEST-17-LVM-THIN/99-idesymlinks.rules [deleted file]
test/TEST-17-LVM-THIN/create-root.sh
test/TEST-17-LVM-THIN/test-init.sh
test/TEST-17-LVM-THIN/test.sh
test/TEST-20-NFS/99-idesymlinks.rules [deleted file]
test/TEST-20-NFS/client-init.sh
test/TEST-20-NFS/create-root.sh
test/TEST-20-NFS/server-init.sh
test/TEST-20-NFS/test.sh
test/TEST-30-ISCSI/99-idesymlinks.rules [deleted file]
test/TEST-30-ISCSI/client-init.sh
test/TEST-30-ISCSI/create-client-root.sh
test/TEST-30-ISCSI/create-server-root.sh
test/TEST-30-ISCSI/server-init.sh
test/TEST-30-ISCSI/test.sh
test/TEST-35-ISCSI-MULTI/client-init.sh
test/TEST-35-ISCSI-MULTI/create-client-root.sh
test/TEST-35-ISCSI-MULTI/create-server-root.sh
test/TEST-35-ISCSI-MULTI/test.sh
test/TEST-40-NBD/99-idesymlinks.rules [deleted file]
test/TEST-40-NBD/client-init.sh
test/TEST-40-NBD/create-client-root.sh
test/TEST-40-NBD/create-encrypted-root.sh
test/TEST-40-NBD/create-server-root.sh
test/TEST-40-NBD/server-init.sh
test/TEST-40-NBD/test.sh
test/TEST-50-MULTINIC/99-idesymlinks.rules [deleted file]
test/TEST-50-MULTINIC/client-init.sh
test/TEST-50-MULTINIC/create-root.sh
test/TEST-50-MULTINIC/server-init.sh
test/TEST-50-MULTINIC/test.sh
test/TEST-60-BONDBRIDGEVLANIFCFG/99-idesymlinks.rules [deleted file]
test/TEST-60-BONDBRIDGEVLANIFCFG/create-root.sh
test/TEST-60-BONDBRIDGEVLANIFCFG/test.sh
test/run-qemu

diff --git a/test/TEST-01-BASIC/99-idesymlinks.rules b/test/TEST-01-BASIC/99-idesymlinks.rules
deleted file mode 100644 (file)
index d557790..0000000
+++ /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}"
index aa18e1cdf5c6a4454b4ad9e5ba8aaf02aeea87e4..ecdc2b0a4f8fc01168cad72f132b155d602e5113 100755 (executable)
@@ -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
index 5dd8eada31b71760472b2f789947e501e82c71da..9a3940b29fb3a53ef939c1d1352d7025b9b9f3ff 100755 (executable)
@@ -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
index 825d717fbd2f5d6131513d882917d99045f1277c..b79661da230321b14330ef15592b52ab254d112c 100755 (executable)
@@ -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 (file)
index d557790..0000000
+++ /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}"
index c5c7c86b750fb9e24fb54d7eeba9253f1fd76124..e012a13e3a2182c482325d999054c0c61fafae5d 100755 (executable)
@@ -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
index 91f043712385d7525b9c5f9700e0ecbb48db70a4..9a3940b29fb3a53ef939c1d1352d7025b9b9f3ff 100755 (executable)
@@ -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
index 6915a29b66b86b7142eaaf7b2df9a76739b0924e..df679610d7c78c41f7de93237611f9ff4bff9b1c 100755 (executable)
@@ -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 (file)
index d557790..0000000
+++ /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}"
index 919898efc6f3c02367d47adf1e4f13ae216b8c46..90490f80b631e16e73de6346946ddf3b336268b9 100755 (executable)
@@ -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
index 0cc3370569eef2bb857216f4bcb1b54ebfd20c55..feac57a4504623e077f823c1d57917cc778a043e 100644 (file)
@@ -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
index 389d329b4e6686834cbb48d3a0f68133ec9fd2f5..9a3940b29fb3a53ef939c1d1352d7025b9b9f3ff 100755 (executable)
@@ -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
index d8360a57c3acc3c2af88ae77a95378039b2132f7..f7d65e948833a7c3f907ee0629bc11874574a088 100755 (executable)
@@ -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 (file)
index d557790..0000000
+++ /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}"
index 9f8b5ba1fed30d2d46ef797fc17a98edd9be052a..90490f80b631e16e73de6346946ddf3b336268b9 100755 (executable)
@@ -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
index 354107b12f02f9d604742ff1e54c182463688701..feac57a4504623e077f823c1d57917cc778a043e 100644 (file)
@@ -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
index d46a1263a4f7566a0dcce3401c6ed4d7c4228d44..e87f30cc707df4d588ef1e13b6d9caf997bee4a1 100755 (executable)
@@ -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
index bbe268c56b2bdb095ecd793952ebe6e787fb30e6..8919c985536593c477c0e36c92ce3cf0a34187fb 100755 (executable)
@@ -17,15 +17,20 @@ 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[@]}" \
         -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
+        -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
@@ -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 (file)
index d557790..0000000
+++ /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}"
index 9c26f0ac81c1a95d7aa9929ebb7fe087b8ccdbae..2012b729ff667656b9fc4efa521d74efe5b411f0 100755 (executable)
@@ -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
index 9a0ed37f5b2facfe39f87a043dea5bd140590aac..9a3940b29fb3a53ef939c1d1352d7025b9b9f3ff 100755 (executable)
@@ -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
index ad82c2e76bc5f85a5a2678cc8ffd6b1c9b54dff3..79e62393590b8dc690cf2ca996690e4f76c7055c 100755 (executable)
@@ -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 (file)
index d557790..0000000
+++ /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}"
index 3d2638e396a92125a3f66cd4bd9094a90f587b07..398f772761f911f49b6a07a99ab51152104bb592 100755 (executable)
@@ -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
index 9a0ed37f5b2facfe39f87a043dea5bd140590aac..9a3940b29fb3a53ef939c1d1352d7025b9b9f3ff 100755 (executable)
@@ -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
index 92c0eae0c76c8a41ac5818622193c1b1f3a91f5c..ac2481a73a3ac97ed47db0677e82251df50d78f4 100755 (executable)
@@ -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 (file)
index d557790..0000000
+++ /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}"
index 2ad00fa5a3cfc37b7064c4a88dbd5f27904ca896..2012b729ff667656b9fc4efa521d74efe5b411f0 100755 (executable)
@@ -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
index dd5c57deabfca03176e500cc6bee886f1450a45e..64fc6059a45758c89830b97441e26eb259c3fd4b 100755 (executable)
@@ -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
index 2e7aa3efddb87c2dcb96a0afc8252c19aafd7c32..3f3f1ffb2ccbb54364536249181b2b8f2830285b 100755 (executable)
@@ -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 (file)
index d557790..0000000
+++ /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}"
index 72d8d723da764ebc901f7a96ac9a4694a7ca500a..4c1abf89ed589d5c964ff5bc72a78cbecfea6020 100755 (executable)
@@ -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
index 4ac913e6c948b8e0a3db8d6fe93ef8530881a194..64fc6059a45758c89830b97441e26eb259c3fd4b 100755 (executable)
@@ -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
index c90231f901e482071dc18e5c145128b6197ebd04..612a65207d89e1af8dd6b93663366ae7ef932b21 100755 (executable)
@@ -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 (file)
index d557790..0000000
+++ /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}"
index 555a3fdb1cbfd826e567341068f1a21981c518e6..5097688e500cf495d63e74f5596f8ded404d6f5d 100755 (executable)
@@ -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
index 9853e18c2525f375ad3d58235c91e670bf91f62f..64fc6059a45758c89830b97441e26eb259c3fd4b 100755 (executable)
@@ -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
index 39efd5779fa7ae37ebd31379751dc29942b79e5c..a551ac2423dcd8d7c55a9b94d4a3ed5ccb5c68b6 100755 (executable)
@@ -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 (file)
index d557790..0000000
+++ /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}"
index 380a8d14f35bd7b407acb4d3cde8b6d9a3d3b50f..b8560ad81fb802e752686a32362a346487c545ed 100755 (executable)
@@ -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
index 119e4876e1f117763377f11d3b7bc142f1ee16b8..4fb9146bff31e240ddc7aa2bbb3e18e2b81b4be4 100755 (executable)
@@ -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
index 7addd6dc847b61b36b0f0ef9dd90d7fb5a8c3546..5a086ec76317610aa205d072e2d65e61ab481b20 100755 (executable)
@@ -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 (file)
index d557790..0000000
+++ /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}"
index b09bba53f20a5ef570f70303a349859233a27631..00e92da0cd12991e5a0f5506ed1f970ac8d4b893 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/python -tt
+#!/usr/bin/python3 -tt
 #
 # livecd-creator : Creates Live CD based for Fedora.
 #
index 7f2cd72cdb892e2e69c2569195108c689ff7e29c..4fb9146bff31e240ddc7aa2bbb3e18e2b81b4be4 100755 (executable)
@@ -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
index 6bde17aa5a2be64bed784097ca545a2af8e7bb00..288a05c6d4eec3b6a8aff41bb6453db2cee05684 100755 (executable)
@@ -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 (file)
index d557790..0000000
+++ /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}"
index 930c45fc714147029b9cddde5bc51d44904ce30e..576348cf2d0a8696c25c42ad5774cee589853f50 100755 (executable)
@@ -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
index 9a0ed37f5b2facfe39f87a043dea5bd140590aac..9a3940b29fb3a53ef939c1d1352d7025b9b9f3ff 100755 (executable)
@@ -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
index cbef6f3e2570916977fb0958bfb6dec91425ca1b..f9f73109271bb24197d1cfed2bc995fb9164ad6d 100755 (executable)
@@ -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 (file)
index d557790..0000000
+++ /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}"
index 4dec9374854d527c18f96a506c9668c73f0ac516..e4cfe5c59b6c863fc2022e3fb2dfb5f775ef106a 100755 (executable)
@@ -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
 
index 8f33cb6ff00ff5a92d12b85752ea153fd3e22d03..7948b79ee9337ea355d5b9f6ec80ae0ce1d34933 100755 (executable)
@@ -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
index ba2bdd23576043ba5e74a8ec64bddc4f52d2949b..48e55ebd57ba6e015e08d536636a215fa8b990aa 100755 (executable)
@@ -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
index 950f184be7af091dd00b1803e9f419bcaefc3913..5a46f3d581ac26100a300677c6a51982aec09338 100755 (executable)
@@ -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 (file)
index d557790..0000000
+++ /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}"
index 6539332c3727d32cd980e67ee6c0a2a1c5e580c1..441c7e3999a327c0d4e8177b7e6803354b845b06 100755 (executable)
@@ -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
index 04cfaeb7e0e5798ca8f8017fbb6daa69841e5d06..1ec20afffaef5c751c81d1f4560e1c83069edf78 100755 (executable)
@@ -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
index 3b02da85ca79a6ac59d44be6a66428edd73c9351..7767d253e81fdcb32cc8b269ed6db17b253f1920 100755 (executable)
@@ -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
index e0e6fc759428b9be0138f12e0d1a16fd57d8567e..420ad618229cdf3451a4670dede24cb88c33a4f9 100755 (executable)
@@ -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
index 2e558f882e754cfa1ce10071dacebdc60a9740b0..39269c5b0dfba9bbb5414871791c4a2c77350cb0 100755 (executable)
@@ -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
     )
 
index 965ddc5c9fd718f44c195c388f205ad48361aaf2..441c7e3999a327c0d4e8177b7e6803354b845b06 100755 (executable)
@@ -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
index 92f7067083d3c393fc5fd5a9f22a268a05914ac2..279363ee932e6d1672d6e40b4fd4a4abf361011e 100755 (executable)
@@ -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"
index cf55509bc01203e11e6bccbf24b20762bf473a0a..7767d253e81fdcb32cc8b269ed6db17b253f1920 100755 (executable)
@@ -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
index b52cab1581a7773589f145e03154d05eac094e66..1dee2eedf179454fd9b5b407da9d66283af4ea7d 100755 (executable)
@@ -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 (file)
index d557790..0000000
+++ /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}"
index 5adb66f23f0aae5dea17c66b36344b300ee00b7a..f250626f864a20265cac90d3a3a07b403998ea06 100755 (executable)
@@ -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
index 535e046b750183b0a1a6a9164a57de8515b55026..54a19149185f5e6075a49aaa2f27e9ca3d97ea4a 100755 (executable)
@@ -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
index bbd48b8ecb71139f79fab88a6478e47a99c0f789..8b60ccd7a9fc1bdb635310ce17fe63638b5a214c 100755 (executable)
@@ -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
index 535e046b750183b0a1a6a9164a57de8515b55026..b1e8700061ff863faaf01ebb3f774704aebcc0cc 100755 (executable)
@@ -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
index e22c649662f4c36f8242f24ef221c92c6768cbfb..7866f659e53d258057fb3f0eeb6c5eebb4f721f2 100755 (executable)
@@ -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
index 3491dd2a65419525e7a758d3e7087e420091aee5..11cff7521a3825fa8ed5922cf082f684de66ecfa 100755 (executable)
@@ -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 (file)
index d557790..0000000
+++ /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}"
index eb4f51b31290286fb6e90e2802083b26a775224b..c1055a3ced793d18a0a69658a9b424864657a543 100755 (executable)
@@ -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
 
index 3b02da85ca79a6ac59d44be6a66428edd73c9351..e012a13e3a2182c482325d999054c0c61fafae5d 100755 (executable)
@@ -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
index 3dd7ebf254ff93b43a8f7facef6398ff1ccedbab..a62ba51877c15e376db4e2a0a8c49131ba43bb98 100755 (executable)
@@ -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
index 46a76f702418730472a135c0a4c56a22eac7dd07..56a12a5d6a93313f36e74c697c9c91136e8c40e4 100755 (executable)
@@ -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 (file)
index d557790..0000000
+++ /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}"
index 3b02da85ca79a6ac59d44be6a66428edd73c9351..59797a3e20566245a6f675268e785083a8569b25 100755 (executable)
@@ -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"
index c96fe78c9147e2ce07454f10fa3d69ff6751ccbe..4b4da7c657fd9f44dbd35cbb25aeb031eae77350 100755 (executable)
@@ -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
     )
 
index 7029997fed77e88e67f65d31110b6e9af8bc40ff..4e798c8c3232a1d113575bdfb17cbffdd3fa7048 100755 (executable)
@@ -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)