]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
fix: make testsuite pass on OpenSuse and Arch
authorHarald Hoyer <harald@redhat.com>
Fri, 7 May 2021 07:58:28 +0000 (09:58 +0200)
committerHarald Hoyer <harald@hoyer.xyz>
Fri, 14 May 2021 06:34:38 +0000 (08:34 +0200)
This removes some hard assumptions about the file system layout.

It also hardens the tests with network interface renaming rules and
guards.

67 files changed:
test/TEST-01-BASIC/test-init.sh
test/TEST-01-BASIC/test.sh
test/TEST-02-SYSTEMD/test-init.sh
test/TEST-02-SYSTEMD/test.sh
test/TEST-03-USR-MOUNT/test-init.sh
test/TEST-03-USR-MOUNT/test.sh
test/TEST-04-FULL-SYSTEMD/test-init.sh
test/TEST-04-FULL-SYSTEMD/test.sh
test/TEST-10-RAID/test-init.sh
test/TEST-10-RAID/test.sh
test/TEST-11-LVM/test-init.sh
test/TEST-11-LVM/test.sh
test/TEST-12-RAID-DEG/test-init.sh
test/TEST-12-RAID-DEG/test.sh
test/TEST-13-ENC-RAID-LVM/test-init.sh
test/TEST-13-ENC-RAID-LVM/test.sh
test/TEST-14-IMSM/create-root.sh
test/TEST-14-IMSM/test-init.sh
test/TEST-14-IMSM/test.sh
test/TEST-15-BTRFSRAID/test-init.sh
test/TEST-15-BTRFSRAID/test.sh
test/TEST-16-DMSQUASH/test-init.sh
test/TEST-16-DMSQUASH/test.sh
test/TEST-17-LVM-THIN/test-init.sh
test/TEST-17-LVM-THIN/test.sh
test/TEST-20-NFS/client-init.sh
test/TEST-20-NFS/client.link [moved from test/TEST-20-NFS/99-default.link with 100% similarity]
test/TEST-20-NFS/server-init.sh
test/TEST-20-NFS/server.link [moved from test/TEST-60-BONDBRIDGEVLANIFCFG/99-default.link with 100% similarity]
test/TEST-20-NFS/test.sh
test/TEST-20-NFS/wait-if-server.sh [new file with mode: 0644]
test/TEST-30-ISCSI/client-init.sh
test/TEST-30-ISCSI/client.link [moved from test/TEST-50-MULTINIC/99-default.link with 100% similarity]
test/TEST-30-ISCSI/dhcpd.conf
test/TEST-30-ISCSI/server-init.sh
test/TEST-30-ISCSI/server.link [new file with mode: 0644]
test/TEST-30-ISCSI/test.sh
test/TEST-30-ISCSI/wait-if-server.sh [new file with mode: 0644]
test/TEST-35-ISCSI-MULTI/client-init.sh
test/TEST-35-ISCSI-MULTI/client.link [new file with mode: 0644]
test/TEST-35-ISCSI-MULTI/create-client-root.sh
test/TEST-35-ISCSI-MULTI/dhcpd.conf
test/TEST-35-ISCSI-MULTI/server-init.sh
test/TEST-35-ISCSI-MULTI/server.link [new file with mode: 0644]
test/TEST-35-ISCSI-MULTI/test.sh
test/TEST-35-ISCSI-MULTI/wait-if-server.sh [new file with mode: 0644]
test/TEST-40-NBD/client-init.sh
test/TEST-40-NBD/client.link [new file with mode: 0644]
test/TEST-40-NBD/create-encrypted-root.sh
test/TEST-40-NBD/server-init.sh
test/TEST-40-NBD/server.link [new file with mode: 0644]
test/TEST-40-NBD/test.sh
test/TEST-40-NBD/wait-if-server.sh [new file with mode: 0644]
test/TEST-50-MULTINIC/client-init.sh
test/TEST-50-MULTINIC/client.link [new file with mode: 0644]
test/TEST-50-MULTINIC/create-root.sh
test/TEST-50-MULTINIC/server-init.sh
test/TEST-50-MULTINIC/server.link [new file with mode: 0644]
test/TEST-50-MULTINIC/test.sh
test/TEST-50-MULTINIC/wait-if-server.sh [new file with mode: 0644]
test/TEST-60-BONDBRIDGEVLANIFCFG/client-init.sh
test/TEST-60-BONDBRIDGEVLANIFCFG/client.link [new file with mode: 0644]
test/TEST-60-BONDBRIDGEVLANIFCFG/server-init.sh
test/TEST-60-BONDBRIDGEVLANIFCFG/server.link [new file with mode: 0644]
test/TEST-60-BONDBRIDGEVLANIFCFG/test.sh
test/run-qemu
test/test-functions

index 9a3940b29fb3a53ef939c1d1352d7025b9b9f3ff..108e626ba55e82d2ead57999aaaf5a2ae46d0070 100755 (executable)
@@ -3,7 +3,7 @@
 
 . /lib/dracut-lib.sh
 
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 command -v plymouth > /dev/null 2>&1 && plymouth --quit
 exec > /dev/console 2>&1
 
index 645ac7e8790fb5ec38884a38d7327ef5d4662cf3..c2685c27b1eb1e81f3ba172f964ca4f5d23ccd40 100755 (executable)
@@ -37,9 +37,6 @@ test_setup() {
             cd "$initdir" || exit
             mkdir -p -- dev sys proc etc var/run tmp
             mkdir -p root usr/bin usr/lib usr/lib64 usr/sbin
-            for i in bin sbin lib lib64; do
-                ln -sfnr usr/$i $i
-            done
         )
         inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip \
             mount dmesg dhclient mkdir cp ping dhclient \
index 9a3940b29fb3a53ef939c1d1352d7025b9b9f3ff..108e626ba55e82d2ead57999aaaf5a2ae46d0070 100755 (executable)
@@ -3,7 +3,7 @@
 
 . /lib/dracut-lib.sh
 
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 command -v plymouth > /dev/null 2>&1 && plymouth --quit
 exec > /dev/console 2>&1
 
index 41e22cf45f66626e2971470ebe5e072bf2820518..fd247c1ef74b38ba572a3103b34049e28a6c0ba6 100755 (executable)
@@ -35,9 +35,6 @@ test_setup() {
             cd "$initdir" || exit
             mkdir -p -- dev sys proc etc var/run tmp
             mkdir -p root usr/bin usr/lib usr/lib64 usr/sbin
-            for i in bin sbin lib lib64; do
-                ln -sfnr usr/$i $i
-            done
             mkdir -p -- var/lib/nfs/rpc_pipefs
         )
         inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip \
index 9a3940b29fb3a53ef939c1d1352d7025b9b9f3ff..108e626ba55e82d2ead57999aaaf5a2ae46d0070 100755 (executable)
@@ -3,7 +3,7 @@
 
 . /lib/dracut-lib.sh
 
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 command -v plymouth > /dev/null 2>&1 && plymouth --quit
 exec > /dev/console 2>&1
 
index b3d9d23bd21cc5918d5ebc8773dbe202a1010cfd..9bd9a129ec3e21df4a2a553f5ff5af3857eced96 100755 (executable)
@@ -57,9 +57,6 @@ test_setup() {
             cd "$initdir" || exit
             mkdir -p -- dev sys proc etc var/run tmp
             mkdir -p root usr/bin usr/lib usr/lib64 usr/sbin
-            for i in bin sbin lib lib64; do
-                ln -sfnr usr/$i $i
-            done
         )
         inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip \
             mount dmesg dhclient mkdir cp ping dhclient \
index e87f30cc707df4d588ef1e13b6d9caf997bee4a1..b7261b5f81d9df9b3c0488e9b54453ee61b20084 100755 (executable)
@@ -3,7 +3,7 @@
 
 . /lib/dracut-lib.sh
 
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 command -v plymouth > /dev/null 2>&1 && plymouth --quit
 exec > /dev/console 2>&1
 
index e2f352b5abd49546390da04faf04fc105533dc82..036c2b0fbed99a57ed453ae4ea42ca3b6733498a 100755 (executable)
@@ -90,11 +90,7 @@ test_setup() {
             return 1
         fi
         inst /sbin/init
-        inst /lib/systemd/system/systemd-remount-fs.service
-        inst /lib/systemd/systemd-remount-fs
-        inst /lib/systemd/system/systemd-journal-flush.service
-        inst /lib/systemd/system/slices.target
-        inst_multiple -o /lib/systemd/system/dracut*
+        inst_multiple -o {,/usr}/lib/systemd/system/"dracut*"
 
         inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
         inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
@@ -112,7 +108,7 @@ test_setup() {
             /etc/shadow \
             /etc/group \
             /etc/shells \
-            /etc/nsswitch.conf \
+            {,/usr}/etc/nsswitch.conf \
             /etc/pam.conf \
             /etc/securetty \
             /etc/os-release \
@@ -200,7 +196,7 @@ EOF
         ln -fs /proc/self/mounts "$initdir"/etc/mtab
 
         # install any Execs from the service files
-        grep -Eho '^Exec[^ ]*=[^ ]+' "$initdir"/lib/systemd/system/*.service \
+        grep -Eho '^Exec[^ ]*=[^ ]+' "$initdir"{,/usr}/lib/systemd/system/*.service \
             | while read -r i || [ -n "$i" ]; do
                 i=${i##Exec*=}
                 i=${i##-}
index 9a3940b29fb3a53ef939c1d1352d7025b9b9f3ff..108e626ba55e82d2ead57999aaaf5a2ae46d0070 100755 (executable)
@@ -3,7 +3,7 @@
 
 . /lib/dracut-lib.sh
 
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 command -v plymouth > /dev/null 2>&1 && plymouth --quit
 exec > /dev/console 2>&1
 
index 25f59089639a7ae656979ff37163f18caa14bbd5..477a82e3aa43721935196fc5745741aff4d167e7 100755 (executable)
@@ -37,9 +37,6 @@ test_setup() {
             cd "$initdir" || exit
             mkdir -p -- dev sys proc etc var/run tmp
             mkdir -p root usr/bin usr/lib usr/lib64 usr/sbin
-            for i in bin sbin lib lib64; do
-                ln -sfnr usr/$i $i
-            done
         )
         inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip \
             mount dmesg dhclient mkdir cp ping dhclient dd sync
index 9a3940b29fb3a53ef939c1d1352d7025b9b9f3ff..108e626ba55e82d2ead57999aaaf5a2ae46d0070 100755 (executable)
@@ -3,7 +3,7 @@
 
 . /lib/dracut-lib.sh
 
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 command -v plymouth > /dev/null 2>&1 && plymouth --quit
 exec > /dev/console 2>&1
 
index 0b336f245b0b66eda6bb736851e339491b6b532f..8170939f283210538597a570cf42c0c3397c8299 100755 (executable)
@@ -38,9 +38,6 @@ test_setup() {
             cd "$initdir" || exit
             mkdir -p -- dev sys proc etc var/run tmp
             mkdir -p root usr/bin usr/lib usr/lib64 usr/sbin
-            for i in bin sbin lib lib64; do
-                ln -sfnr usr/$i $i
-            done
             mkdir -p -- var/lib/nfs/rpc_pipefs
         )
         inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip \
index 64fc6059a45758c89830b97441e26eb259c3fd4b..a5360ef6677269564e5b8b325f5003ed9747cf5b 100755 (executable)
@@ -3,7 +3,7 @@
 
 . /lib/dracut-lib.sh
 
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 command -v plymouth > /dev/null 2>&1 && plymouth --quit
 exec > /dev/console 2>&1
 
index 2b4e853749d4e7a0cdf370abf431e88409e607b7..8ebfd82d053908e5adcd908495751a2a432f2cee 100755 (executable)
@@ -69,9 +69,6 @@ test_setup() {
             cd "$initdir" || exit
             mkdir -p -- dev sys proc etc var/run tmp
             mkdir -p root usr/bin usr/lib usr/lib64 usr/sbin
-            for i in bin sbin lib lib64; do
-                ln -sfnr usr/$i $i
-            done
         )
         inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip \
             mount dmesg dhclient mkdir cp ping dhclient dd sync
index 64fc6059a45758c89830b97441e26eb259c3fd4b..a5360ef6677269564e5b8b325f5003ed9747cf5b 100755 (executable)
@@ -3,7 +3,7 @@
 
 . /lib/dracut-lib.sh
 
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 command -v plymouth > /dev/null 2>&1 && plymouth --quit
 exec > /dev/console 2>&1
 
index bce386cbcc971bc773d2e3a69c5d9c0d04b79a80..491589507f962bb348675ef37f9a26e434a382cd 100755 (executable)
@@ -66,9 +66,6 @@ test_setup() {
             cd "$initdir" || exit
             mkdir -p -- dev sys proc etc var/run tmp
             mkdir -p root usr/bin usr/lib usr/lib64 usr/sbin
-            for i in bin sbin lib lib64; do
-                ln -sfnr usr/$i $i
-            done
             mkdir -p -- var/lib/nfs/rpc_pipefs
         )
         inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip \
index 5097688e500cf495d63e74f5596f8ded404d6f5d..34399921923c57997cc01d8c107734a424c4bd85 100755 (executable)
@@ -27,7 +27,6 @@ sleep 1
 udevadm settle
 
 sfdisk -g /dev/mapper/isw*Test0
-# save a partition at the beginning for future flagging purposes
 sfdisk --no-reread /dev/mapper/isw*Test0 << EOF
 ,4M
 ,28M
@@ -35,6 +34,8 @@ sfdisk --no-reread /dev/mapper/isw*Test0 << EOF
 ,28M
 EOF
 
+set -x
+
 udevadm settle
 dmraid -a n
 udevadm settle
@@ -49,10 +50,7 @@ done
 udevadm settle
 
 mdadm --create /dev/md0 --run --auto=yes --level=5 --raid-devices=3 \
-    /dev/mapper/isw*p2 \
-    /dev/mapper/isw*p3 \
-    /dev/mapper/isw*p4
-
+    /dev/mapper/isw*p*[234]
 # wait for the array to finish initailizing, otherwise this sometimes fails
 # randomly.
 mdadm -W /dev/md0
index 64fc6059a45758c89830b97441e26eb259c3fd4b..a5360ef6677269564e5b8b325f5003ed9747cf5b 100755 (executable)
@@ -3,7 +3,7 @@
 
 . /lib/dracut-lib.sh
 
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 command -v plymouth > /dev/null 2>&1 && plymouth --quit
 exec > /dev/console 2>&1
 
index be2d8221b98102e4a852c9bba1541f0218daa87b..8841c5771db1a6e4d6978f46c49f2edacf507b07 100755 (executable)
@@ -63,9 +63,6 @@ test_setup() {
             cd "$initdir" || exit
             mkdir -p -- dev sys proc etc var/run tmp
             mkdir -p root usr/bin usr/lib usr/lib64 usr/sbin
-            for i in bin sbin lib lib64; do
-                ln -sfnr usr/$i $i
-            done
         )
         inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip \
             mount dmesg dhclient mkdir cp ping dhclient dd sync
index 4fb9146bff31e240ddc7aa2bbb3e18e2b81b4be4..068e8f38e7937ace128eb05e36d946429f43792f 100755 (executable)
@@ -3,7 +3,7 @@
 
 . /lib/dracut-lib.sh
 
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 command -v plymouth > /dev/null 2>&1 && plymouth --quit
 exec > /dev/console 2>&1
 
index ed145331572fd4dc72951b416a7ab4cee6089d57..2d37d9d2a361c12bbc7ac6b0649be18e34299e01 100755 (executable)
@@ -41,9 +41,6 @@ test_setup() {
             cd "$initdir" || exit
             mkdir -p -- dev sys proc etc var/run tmp
             mkdir -p root usr/bin usr/lib usr/lib64 usr/sbin
-            for i in bin sbin lib lib64; do
-                ln -sfnr usr/$i $i
-            done
             mkdir -p -- var/lib/nfs/rpc_pipefs
         )
         inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip \
index 4fb9146bff31e240ddc7aa2bbb3e18e2b81b4be4..068e8f38e7937ace128eb05e36d946429f43792f 100755 (executable)
@@ -3,7 +3,7 @@
 
 . /lib/dracut-lib.sh
 
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 command -v plymouth > /dev/null 2>&1 && plymouth --quit
 exec > /dev/console 2>&1
 
index 2b7ca22c8b539e697947c491458723c147532a78..f5b1ddefbea719cc343f4c159b948cd35bd88ebb 100755 (executable)
@@ -76,9 +76,6 @@ test_setup() {
             cd "$initdir" || exit
             mkdir -p -- dev sys proc etc var/run tmp
             mkdir -p root usr/bin usr/lib usr/lib64 usr/sbin
-            for i in bin sbin lib lib64; do
-                ln -sfnr usr/$i $i
-            done
         )
         inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip \
             mount dmesg dhclient mkdir cp ping dhclient \
index 9a3940b29fb3a53ef939c1d1352d7025b9b9f3ff..108e626ba55e82d2ead57999aaaf5a2ae46d0070 100755 (executable)
@@ -3,7 +3,7 @@
 
 . /lib/dracut-lib.sh
 
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 command -v plymouth > /dev/null 2>&1 && plymouth --quit
 exec > /dev/console 2>&1
 
index 607edef5768fe674c636e9faba184c4b74204f0a..b6c1d27ef270724862b8fde8dfc5cd762ddfb1dc 100755 (executable)
@@ -36,9 +36,6 @@ test_setup() {
             cd "$initdir" || exit
             mkdir -p -- dev sys proc etc var/run tmp
             mkdir -p root usr/bin usr/lib usr/lib64 usr/sbin
-            for i in bin sbin lib lib64; do
-                ln -sfnr usr/$i $i
-            done
             mkdir -p -- var/lib/nfs/rpc_pipefs
         )
         inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip \
index e4cfe5c59b6c863fc2022e3fb2dfb5f775ef106a..c7e88314b233844c819102748e5bf71c38931679 100755 (executable)
@@ -2,7 +2,7 @@
 : > /dev/watchdog
 . /lib/dracut-lib.sh
 
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 command -v plymouth > /dev/null 2>&1 && plymouth --quit
 exec > /dev/console 2>&1
 
index 00841c0fd91cbcadaf81a902e462f518f7119475..3ddb733340a3c0749fe89354ac2a72a68e588fab 100755 (executable)
@@ -1,10 +1,10 @@
 #!/bin/sh
 exec < /dev/console > /dev/console 2>&1
 set -x
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 export TERM=linux
 export PS1='nfstest-server:\w\$ '
-echo > /dev/watchdog
+: > /dev/watchdog
 stty sane
 echo "made it to the rootfs!"
 echo server > /proc/sys/kernel/hostname
@@ -48,57 +48,61 @@ 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 enp0s1
+wait_for_if_link enx525400123456
 
 ip addr add 127.0.0.1/8 dev lo
 ip link set lo up
-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
+ip addr add 192.168.50.1/24 dev enx525400123456
+ip addr add 192.168.50.2/24 dev enx525400123456
+ip addr add 192.168.50.3/24 dev enx525400123456
+linkup enx525400123456
 
-echo > /dev/watchdog
+: > /dev/watchdog
 modprobe af_packet
-echo > /dev/watchdog
+: > /dev/watchdog
+mkdir /nfs/nfs3-5
 mount --bind /nfs/client /nfs/nfs3-5
-echo > /dev/watchdog
+: > /dev/watchdog
+mkdir -p /nfs/ip/192.168.50.101
 mount --bind /nfs/client /nfs/ip/192.168.50.101
-echo > /dev/watchdog
+: > /dev/watchdog
+mkdir -p /nfs/tftpboot/nfs4-5
 mount --bind /nfs/client /nfs/tftpboot/nfs4-5
-echo > /dev/watchdog
+: > /dev/watchdog
 modprobe sunrpc
-echo > /dev/watchdog
+: > /dev/watchdog
 mount -t rpc_pipefs sunrpc /var/lib/nfs/rpc_pipefs
-echo > /dev/watchdog
+: > /dev/watchdog
 [ -x /sbin/portmap ] && portmap
-echo > /dev/watchdog
+: > /dev/watchdog
 mkdir -p /run/rpcbind
 [ -x /sbin/rpcbind ] && rpcbind
-echo > /dev/watchdog
+: > /dev/watchdog
 modprobe nfsd
-echo > /dev/watchdog
+: > /dev/watchdog
 mount -t nfsd nfsd /proc/fs/nfsd
-echo > /dev/watchdog
+: > /dev/watchdog
 exportfs -r
-echo > /dev/watchdog
+: > /dev/watchdog
 rpc.nfsd
-echo > /dev/watchdog
+: > /dev/watchdog
 rpc.mountd
-echo > /dev/watchdog
+: > /dev/watchdog
 rpc.idmapd
-echo > /dev/watchdog
+: > /dev/watchdog
 exportfs -r
-echo > /dev/watchdog
+: > /dev/watchdog
 mkdir -p /var/lib/dhcpd
 : > /var/lib/dhcpd/dhcpd.leases
-echo > /dev/watchdog
+: > /dev/watchdog
 chmod 777 /var/lib/dhcpd/dhcpd.leases
-echo > /dev/watchdog
+: > /dev/watchdog
 rm -f /var/run/dhcpd.pid
 dhcpd -d -cf /etc/dhcpd.conf -lf /var/lib/dhcpd/dhcpd.leases &
+exportfs -s
 echo "Serving NFS mounts"
 while :; do
-    [ -n "$(jobs -rp)" ] && echo > /dev/watchdog
+    [ -n "$(jobs -rp)" ] && : > /dev/watchdog
     sleep 10
 done
 mount -n -o remount,ro /
index f8f81a30eb7c8acdac892bffad93c473bbec17dd..e48b695208d612510b38f0158ed4b762cb5feb80 100755 (executable)
@@ -14,10 +14,10 @@ TEST_DESCRIPTION="root filesystem on NFS with $USE_NETWORK"
 KVERSION=${KVERSION-$(uname -r)}
 
 # Uncomment this to debug failures
-#DEBUGFAIL="loglevel=1"
+DEBUGFAIL="rd.debug loglevel=7"
 #DEBUGFAIL="rd.shell rd.break rd.debug loglevel=7 "
 #DEBUGFAIL="rd.debug loglevel=7 rd.break=initqueue rd.shell"
-#SERVER_DEBUG="rd.debug loglevel=7"
+SERVER_DEBUG="rd.debug loglevel=7"
 #SERIAL="unix:/tmp/server.sock"
 
 run_server() {
@@ -26,7 +26,7 @@ run_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
+    qemu_add_drive_args disk_index disk_args "$TESTDIR"/server.img root 1
 
     "$testdir"/run-qemu \
         "${disk_args[@]}" \
@@ -34,7 +34,7 @@ run_server() {
         -net nic,macaddr=52:54:00:12:34:56,model=e1000 \
         -serial "${SERIAL:-"file:$TESTDIR/server.log"}" \
         -watchdog i6300esb -watchdog-action poweroff \
-        -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 quiet root=LABEL=dracut rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 $SERVER_DEBUG" \
+        -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 root=LABEL=dracut 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
@@ -236,6 +236,7 @@ test_setup() {
     export srcmods="/lib/modules/$kernel/"
     # Detect lib paths
 
+    rm -rf -- "$TESTDIR"/overlay
     (
         mkdir -p "$TESTDIR"/server/overlay/source
         # shellcheck disable=SC2030
@@ -243,25 +244,23 @@ test_setup() {
         # shellcheck disable=SC1090
         . "$basedir"/dracut-init.sh
 
-        for _f in modules.builtin.bin modules.builtin; do
-            [[ -f $srcmods/$_f ]] && break
-        done || {
-            dfatal "No modules.builtin.bin and modules.builtin found!"
-            return 1
-        }
-
-        for _f in modules.builtin.bin modules.builtin modules.order; do
-            [[ -f $srcmods/$_f ]] && inst_simple "$srcmods/$_f" "/lib/modules/$kernel/$_f"
-        done
+        (
+            cd "$initdir" || exit
+            mkdir -p dev sys proc run etc var/run tmp var/lib/{dhcpd,rpcbind}
+            mkdir -p var/lib/nfs/{v4recovery,rpc_pipefs}
+            chmod 777 var/lib/rpcbind var/lib/nfs
+        )
 
         inst_multiple sh ls shutdown poweroff stty cat ps ln ip \
             dmesg mkdir cp ping exportfs \
             modprobe rpc.nfsd rpc.mountd showmount tcpdump \
-            /etc/services sleep mount chmod rm
+            sleep mount chmod rm
         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
-            [ -f ${_terminfodir}/l/linux ] && break
+            if [ -f "${_terminfodir}"/l/linux ]; then
+                inst_multiple -o "${_terminfodir}"/l/linux
+                break
+            fi
         done
-        inst_multiple -o ${_terminfodir}/l/linux
         type -P portmap > /dev/null && inst_multiple portmap
         type -P rpcbind > /dev/null && inst_multiple rpcbind
         [ -f /etc/netconfig ] && inst_multiple /etc/netconfig
@@ -273,35 +272,29 @@ test_setup() {
         inst ./hosts /etc/hosts
         inst ./exports /etc/exports
         inst ./dhcpd.conf /etc/dhcpd.conf
-        inst_multiple /etc/nsswitch.conf /etc/rpc /etc/protocols
+        inst_multiple -o {,/usr}/etc/nsswitch.conf {,/usr}/etc/rpc \
+            {,/usr}/etc/protocols {,/usr}/etc/services
         inst_multiple rpc.idmapd /etc/idmapd.conf
 
         inst_libdir_file 'libnfsidmap_nsswitch.so*'
         inst_libdir_file 'libnfsidmap/*.so*'
         inst_libdir_file 'libnfsidmap*.so*'
 
-        _nsslibs=$(sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' /etc/nsswitch.conf \
-            | tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|')
+        _nsslibs=$(
+            cat "$dracutsysrootdir"/{,usr/}etc/nsswitch.conf 2> /dev/null \
+                | sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' \
+                | tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|'
+        )
         _nsslibs=${_nsslibs#|}
         _nsslibs=${_nsslibs%|}
-
         inst_libdir_file -n "$_nsslibs" 'libnss_*.so*'
 
-        (
-            cd "$initdir" || exit
-            mkdir -p dev sys proc run etc var/run tmp var/lib/{dhcpd,rpcbind}
-            mkdir -p var/lib/nfs/{v4recovery,rpc_pipefs}
-            chmod 777 var/lib/rpcbind var/lib/nfs
-        )
-        inst /etc/nsswitch.conf /etc/nsswitch.conf
-
         inst /etc/passwd /etc/passwd
         inst /etc/group /etc/group
 
         cp -a /etc/ld.so.conf* "$initdir"/etc
         ldconfig -r "$initdir"
         dracut_kernel_post
-
     )
 
     # Make client root inside server root
@@ -314,20 +307,17 @@ test_setup() {
 
         (
             cd "$initdir" || exit
-            mkdir -p dev sys proc etc run
-            mkdir -p var/lib/nfs/rpc_pipefs
-            mkdir -p root usr/bin usr/lib usr/lib64 usr/sbin
-            for i in bin sbin lib lib64; do
-                ln -sfnr usr/$i $i
-            done
+            mkdir -p dev sys proc etc run root usr var/lib/nfs/rpc_pipefs
         )
 
         inst_multiple sh shutdown poweroff stty cat ps ln ip dd \
             mount dmesg mkdir cp ping grep setsid ls vi less cat sync
         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
-            [ -f ${_terminfodir}/l/linux ] && break
+            if [ -f "${_terminfodir}"/l/linux ]; then
+                inst_multiple -o "${_terminfodir}"/l/linux
+                break
+            fi
         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"
@@ -336,7 +326,7 @@ test_setup() {
 
         inst ./client-init.sh /sbin/init
         inst_simple /etc/os-release
-        inst /etc/nsswitch.conf /etc/nsswitch.conf
+        inst_multiple -o {,/usr}/etc/nsswitch.conf
         inst /etc/passwd /etc/passwd
         inst /etc/group /etc/group
 
@@ -344,11 +334,13 @@ test_setup() {
         inst_libdir_file 'libnfsidmap/*.so*'
         inst_libdir_file 'libnfsidmap*.so*'
 
-        _nsslibs=$(sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' /etc/nsswitch.conf \
-            | tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|')
+        _nsslibs=$(
+            cat "$dracutsysrootdir"/{,usr/}etc/nsswitch.conf 2> /dev/null \
+                | sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' \
+                | tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|'
+        )
         _nsslibs=${_nsslibs#|}
         _nsslibs=${_nsslibs%|}
-
         inst_libdir_file -n "$_nsslibs" 'libnss_*.so*'
 
         cp -a /etc/ld.so.conf* "$initdir"/etc
@@ -378,13 +370,13 @@ test_setup() {
         -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
     rm -rf -- "$TESTDIR"/server
 
-    dd if=/dev/zero of="$TESTDIR"/root.img bs=1MiB count=80
+    dd if=/dev/zero of="$TESTDIR"/server.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
+    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 \
@@ -396,30 +388,41 @@ test_setup() {
     # Make an overlay with needed tools for the test harness
     (
         # shellcheck disable=SC2031
-        export initdir=$TESTDIR/overlay
+        # shellcheck disable=SC2030
+        export initdir="$TESTDIR"/overlay
+        mkdir -p "$TESTDIR"/overlay
         # shellcheck disable=SC1090
         . "$basedir"/dracut-init.sh
-        mkdir -p "$TESTDIR"/overlay
         inst_multiple poweroff shutdown
         inst_hook shutdown-emergency 000 ./hard-off.sh
         inst_hook emergency 000 ./hard-off.sh
-        inst_simple ./99-default.link /etc/systemd/network/99-default.link
+        inst_simple ./client.link /etc/systemd/network/01-client.link
     )
 
-    # Make server's dracut image
-    "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
-        -m "dash udev-rules base rootfs-block fs-lib debug kernel-modules watchdog qemu" \
-        -d "af_packet piix ide-gd_mod ata_piix ext3 sd_mod e1000 i6300esb" \
-        --no-hostonly-cmdline -N \
-        -f "$TESTDIR"/initramfs.server "$KVERSION" || return 1
-
     # Make client's dracut image
     "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
         -o "plymouth dash ${OMIT_NETWORK}" \
         -a "debug watchdog ${USE_NETWORK}" \
-        -d "af_packet piix ide-gd_mod ata_piix sd_mod e1000 nfs sunrpc i6300esb" \
         --no-hostonly-cmdline -N \
         -f "$TESTDIR"/initramfs.testing "$KVERSION" || return 1
+
+    (
+        # shellcheck disable=SC2031
+        export initdir="$TESTDIR"/overlay
+        # shellcheck disable=SC1090
+        . "$basedir"/dracut-init.sh
+        rm "$initdir"/etc/systemd/network/01-client.link
+        inst_simple ./server.link /etc/systemd/network/01-server.link
+        inst_hook pre-mount 99 ./wait-if-server.sh
+    )
+    # Make server's dracut image
+    "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
+        -m "dash udev-rules base rootfs-block fs-lib debug kernel-modules watchdog qemu network network-legacy" \
+        -d "af_packet piix ide-gd_mod ata_piix ext3 sd_mod e1000 i6300esb" \
+        --no-hostonly-cmdline -N \
+        -f "$TESTDIR"/initramfs.server "$KVERSION" || return 1
+
+    rm -rf -- "$TESTDIR"/overlay
 }
 
 test_cleanup() {
diff --git a/test/TEST-20-NFS/wait-if-server.sh b/test/TEST-20-NFS/wait-if-server.sh
new file mode 100644 (file)
index 0000000..8ae21f8
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+. /lib/net-lib.sh
+wait_for_if_link enx525400123456
index 441c7e3999a327c0d4e8177b7e6803354b845b06..21f9bb15f1feeb9f62569d6002f948f45aae8c3a 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 . /lib/dracut-lib.sh
 
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 command -v plymouth > /dev/null 2>&1 && plymouth --quit
 exec > /dev/console 2>&1
 
index 5fa1c15062aa731ca3405a6a60befa8f8f593234..3c4dad74e772f192d9692915ca4eb24a7fa2d9c5 100644 (file)
@@ -37,7 +37,7 @@ subnet 192.168.51.0 netmask 255.255.255.0 {
         # NFSv3: last octect starts at 0x00 and works up
 
         group {
-                option root-path "iscsi:192.168.51.1:::1:iqn.2009-06.dracut:target1";
+                #option root-path "iscsi:192.168.51.1:::1:iqn.2009-06.dracut:target1";
 
                 host iscsi-2 {
                         hardware ethernet 52:54:00:12:34:01;
index 9c00d7d9bdfb54c9230791ff7b7f9434b849023f..fd5538d860f7810a4eb06ea60342ed00515e3630 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 exec < /dev/console > /dev/console 2>&1
 set -x
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 export TERM=linux
 export PS1='server:\w\$ '
 stty sane
@@ -20,15 +20,47 @@ wait_for_if_link() {
     return 1
 }
 
-wait_for_if_link enp0s1
-wait_for_if_link enp0s2
+wait_for_if_up() {
+    local cnt=0
+    local li
+    while [ $cnt -lt 200 ]; do
+        li=$(ip -o link show up dev "$1")
+        [ -n "$li" ] && return 0
+        sleep 0.1
+        cnt=$((cnt + 1))
+    done
+    return 1
+}
+
+wait_for_route_ok() {
+    local cnt=0
+    while [ $cnt -lt 200 ]; do
+        li=$(ip route show)
+        [ -n "$li" ] && [ -z "${li##*$1*}" ] && return 0
+        sleep 0.1
+        cnt=$((cnt + 1))
+    done
+    return 1
+}
+
+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 enx525400123456
+wait_for_if_link enx525400123457
 
 ip addr add 127.0.0.1/8 dev lo
 ip link set lo 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
+
+ip addr add 192.168.50.1/24 dev enx525400123456
+linkup enx525400123456
+
+ip addr add 192.168.51.1/24 dev enx525400123457
+linkup enx525400123457
+
+modprobe af_packet
+
 : > /var/lib/dhcpd/dhcpd.leases
 chmod 777 /var/lib/dhcpd/dhcpd.leases
 dhcpd -d -cf /etc/dhcpd.conf -lf /var/lib/dhcpd/dhcpd.leases &
@@ -44,9 +76,8 @@ 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
 
-echo "Serving iSCSI"
-
 # Wait forever for the VM to die
+echo "Serving iSCSI"
 while pidof tgtd > /dev/null; do
     : > /dev/watchdog
     dmesg -c
diff --git a/test/TEST-30-ISCSI/server.link b/test/TEST-30-ISCSI/server.link
new file mode 100644 (file)
index 0000000..1d21856
--- /dev/null
@@ -0,0 +1,6 @@
+[Match]
+OriginalName=*
+
+[Link]
+NamePolicy=mac
+MACAddressPolicy=keep
index 91f0aaadf69b42ee5693777e734d0ab977a557d6..329ce5901b8c63cfc4b2c75bcd32d75e21cbc9de 100755 (executable)
@@ -139,14 +139,6 @@ test_setup() {
         return 1
     fi
 
-    # Create the blank file to use as a root filesystem
-    rm -f "$TESTDIR"/root.ext3
-    dd if=/dev/zero of="$TESTDIR"/root.ext3 bs=4096 count=$((200 * 256))
-    rm -f "$TESTDIR"/iscsidisk2.img
-    dd if=/dev/zero of="$TESTDIR"/iscsidisk2.img bs=4096 count=$((100 * 256))
-    rm -f "$TESTDIR"/iscsidisk3.img
-    dd if=/dev/zero of="$TESTDIR"/iscsidisk3.img bs=4096 count=$((100 * 256))
-
     kernel=$KVERSION
     # Create what will eventually be our root filesystem onto an overlay
     rm -rf -- "$TESTDIR"/overlay
@@ -159,9 +151,6 @@ test_setup() {
             cd "$initdir" || exit
             mkdir -p -- dev sys proc etc var/run tmp
             mkdir -p root usr/bin usr/lib usr/lib64 usr/sbin
-            for i in bin sbin lib lib64; do
-                ln -sfnr usr/$i $i
-            done
             mkdir -p -- var/lib/nfs/rpc_pipefs
         )
         inst_multiple sh shutdown poweroff stty cat ps ln ip \
@@ -224,9 +213,6 @@ test_setup() {
     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
-
     # shellcheck disable=SC2031
     export kernel=$KVERSION
     rm -rf -- "$TESTDIR"/overlay
@@ -244,22 +230,32 @@ test_setup() {
         inst /etc/passwd /etc/passwd
         inst_multiple sh ls shutdown poweroff stty cat ps ln ip \
             dmesg mkdir cp ping modprobe tcpdump setsid \
-            /etc/services sleep mount chmod pidof
+            sleep mount chmod pidof
         inst_multiple tgtd tgtadm
         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
             [ -f ${_terminfodir}/l/linux ] && break
         done
         inst_multiple -o ${_terminfodir}/l/linux
-        instmods iscsi_tcp crc32c ipv6
+        instmods iscsi_tcp crc32c ipv6 af_packet
         [ -f /etc/netconfig ] && inst_multiple /etc/netconfig
         type -P dhcpd > /dev/null && inst_multiple dhcpd
         [ -x /usr/sbin/dhcpd3 ] && inst /usr/sbin/dhcpd3 /usr/sbin/dhcpd
-        inst_simple /etc/os-release
         inst ./server-init.sh /sbin/init
         inst ./hosts /etc/hosts
         inst ./dhcpd.conf /etc/dhcpd.conf
-        inst_multiple /etc/nsswitch.conf /etc/rpc /etc/protocols
-        inst /etc/group /etc/group
+        inst_multiple -o {,/usr}/etc/nsswitch.conf {,/usr}/etc/rpc \
+            {,/usr}/etc/protocols {,/usr}/etc/services \
+            /etc/group /etc/os-release
+
+        _nsslibs=$(
+            cat "$dracutsysrootdir"/{,usr/}etc/nsswitch.conf 2> /dev/null \
+                | sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' \
+                | tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|'
+        )
+        _nsslibs=${_nsslibs#|}
+        _nsslibs=${_nsslibs%|}
+
+        inst_libdir_file -n "$_nsslibs" 'libnss_*.so*'
 
         cp -a /etc/ld.so.conf* "$initdir"/etc
         ldconfig -r "$initdir"
@@ -308,30 +304,39 @@ test_setup() {
     # Make an overlay with needed tools for the test harness
     (
         # shellcheck disable=SC2031
+        # shellcheck disable=SC2030
         export initdir=$TESTDIR/overlay
         # shellcheck disable=SC1090
         . "$basedir"/dracut-init.sh
         inst_multiple poweroff shutdown
         inst_hook shutdown-emergency 000 ./hard-off.sh
         inst_hook emergency 000 ./hard-off.sh
+        inst_simple ./client.link /etc/systemd/network/01-client.link
     )
+    # Make client's dracut image
+    "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
+        -o "dash plymouth dmraid nfs ${OMIT_NETWORK}" \
+        -a "debug ${USE_NETWORK}" \
+        --no-hostonly-cmdline -N \
+        -f "$TESTDIR"/initramfs.testing "$KVERSION" || return 1
 
+    (
+        # shellcheck disable=SC2031
+        export initdir="$TESTDIR"/overlay
+        # shellcheck disable=SC1090
+        . "$basedir"/dracut-init.sh
+        rm "$initdir"/etc/systemd/network/01-client.link
+        inst_simple ./server.link /etc/systemd/network/01-server.link
+        inst_hook pre-mount 99 ./wait-if-server.sh
+    )
     # Make server's dracut image
     "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
-        -a "dash udev-rules base rootfs-block fs-lib debug kernel-modules" \
+        -a "dash udev-rules base rootfs-block fs-lib debug kernel-modules network network-legacy" \
         -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
 
-    # Make client dracut image
-    "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
-        -o "dash plymouth dmraid nfs ${OMIT_NETWORK}" \
-        -a "debug ${USE_NETWORK}" \
-        -d "af_packet piix ide-gd_mod ata_piix ext3 sd_mod" \
-        --no-hostonly-cmdline -N \
-        -f "$TESTDIR"/initramfs.testing "$KVERSION" || return 1
     rm -rf -- "$TESTDIR"/overlay
-
 }
 
 test_cleanup() {
diff --git a/test/TEST-30-ISCSI/wait-if-server.sh b/test/TEST-30-ISCSI/wait-if-server.sh
new file mode 100644 (file)
index 0000000..b53e41f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh
+. /lib/net-lib.sh
+wait_for_if_link enx525400123456
+wait_for_if_link enx525400123457
index 441c7e3999a327c0d4e8177b7e6803354b845b06..21f9bb15f1feeb9f62569d6002f948f45aae8c3a 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 . /lib/dracut-lib.sh
 
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 command -v plymouth > /dev/null 2>&1 && plymouth --quit
 exec > /dev/console 2>&1
 
diff --git a/test/TEST-35-ISCSI-MULTI/client.link b/test/TEST-35-ISCSI-MULTI/client.link
new file mode 100644 (file)
index 0000000..b992bfd
--- /dev/null
@@ -0,0 +1,6 @@
+[Match]
+OriginalName=*
+
+[Link]
+NamePolicy=keep kernel database onboard slot path
+MACAddressPolicy=keep
index 279363ee932e6d1672d6e40b4fd4a4abf361011e..1ec20afffaef5c751c81d1f4560e1c83069edf78 100755 (executable)
@@ -10,22 +10,24 @@ rm -f -- /etc/lvm/lvm.conf
 udevadm control --reload
 udevadm settle
 
-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
+set -ex
+
+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 5fa1c15062aa731ca3405a6a60befa8f8f593234..3c4dad74e772f192d9692915ca4eb24a7fa2d9c5 100644 (file)
@@ -37,7 +37,7 @@ subnet 192.168.51.0 netmask 255.255.255.0 {
         # NFSv3: last octect starts at 0x00 and works up
 
         group {
-                option root-path "iscsi:192.168.51.1:::1:iqn.2009-06.dracut:target1";
+                #option root-path "iscsi:192.168.51.1:::1:iqn.2009-06.dracut:target1";
 
                 host iscsi-2 {
                         hardware ethernet 52:54:00:12:34:01;
index 613d26a1f11b3608766561cab12cb12536b2a664..fd5538d860f7810a4eb06ea60342ed00515e3630 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 exec < /dev/console > /dev/console 2>&1
 set -x
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 export TERM=linux
 export PS1='server:\w\$ '
 stty sane
@@ -47,17 +47,19 @@ 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 enp0s1
-wait_for_if_link enp0s2
+wait_for_if_link enx525400123456
+wait_for_if_link enx525400123457
 
 ip addr add 127.0.0.1/8 dev lo
 ip link set lo up
 
-ip addr add 192.168.50.1/24 dev enp0s1
-linkup enp0s1
+ip addr add 192.168.50.1/24 dev enx525400123456
+linkup enx525400123456
 
-ip addr add 192.168.51.1/24 dev enp0s2
-linkup enp0s2
+ip addr add 192.168.51.1/24 dev enx525400123457
+linkup enx525400123457
+
+modprobe af_packet
 
 : > /var/lib/dhcpd/dhcpd.leases
 chmod 777 /var/lib/dhcpd/dhcpd.leases
diff --git a/test/TEST-35-ISCSI-MULTI/server.link b/test/TEST-35-ISCSI-MULTI/server.link
new file mode 100644 (file)
index 0000000..1d21856
--- /dev/null
@@ -0,0 +1,6 @@
+[Match]
+OriginalName=*
+
+[Link]
+NamePolicy=mac
+MACAddressPolicy=keep
index b283d63ef1741a42651bb6fb3e6eeb4b0ae4a02b..e1e342ee38b27b458bd944f9365269c230afebb9 100755 (executable)
@@ -163,9 +163,6 @@ test_setup() {
             cd "$initdir" || exit
             mkdir -p -- dev sys proc etc var/run tmp
             mkdir -p root usr/bin usr/lib usr/lib64 usr/sbin
-            for i in bin sbin lib lib64; do
-                ln -sfnr usr/$i $i
-            done
             mkdir -p -- var/lib/nfs/rpc_pipefs
         )
         inst_multiple sh shutdown poweroff stty cat ps ln ip \
@@ -228,9 +225,6 @@ test_setup() {
     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
-    echo "MAKE SERVER ROOT"
-
     # shellcheck disable=SC2031
     export kernel=$KVERSION
     rm -rf -- "$TESTDIR"/overlay
@@ -247,29 +241,39 @@ test_setup() {
         )
         inst /etc/passwd /etc/passwd
         inst_multiple sh ls shutdown poweroff stty cat ps ln ip \
-            dmesg mkdir cp ping \
-            modprobe tcpdump setsid \
-            /etc/services sleep mount chmod pidof
+            dmesg mkdir cp ping modprobe tcpdump setsid \
+            sleep mount chmod pidof
         inst_multiple tgtd tgtadm
         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
             [ -f ${_terminfodir}/l/linux ] && break
         done
         inst_multiple -o ${_terminfodir}/l/linux
-        instmods iscsi_tcp crc32c ipv6
+        instmods iscsi_tcp crc32c ipv6 af_packet
         [ -f /etc/netconfig ] && inst_multiple /etc/netconfig
         type -P dhcpd > /dev/null && inst_multiple dhcpd
         [ -x /usr/sbin/dhcpd3 ] && inst /usr/sbin/dhcpd3 /usr/sbin/dhcpd
-        inst_simple /etc/os-release
         inst ./server-init.sh /sbin/init
         inst ./hosts /etc/hosts
         inst ./dhcpd.conf /etc/dhcpd.conf
-        inst_multiple /etc/nsswitch.conf /etc/rpc /etc/protocols
-        inst /etc/group /etc/group
+        inst_multiple -o {,/usr}/etc/nsswitch.conf {,/usr}/etc/rpc \
+            {,/usr}/etc/protocols {,/usr}/etc/services \
+            /etc/group /etc/os-release
+
+        _nsslibs=$(
+            cat "$dracutsysrootdir"/{,usr/}etc/nsswitch.conf 2> /dev/null \
+                | sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' \
+                | tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|'
+        )
+        _nsslibs=${_nsslibs#|}
+        _nsslibs=${_nsslibs%|}
+
+        inst_libdir_file -n "$_nsslibs" 'libnss_*.so*'
 
         cp -a /etc/ld.so.conf* "$initdir"/etc
         ldconfig -r "$initdir"
         dracut_kernel_post
     )
+
     # second, install the files needed to make the root filesystem
     (
         # shellcheck disable=SC2031
@@ -312,29 +316,38 @@ test_setup() {
     # Make an overlay with needed tools for the test harness
     (
         # shellcheck disable=SC2031
+        # shellcheck disable=SC2030
         export initdir=$TESTDIR/overlay
         # shellcheck disable=SC1090
         . "$basedir"/dracut-init.sh
         inst_multiple poweroff shutdown
         inst_hook shutdown-emergency 000 ./hard-off.sh
         inst_hook emergency 000 ./hard-off.sh
+        inst_simple ./client.link /etc/systemd/network/01-client.link
     )
-
-    # Make server's dracut image
-    "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
-        -a "dash 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
-
     # Make client's dracut image
     "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
         -o "dash plymouth dmraid nfs ${OMIT_NETWORK}" \
         -a "debug ${USE_NETWORK}" \
-        -d "af_packet piix ide-gd_mod ata_piix ext3 sd_mod" \
         --no-hostonly-cmdline -N \
         -f "$TESTDIR"/initramfs.testing "$KVERSION" || return 1
 
+    (
+        # shellcheck disable=SC2031
+        export initdir="$TESTDIR"/overlay
+        # shellcheck disable=SC1090
+        . "$basedir"/dracut-init.sh
+        rm "$initdir"/etc/systemd/network/01-client.link
+        inst_simple ./server.link /etc/systemd/network/01-server.link
+        inst_hook pre-mount 99 ./wait-if-server.sh
+    )
+    # Make server's dracut image
+    "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
+        -a "dash udev-rules base rootfs-block fs-lib debug kernel-modules network network-legacy" \
+        -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
+
     rm -rf -- "$TESTDIR"/overlay
 }
 
diff --git a/test/TEST-35-ISCSI-MULTI/wait-if-server.sh b/test/TEST-35-ISCSI-MULTI/wait-if-server.sh
new file mode 100644 (file)
index 0000000..b53e41f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh
+. /lib/net-lib.sh
+wait_for_if_link enx525400123456
+wait_for_if_link enx525400123457
index f250626f864a20265cac90d3a3a07b403998ea06..c5c57a2d26311f5b668d0830ac3fc951d6714caf 100755 (executable)
@@ -2,7 +2,7 @@
 : > /dev/watchdog
 . /lib/dracut-lib.sh
 
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 command -v plymouth > /dev/null 2>&1 && plymouth --quit
 exec > /dev/console 2>&1
 
diff --git a/test/TEST-40-NBD/client.link b/test/TEST-40-NBD/client.link
new file mode 100644 (file)
index 0000000..b992bfd
--- /dev/null
@@ -0,0 +1,6 @@
+[Match]
+OriginalName=*
+
+[Link]
+NamePolicy=keep kernel database onboard slot path
+MACAddressPolicy=keep
index 8b60ccd7a9fc1bdb635310ce17fe63638b5a214c..f56ec47984705afd4c6dbb7d770c5975e2a4be9c 100755 (executable)
@@ -20,6 +20,7 @@ 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
+udevadm settle
 mkfs.ext3 -L dracut -j /dev/dracut/root
 mkdir -p /sysroot
 mount /dev/dracut/root /sysroot
index 7866f659e53d258057fb3f0eeb6c5eebb4f721f2..729d6a80406fb2b4fb45780d7261952396b0e1f8 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 exec < /dev/console > /dev/console 2>&1
 set -x
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 export TERM=linux
 export PS1='nbdtest-server:\w\$ '
 stty sane
@@ -50,9 +50,9 @@ linkup() {
 ip addr add 127.0.0.1/8 dev lo
 ip link set lo up
 
-wait_for_if_link enp0s1
-ip addr add 192.168.50.1/24 dev enp0s1
-linkup enp0s1
+wait_for_if_link enx525400123456
+ip addr add 192.168.50.1/24 dev enx525400123456
+linkup enx525400123456
 
 modprobe af_packet
 nbd-server
@@ -60,9 +60,9 @@ nbd-server
 chmod 777 /var/lib/dhcpd/dhcpd.leases
 dhcpd -d -cf /etc/dhcpd.conf -lf /var/lib/dhcpd/dhcpd.leases &
 echo "Serving NBD disks"
-while :; do
-    [ -n "$(jobs -rp)" ] && echo > /dev/watchdog
-    sleep 10
+while pidof nbd-server && pidof dhcpd; do
+    echo > /dev/watchdog
+    sleep 1
 done
 mount -n -o remount,ro /
 poweroff -f
diff --git a/test/TEST-40-NBD/server.link b/test/TEST-40-NBD/server.link
new file mode 100644 (file)
index 0000000..1d21856
--- /dev/null
@@ -0,0 +1,6 @@
+[Match]
+OriginalName=*
+
+[Link]
+NamePolicy=mac
+MACAddressPolicy=keep
index a650691f76fd752709ca99653195a65eb04c2c13..b54f3762192627c877159cd7d0f1afd75c424806 100755 (executable)
@@ -14,11 +14,12 @@ TEST_DESCRIPTION="root filesystem on NBD with $USE_NETWORK"
 KVERSION=${KVERSION-$(uname -r)}
 
 # Uncomment this to debug failures
+# DEBUGFAIL="rd.debug systemd.log_target=console loglevel=7"
 #DEBUGFAIL="rd.shell rd.break rd.debug systemd.log_target=console loglevel=7 systemd.log_level=debug"
 #SERIAL="tcp:127.0.0.1:9999"
 
 test_check() {
-    if ! type -p nbd-server 2> /dev/null; then
+    if ! type -p nbd-server &> /dev/null; then
         echo "Test needs nbd-server... Skipping"
         return 1
     fi
@@ -208,10 +209,6 @@ make_encrypted_root() {
         (
             cd "$initdir" || exit
             mkdir -p dev sys proc etc run var/run tmp
-            mkdir -p root usr/bin usr/lib usr/lib64 usr/sbin
-            for i in bin sbin lib lib64; do
-                ln -sfnr usr/$i $i
-            done
         )
 
         inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip \
@@ -242,10 +239,7 @@ make_encrypted_root() {
         . "$basedir"/dracut-init.sh
         (
             cd "$initdir" || exit
-            mkdir -p dev sys proc etc tmp var run root usr/bin usr/lib usr/lib64 usr/sbin
-            for i in bin sbin lib lib64; do
-                ln -sfnr usr/$i $i
-            done
+            mkdir -p dev sys proc etc tmp var run root
             ln -s ../run var/run
         )
         inst_multiple mkfs.ext3 poweroff cp umount dd sync
@@ -296,10 +290,6 @@ make_client_root() {
         (
             cd "$initdir" || exit
             mkdir -p dev sys proc etc run var/run tmp
-            mkdir -p root usr/bin usr/lib usr/lib64 usr/sbin
-            for i in bin sbin lib lib64; do
-                ln -sfnr usr/$i $i
-            done
         )
         inst_multiple sh ls shutdown poweroff stty cat ps ln ip \
             dmesg mkdir cp ping dd mount sync
@@ -315,7 +305,7 @@ make_client_root() {
 
         inst ./client-init.sh /sbin/init
         inst_simple /etc/os-release
-        inst /etc/nsswitch.conf /etc/nsswitch.conf
+        inst_multiple -o {,/usr}/etc/nsswitch.conf
         inst /etc/passwd /etc/passwd
         inst /etc/group /etc/group
         for i in /usr/lib*/libnss_files* /lib*/libnss_files*; do
@@ -395,28 +385,34 @@ bs = 4096
 EOF
         inst_multiple sh ls shutdown poweroff stty cat ps ln ip \
             dmesg mkdir cp ping grep \
-            sleep nbd-server chmod modprobe vi
+            sleep nbd-server chmod modprobe vi pidof
         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
             [ -f ${_terminfodir}/l/linux ] && break
         done
         inst_multiple -o ${_terminfodir}/l/linux
-        instmods af_packet
+        instmods nfsd sunrpc ipv6 lockd af_packet 8021q ipvlan macvlan
         type -P dhcpd > /dev/null && inst_multiple dhcpd
         [ -x /usr/sbin/dhcpd3 ] && inst /usr/sbin/dhcpd3 /usr/sbin/dhcpd
         inst ./server-init.sh /sbin/init
         inst_simple /etc/os-release
         inst ./hosts /etc/hosts
         inst ./dhcpd.conf /etc/dhcpd.conf
-        inst /etc/nsswitch.conf /etc/nsswitch.conf
+        inst_multiple -o {,/usr}/etc/nsswitch.conf
         inst /etc/passwd /etc/passwd
         inst /etc/group /etc/group
-        for i in /usr/lib*/libnss_files* /lib*/libnss_files*; do
-            [ -e "$i" ] || continue
-            inst "$i"
-        done
+        _nsslibs=$(
+            cat "$dracutsysrootdir"/{,usr/}etc/nsswitch.conf 2> /dev/null \
+                | sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' \
+                | tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|'
+        )
+        _nsslibs=${_nsslibs#|}
+        _nsslibs=${_nsslibs%|}
+
+        inst_libdir_file -n "$_nsslibs" 'libnss_*.so*'
 
         cp -a /etc/ld.so.conf* "$initdir"/etc
         ldconfig -r "$initdir"
+        dracut_kernel_post
     )
 
     # second, install the files needed to make the root filesystem
@@ -467,6 +463,7 @@ test_setup() {
     # Make the test image
     (
         # shellcheck disable=SC2031
+        # shellcheck disable=SC2030
         export initdir=$TESTDIR/overlay
         # shellcheck disable=SC1090
         . "$basedir"/dracut-init.sh
@@ -483,20 +480,31 @@ test_setup() {
         mkdir -p "$initdir"/etc
         echo "luks-$ID_FS_UUID /dev/nbd0 /etc/key" > "$initdir"/etc/crypttab
         echo -n test > "$initdir"/etc/key
+        inst_simple ./client.link /etc/systemd/network/01-client.link
     )
 
-    "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
-        -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
-
     "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
         -o "plymouth dash iscsi nfs ${OMIT_NETWORK}" \
         -a "debug watchdog ${USE_NETWORK}" \
-        -d "af_packet piix ide-gd_mod ata_piix ext3 ext3 sd_mod e1000 i6300esb ib700wdt" \
         --no-hostonly-cmdline -N \
         -f "$TESTDIR"/initramfs.testing "$KVERSION" || return 1
+
+    (
+        # shellcheck disable=SC2031
+        export initdir="$TESTDIR"/overlay
+        # shellcheck disable=SC1090
+        . "$basedir"/dracut-init.sh
+        rm "$initdir"/etc/systemd/network/01-client.link
+        inst_simple ./server.link /etc/systemd/network/01-server.link
+        inst_hook pre-mount 99 ./wait-if-server.sh
+    )
+    "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
+        -a "udev-rules base rootfs-block fs-lib debug kernel-modules network network-legacy" \
+        -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
+
+    rm -rf -- "$TESTDIR"/overlay
 }
 
 kill_server() {
diff --git a/test/TEST-40-NBD/wait-if-server.sh b/test/TEST-40-NBD/wait-if-server.sh
new file mode 100644 (file)
index 0000000..8ae21f8
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+. /lib/net-lib.sh
+wait_for_if_link enx525400123456
index 854c30d4711a0bf435384e5cd661c2f3cc1d93bd..175a9d8a52ca3cee21fb978b49d6cb1a05affab8 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 . /lib/dracut-lib.sh
 
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 command -v plymouth > /dev/null 2>&1 && plymouth --quit
 exec > /dev/console 2>&1
 
@@ -9,6 +9,9 @@ export TERM=linux
 export PS1='initramfs-test:\w\$ '
 stty sane
 echo "made it to the rootfs! Powering down."
+
+set -x
+
 for i in /sys/class/net/*; do
     # booting with network-manager module
     state=/run/NetworkManager/devices/$(cat "$i"/ifindex)
@@ -17,6 +20,7 @@ for i in /sys/class/net/*; do
     ip link show "$i" | grep -q master && continue
     IFACES="${IFACES}${i} "
 done
+
 for i in /run/initramfs/net.*.did-setup; do
     # booting with network-legacy module
     [ -f "$i" ] || continue
diff --git a/test/TEST-50-MULTINIC/client.link b/test/TEST-50-MULTINIC/client.link
new file mode 100644 (file)
index 0000000..b992bfd
--- /dev/null
@@ -0,0 +1,6 @@
+[Match]
+OriginalName=*
+
+[Link]
+NamePolicy=keep kernel database onboard slot path
+MACAddressPolicy=keep
index e012a13e3a2182c482325d999054c0c61fafae5d..7948b79ee9337ea355d5b9f6ec80ae0ce1d34933 100755 (executable)
@@ -8,9 +8,10 @@ for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
 done
 rm -f -- /etc/lvm/lvm.conf
 udevadm control --reload
-set -e
-
 udevadm settle
+
+set -ex
+
 mkfs.ext3 -L dracut /dev/disk/by-id/ata-disk_root
 mkdir -p /root
 mount /dev/disk/by-id/ata-disk_root /root
@@ -18,4 +19,5 @@ cp -a -t /root /source/*
 mkdir -p /root/run
 umount /root
 echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
+sync
 poweroff -f
index a62ba51877c15e376db4e2a0a8c49131ba43bb98..0808d8d76a4487fa788dae542c860b9eb313cf52 100755 (executable)
@@ -1,10 +1,10 @@
 #!/bin/sh
 exec < /dev/console > /dev/console 2>&1
 set -x
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 export TERM=linux
 export PS1='nfstest-server:\w\$ '
-echo : > /dev/watchdog
+: > /dev/watchdog
 stty sane
 echo "made it to the rootfs!"
 echo server > /proc/sys/kernel/hostname
@@ -48,14 +48,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 enp0s1
+wait_for_if_link enx525401123456
 
-: > /dev/watchdog
 ip addr add 127.0.0.1/8 dev lo
-linkup lo
-
-ip addr add 192.168.50.1/24 dev enp0s1
-linkup enp0s1
+ip link set lo up
+ip addr add 192.168.50.1/24 dev enx525401123456
+linkup enx525401123456
 
 : > /dev/watchdog
 modprobe af_packet
@@ -79,20 +77,21 @@ rpc.nfsd
 : > /dev/watchdog
 rpc.mountd
 : > /dev/watchdog
-rpc.idmapd -S
+rpc.idmapd
 : > /dev/watchdog
 exportfs -r
 : > /dev/watchdog
-
+mkdir -p /var/lib/dhcpd
 : > /var/lib/dhcpd/dhcpd.leases
-
 : > /dev/watchdog
 chmod 777 /var/lib/dhcpd/dhcpd.leases
 : > /dev/watchdog
+rm -f /var/run/dhcpd.pid
 dhcpd -d -cf /etc/dhcpd.conf -lf /var/lib/dhcpd/dhcpd.leases &
+exportfs -s
 echo "Serving NFS mounts"
 while :; do
-    [ -n "$(jobs -rp)" ] && echo : > /dev/watchdog
+    [ -n "$(jobs -rp)" ] && : > /dev/watchdog
     sleep 10
 done
 mount -n -o remount,ro /
diff --git a/test/TEST-50-MULTINIC/server.link b/test/TEST-50-MULTINIC/server.link
new file mode 100644 (file)
index 0000000..1d21856
--- /dev/null
@@ -0,0 +1,6 @@
+[Match]
+OriginalName=*
+
+[Link]
+NamePolicy=mac
+MACAddressPolicy=keep
index 81603379cf53fad944813cea0e43e86b378d25f7..66cc2398674415c07beb7235d87f26ae95cefc60 100755 (executable)
@@ -14,7 +14,7 @@ TEST_DESCRIPTION="root filesystem on NFS with multiple nics with $USE_NETWORK"
 KVERSION=${KVERSION-$(uname -r)}
 
 # Uncomment this to debug failures
-#DEBUGFAIL="rd.shell rd.break"
+#DEBUGFAIL="loglevel=7 rd.shell rd.break"
 #SERIAL="tcp:127.0.0.1:9999"
 
 run_server() {
@@ -32,7 +32,7 @@ run_server() {
         -net nic,macaddr=52:54:01:12:34:56,model=e1000 \
         -serial "${SERIAL:-"file:$TESTDIR/server.log"}" \
         -watchdog i6300esb -watchdog-action poweroff \
-        -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot loglevel=7 root=LABEL=dracut rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0" \
+        -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot root=LABEL=dracut rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0" \
         -initrd "$TESTDIR"/initramfs.server \
         -pidfile "$TESTDIR"/server.pid -daemonize || return 1
 
@@ -70,6 +70,10 @@ client_test() {
     declare -i disk_index=0
     qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
 
+    if dhclient --help 2>&1 | grep -q -F -- '--timeout' 2> /dev/null; then
+        cmdline="$cmdline rd.net.timeout.dhcp=3"
+    fi
+
     # Invoke KVM and/or QEMU to actually create the target filesystem.
     "$testdir"/run-qemu \
         "${disk_args[@]}" \
@@ -82,7 +86,7 @@ client_test() {
         -device e1000,netdev=n1,mac=52:54:00:12:34:98 \
         -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 hung_task_panic=1 oops=panic softlockup_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" \
+        -append "quiet panic=1 hung_task_panic=1 oops=panic softlockup_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 || return 1
 
     {
@@ -180,7 +184,9 @@ test_client() {
 }
 
 test_setup() {
-    kernel=$KVERSION
+    export kernel=$KVERSION
+    export srcmods="/lib/modules/$kernel/"
+    rm -rf -- "$TESTDIR"/overlay
     (
         mkdir -p "$TESTDIR"/overlay/source
         # shellcheck disable=SC2030
@@ -190,61 +196,53 @@ test_setup() {
 
         (
             cd "$initdir" || exit
-            mkdir -p -- dev sys proc run var/run etc tmp var/lib/{dhcpd,rpcbind}
-            mkdir -p -- var/lib/nfs/{v4recovery,rpc_pipefs}
-            chmod 777 -- var/lib/rpcbind var/lib/nfs
+            mkdir -p dev sys proc run etc var/run tmp var/lib/{dhcpd,rpcbind}
+            mkdir -p var/lib/nfs/{v4recovery,rpc_pipefs}
+            chmod 777 var/lib/rpcbind var/lib/nfs
         )
 
-        for _f in modules.builtin.bin modules.builtin; do
-            [[ -f $srcmods/$_f ]] && break
-        done || {
-            dfatal "No modules.builtin.bin and modules.builtin found!"
-            return 1
-        }
-
-        for _f in modules.builtin.bin modules.builtin modules.order; do
-            [[ -f $srcmods/$_f ]] && inst_simple "$srcmods/$_f" "/lib/modules/$kernel/$_f"
-        done
-
         inst_multiple sh ls shutdown poweroff stty cat ps ln ip \
             dmesg mkdir cp ping exportfs \
             modprobe rpc.nfsd rpc.mountd showmount tcpdump \
-            /etc/services sleep mount chmod
+            sleep mount chmod rm
         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
-            [ -f "${_terminfodir}"/l/linux ] && break
+            if [ -f "${_terminfodir}"/l/linux ]; then
+                inst_multiple -o "${_terminfodir}"/l/linux
+                break
+            fi
         done
-        inst_multiple -o "${_terminfodir}"/l/linux
         type -P portmap > /dev/null && inst_multiple portmap
         type -P rpcbind > /dev/null && inst_multiple rpcbind
         [ -f /etc/netconfig ] && inst_multiple /etc/netconfig
         type -P dhcpd > /dev/null && inst_multiple dhcpd
         [ -x /usr/sbin/dhcpd3 ] && inst /usr/sbin/dhcpd3 /usr/sbin/dhcpd
         instmods nfsd sunrpc ipv6 lockd af_packet
-        inst_simple /etc/os-release
         inst ./server-init.sh /sbin/init
+        inst_simple /etc/os-release
         inst ./hosts /etc/hosts
         inst ./exports /etc/exports
         inst ./dhcpd.conf /etc/dhcpd.conf
-        inst_multiple /etc/nsswitch.conf /etc/rpc /etc/protocols
-
+        inst_multiple -o {,/usr}/etc/nsswitch.conf {,/usr}/etc/rpc \
+            {,/usr}/etc/protocols {,/usr}/etc/services
         inst_multiple rpc.idmapd /etc/idmapd.conf
 
         inst_libdir_file 'libnfsidmap_nsswitch.so*'
         inst_libdir_file 'libnfsidmap/*.so*'
         inst_libdir_file 'libnfsidmap*.so*'
 
-        _nsslibs=$(sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' /etc/nsswitch.conf \
-            | tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|')
+        _nsslibs=$(
+            cat "$dracutsysrootdir"/{,usr/}etc/nsswitch.conf 2> /dev/null \
+                | sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' \
+                | tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|'
+        )
         _nsslibs=${_nsslibs#|}
         _nsslibs=${_nsslibs%|}
-
         inst_libdir_file -n "$_nsslibs" 'libnss_*.so*'
 
-        inst /etc/nsswitch.conf /etc/nsswitch.conf
         inst /etc/passwd /etc/passwd
         inst /etc/group /etc/group
 
-        cp -a -- /etc/ld.so.conf* "$initdir"/etc
+        cp -a /etc/ld.so.conf* "$initdir"/etc
         ldconfig -r "$initdir"
         dracut_kernel_post
     )
@@ -256,22 +254,20 @@ test_setup() {
         export initdir=$TESTDIR/overlay/source/nfs/client
         # shellcheck disable=SC1090
         . "$basedir"/dracut-init.sh
+
         (
             cd "$initdir" || exit
-            mkdir -p dev sys proc etc run
-            mkdir -p var/lib/nfs/rpc_pipefs
-            mkdir -p root usr/bin usr/lib usr/lib64 usr/sbin
-            for i in bin sbin lib lib64; do
-                ln -sfnr usr/$i $i
-            done
+            mkdir -p dev sys proc etc run root usr var/lib/nfs/rpc_pipefs
         )
-        inst_multiple sh shutdown poweroff stty cat ps ln ip \
-            mount dmesg mkdir cp ping grep ls dd sync
+
+        inst_multiple sh shutdown poweroff stty cat ps ln ip dd \
+            mount dmesg mkdir cp ping grep setsid ls vi less cat sync
         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
-            [[ -f ${_terminfodir}/l/linux ]] && break
+            if [ -f "${_terminfodir}"/l/linux ]; then
+                inst_multiple -o "${_terminfodir}"/l/linux
+                break
+            fi
         done
-        inst_multiple -o "${_terminfodir}"/l/linux
-        inst_simple /etc/os-release
 
         inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
         inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
@@ -279,23 +275,25 @@ test_setup() {
         ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
 
         inst ./client-init.sh /sbin/init
-        inst /etc/nsswitch.conf /etc/nsswitch.conf
+        inst_simple /etc/os-release
+        inst_multiple -o {,/usr}/etc/nsswitch.conf
         inst /etc/passwd /etc/passwd
         inst /etc/group /etc/group
 
-        inst_multiple rpc.idmapd /etc/idmapd.conf
         inst_libdir_file 'libnfsidmap_nsswitch.so*'
         inst_libdir_file 'libnfsidmap/*.so*'
         inst_libdir_file 'libnfsidmap*.so*'
 
-        _nsslibs=$(sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' -- /etc/nsswitch.conf \
-            | tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|')
+        _nsslibs=$(
+            cat "$dracutsysrootdir"/{,usr/}etc/nsswitch.conf 2> /dev/null \
+                | sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' \
+                | tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|'
+        )
         _nsslibs=${_nsslibs#|}
         _nsslibs=${_nsslibs%|}
-
         inst_libdir_file -n "$_nsslibs" 'libnss_*.so*'
 
-        cp -a -- /etc/ld.so.conf* "$initdir"/etc
+        cp -a /etc/ld.so.conf* "$initdir"/etc
         ldconfig -r "$initdir"
     )
 
@@ -320,7 +318,7 @@ test_setup() {
         --nomdadmconf \
         --no-hostonly-cmdline -N \
         -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
-    rm -fr "$TESTDIR"/overlay
+    rm -rf -- "$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
@@ -340,31 +338,42 @@ test_setup() {
     # Make an overlay with needed tools for the test harness
     (
         # shellcheck disable=SC2031
+        # shellcheck disable=SC2030
         export initdir="$TESTDIR"/overlay
+        mkdir -p "$TESTDIR"/overlay
         # shellcheck disable=SC1090
         . "$basedir"/dracut-init.sh
         inst_multiple poweroff shutdown
         inst_hook shutdown-emergency 000 ./hard-off.sh
         inst_hook emergency 000 ./hard-off.sh
-        inst_simple ./99-default.link /etc/systemd/network/99-default.link
+        inst_simple ./client.link /etc/systemd/network/01-client.link
+
+        inst_binary awk
+        inst_hook pre-pivot 85 "$basedir/modules.d/45ifcfg/write-ifcfg.sh"
     )
+    # Make client's dracut image
+    "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
+        -o "ifcfg plymouth dash ${OMIT_NETWORK}" \
+        -a "debug watchdog ${USE_NETWORK}" \
+        --no-hostonly-cmdline -N \
+        -f "$TESTDIR"/initramfs.testing "$KVERSION" || return 1
 
+    (
+        # shellcheck disable=SC2031
+        export initdir="$TESTDIR"/overlay
+        # shellcheck disable=SC1090
+        . "$basedir"/dracut-init.sh
+        rm "$initdir"/etc/systemd/network/01-client.link
+        inst_simple ./server.link /etc/systemd/network/01-server.link
+        inst_hook pre-mount 99 ./wait-if-server.sh
+    )
     # Make server's dracut image
-    "$basedir"/dracut.sh \
-        -l -i "$TESTDIR"/overlay / \
-        -m "dash udev-rules base rootfs-block fs-lib debug kernel-modules watchdog qemu" \
+    "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
+        -m "dash udev-rules base rootfs-block fs-lib debug kernel-modules watchdog qemu network network-legacy" \
         -d "af_packet piix ide-gd_mod ata_piix ext3 sd_mod nfsv2 nfsv3 nfsv4 nfs_acl nfs_layout_nfsv41_files nfsd e1000 i6300esb ib700wdt" \
         --no-hostonly-cmdline -N \
         -f "$TESTDIR"/initramfs.server "$KVERSION" || return 1
 
-    # Make client's dracut image
-    "$basedir"/dracut.sh \
-        -l -i "$TESTDIR"/overlay / \
-        -o "plymouth ${OMIT_NETWORK}" \
-        -a "debug ${USE_NETWORK}" \
-        -d "af_packet piix sd_mod sr_mod ata_piix ide-gd_mod e1000 nfsv2 nfsv3 nfsv4 nfs_acl nfs_layout_nfsv41_files sunrpc i6300esb ib700wdt" \
-        --no-hostonly-cmdline -N \
-        -f "$TESTDIR"/initramfs.testing "$KVERSION" || return 1
 }
 
 kill_server() {
diff --git a/test/TEST-50-MULTINIC/wait-if-server.sh b/test/TEST-50-MULTINIC/wait-if-server.sh
new file mode 100644 (file)
index 0000000..cea7259
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+. /lib/net-lib.sh
+wait_for_if_link enx525401123456
index c33b947a96583a7bedefd4144f9e326bc54ec881..644308d1340928b22aea6f5bd0ed1fa23b2de605 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 exec > /dev/console 2>&1
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 strstr() { [ "${1#*$2*}" != "$1" ]; }
 CMDLINE=$(while read -r line; do echo "$line"; done < /proc/cmdline)
 export TERM=linux
diff --git a/test/TEST-60-BONDBRIDGEVLANIFCFG/client.link b/test/TEST-60-BONDBRIDGEVLANIFCFG/client.link
new file mode 100644 (file)
index 0000000..b992bfd
--- /dev/null
@@ -0,0 +1,6 @@
+[Match]
+OriginalName=*
+
+[Link]
+NamePolicy=keep kernel database onboard slot path
+MACAddressPolicy=keep
index bc98b72f6e027555deb5f91111a6aed473b10cb8..5e7e56ef6739b9426f183ecaa64974f86b146b50 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 exec < /dev/console > /dev/console 2>&1
 set -x
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 export TERM=linux
 export PS1='nfstest-server:\w\$ '
 stty sane
diff --git a/test/TEST-60-BONDBRIDGEVLANIFCFG/server.link b/test/TEST-60-BONDBRIDGEVLANIFCFG/server.link
new file mode 100644 (file)
index 0000000..1d21856
--- /dev/null
@@ -0,0 +1,6 @@
+[Match]
+OriginalName=*
+
+[Link]
+NamePolicy=mac
+MACAddressPolicy=keep
index 2a2afd7368d7b5d06024717ccb89ecfcf756fe85..27b98708f031d2823435fc4af1ce06e94650f3c5 100755 (executable)
@@ -211,6 +211,7 @@ test_setup() {
     dd if=/dev/zero of="$TESTDIR"/server.ext3 bs=1M count=120
 
     kernel=$KVERSION
+    rm -rf -- "$TESTDIR"/overlay
     (
         mkdir -p "$TESTDIR"/overlay/source
         # shellcheck disable=SC2030
@@ -255,7 +256,7 @@ test_setup() {
         inst ./hosts /etc/hosts
         inst ./exports /etc/exports
         inst ./dhcpd.conf /etc/dhcpd.conf
-        inst_multiple /etc/nsswitch.conf /etc/rpc /etc/protocols
+        inst_multiple -o {,/usr}/etc/nsswitch.conf {,/usr}/etc/rpc {,/usr}/etc/protocols
 
         inst_multiple rpc.idmapd /etc/idmapd.conf
 
@@ -263,14 +264,16 @@ test_setup() {
         inst_libdir_file 'libnfsidmap/*.so*'
         inst_libdir_file 'libnfsidmap*.so*'
 
-        _nsslibs=$(sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' /etc/nsswitch.conf \
-            | tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|')
+        _nsslibs=$(
+            cat "$dracutsysrootdir"/{,usr/}etc/nsswitch.conf 2> /dev/null \
+                | sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' \
+                | tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|'
+        )
         _nsslibs=${_nsslibs#|}
         _nsslibs=${_nsslibs%|}
 
         inst_libdir_file -n "$_nsslibs" 'libnss_*.so*'
 
-        inst /etc/nsswitch.conf /etc/nsswitch.conf
         inst /etc/passwd /etc/passwd
         inst /etc/group /etc/group
 
@@ -299,7 +302,7 @@ test_setup() {
             mkdir -p -- dev sys proc etc run
             mkdir -p -- var/lib/nfs/rpc_pipefs
         )
-        inst /etc/nsswitch.conf /etc/nsswitch.conf
+        inst_multiple -o {,/usr}/etc/nsswitch.conf {,/usr}/etc/rpc {,/usr}/etc/protocols
         inst /etc/passwd /etc/passwd
         inst /etc/group /etc/group
 
@@ -308,8 +311,11 @@ test_setup() {
         inst_libdir_file 'libnfsidmap/*.so*'
         inst_libdir_file 'libnfsidmap*.so*'
 
-        _nsslibs=$(sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' -- /etc/nsswitch.conf \
-            | tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|')
+        _nsslibs=$(
+            cat "$dracutsysrootdir"/{,usr/}etc/nsswitch.conf 2> /dev/null \
+                | sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' \
+                | tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|'
+        )
         _nsslibs=${_nsslibs#|}
         _nsslibs=${_nsslibs%|}
 
@@ -358,13 +364,13 @@ test_setup() {
         . "$basedir"/dracut-init.sh
         inst_multiple poweroff shutdown
         inst_hook emergency 000 ./hard-off.sh
+        inst_simple ./client.link /etc/systemd/network/01-client.link
     )
     # Make client's dracut image
     "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
         --no-early-microcode \
         -o "plymouth ${OMIT_NETWORK}" \
         -a "debug ${USE_NETWORK}" \
-        -d "ipvlan macvlan af_packet piix sd_mod sr_mod ata_piix ide-gd_mod virtio-net nfsv2 nfsv3 nfsv4 nfs_acl nfs_layout_nfsv41_files sunrpc i6300esb ib700wdt" \
         --no-hostonly-cmdline -N \
         -f "$TESTDIR"/initramfs.testing "$KVERSION" || return 1
 
@@ -373,7 +379,7 @@ test_setup() {
         export initdir="$TESTDIR"/overlay
         # shellcheck disable=SC1090
         . "$basedir"/dracut-init.sh
-        inst_simple ./99-default.link /etc/systemd/network/99-default.link
+        inst_simple ./server.link /etc/systemd/network/01-server.link
         inst_hook pre-mount 99 ./wait-if-server.sh
     )
     # Make server's dracut image
index f9892bac25db7a52271486529307ff9285dccd71..3c521a14193385a50796e024da967012bd0340e4 100755 (executable)
@@ -2,7 +2,7 @@
 # Check which virtualization technology to use
 # We prefer kvm, kqemu, userspace in that order.
 
-export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 
 [[ -x /usr/bin/qemu ]] && BIN=/usr/bin/qemu && ARGS=(-cpu max)
 (lsmod | grep -q '^kqemu ') && BIN=/usr/bin/qemu && ARGS=(-kernel-kqemu -cpu host)
index c770753211b2b3571410cdd2c8ed12a84ac3d647..f2896a9141ac2adfd78ed0b8b923727129e9e00a 100644 (file)
@@ -1,5 +1,5 @@
 #!/bin/bash
-PATH=/sbin:/bin:/usr/sbin:/usr/bin
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
 export PATH
 
 # shellcheck disable=SC1090