diff --git a/test/TEST-01-BASIC/test.sh b/test/TEST-01-BASIC/test.sh index d0e714ac30f0e..c729e95f1dde6 100755 --- a/test/TEST-01-BASIC/test.sh +++ b/test/TEST-01-BASIC/test.sh @@ -23,4 +23,31 @@ test_append_files() { cp -v "$TEST_UNITS_DIR"/{testsuite-01,end}.service "$TEST_UNITS_DIR/testsuite.target" "$dst" } +# Setup a one shot service in initrd that creates a dummy bind mount under /run +# to check if the mount persists though the initrd transition. The "check" part +# is in the respective testsuite-01.sh script. +# +# See: https://github.com/systemd/systemd/issues/28452 +run_qemu_hook() { + local extra="$WORKDIR/initrd.extra" + + mkdir -m 755 "$extra" + mkdir -m 755 "$extra/etc" "$extra/etc/systemd" "$extra/etc/systemd/system" "$extra/etc/systemd/system/initrd.target.wants" + + cat >"$extra/etc/systemd/system/initrd-run-mount.service" < "$extra.cpio") + + INITRD_EXTRA="$extra.cpio" +} + do_test "$@" diff --git a/test/units/testsuite-01.sh b/test/units/testsuite-01.sh index 780f37ee12811..a1193ce6fbf4e 100755 --- a/test/units/testsuite-01.sh +++ b/test/units/testsuite-01.sh @@ -19,6 +19,11 @@ if systemd-detect-virt -q --container; then test ! -e /run/systemd/container cp -afv /tmp/container /run/systemd/container else + # We should've created a mount under /run in initrd (see the other half of the test) + # that should've survived the transition from initrd to the real system + test -d /run/initrd-mount-target + mountpoint /run/initrd-mount-target + # We bring the loopback netdev up only during a full setup, so it should # not get brought back up during reexec if we disable it beforehand [[ "$(ip -o link show lo)" =~ LOOPBACK,UP ]]