From 2a9184b90283f8d63bc50ed1100e11ad94bbc47d Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Tue, 23 Apr 2024 23:15:44 +0200 Subject: [PATCH 1/3] TEST-50-DISSECT: Skip mountfsd test if the user namespace interface is not supported --- test/units/testsuite-50.mountnfsd.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/test/units/testsuite-50.mountnfsd.sh b/test/units/testsuite-50.mountnfsd.sh index d6b5fafeab..fea6b7d50b 100755 --- a/test/units/testsuite-50.mountnfsd.sh +++ b/test/units/testsuite-50.mountnfsd.sh @@ -49,6 +49,15 @@ systemd-dissect --image-policy='root=unprotected:=absent+unused' --mtree /var/tm (! runas testuser systemd-dissect /var/tmp/unpriv.raw) (! runas testuser systemd-dissect --mtree /var/tmp/unpriv.raw) +if (SYSTEMD_LOG_TARGET=console varlinkctl call \ + /run/systemd/userdb/io.systemd.NamespaceResource \ + io.systemd.NamespaceResource.AllocateUserRange \ + '{"name":"test-supported","size":65536,"userNamespaceFileDescriptor":0}' 2>&1 || true) | + grep -q "io.systemd.NamespaceResource.UserNamespaceInterfaceNotSupported"; then + echo "User namespace interface not supported, skipping mountnfsd/nsresourced tests" + exit 0 +fi + # Install key in keychain cp /tmp/test-50-unpriv-cert.crt /run/verity.d From c709499a4eb44511e225e63a722ef5b6a0319842 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Tue, 23 Apr 2024 23:16:29 +0200 Subject: [PATCH 2/3] TEST-50-DISSECT: Use --apparent-size when calling du Otherwise if the file is full of holes we get the wrong size and we'll fail later on. --- test/units/testsuite-50.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/units/testsuite-50.sh b/test/units/testsuite-50.sh index ab65c86ba8..8c4d2bfc3f 100755 --- a/test/units/testsuite-50.sh +++ b/test/units/testsuite-50.sh @@ -134,8 +134,8 @@ fi # Make a GPT disk on the fly, with the squashfs as partition 1 and the verity hash tree as partition 2 # # du rounds up to block size, which is more helpful for partitioning -root_size="$(du -k "$MINIMAL_IMAGE.raw" | cut -f1)" -verity_size="$(du -k "$MINIMAL_IMAGE.verity" | cut -f1)" +root_size="$(du --apparent-size -k "$MINIMAL_IMAGE.raw" | cut -f1)" +verity_size="$(du --apparent-size -k "$MINIMAL_IMAGE.verity" | cut -f1)" signature_size=4 # 4MB seems to be the minimum size blkid will accept, below that probing fails dd if=/dev/zero of="$MINIMAL_IMAGE.gpt" bs=512 count=$((8192+root_size*2+verity_size*2+signature_size*2)) From 5ae6ff12581f214c6c13f36a309da5042a9173c5 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Tue, 23 Apr 2024 23:20:44 +0200 Subject: [PATCH 3/3] TEST-50-DISSECT: Skip mutable sysext tests on virtiofs virtiofs cannot be used as the upper fs for overlayfs, so skip all the sysext mutable tests that would try to use virtiofs as the upper fs. --- test/units/testsuite-50.sysext.sh | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/test/units/testsuite-50.sysext.sh b/test/units/testsuite-50.sysext.sh index 8cfa0a485c..3bc88999f8 100755 --- a/test/units/testsuite-50.sysext.sh +++ b/test/units/testsuite-50.sysext.sh @@ -4,6 +4,7 @@ set -eux set -o pipefail FAKE_ROOTS_DIR="$(mktemp -d --tmpdir="" fake-roots-XXX)" +FSTYPE=$(stat --file-system --format "%T" /usr) shopt -s nullglob @@ -370,6 +371,8 @@ fake_root=${roots_dir:+"$roots_dir/simple-mutable-with-read-only-hierarchy"} hierarchy=/opt extension_data_dir="$fake_root/var/lib/extensions.mutable$hierarchy" +[[ "$FSTYPE" == "fuseblk" ]] && exit 0 + prepare_root "$fake_root" "$hierarchy" prepare_extension_image "$fake_root" "$hierarchy" prepare_extension_mutable_dir "$extension_data_dir" @@ -394,6 +397,8 @@ fake_root=${roots_dir:+"$roots_dir/simple-mutable-with-missing-hierarchy"} hierarchy=/opt extension_data_dir="$fake_root/var/lib/extensions.mutable$hierarchy" +[[ "$FSTYPE" == "fuseblk" ]] && exit 0 + move_existing_hierarchy_aside "$fake_root" "$hierarchy" prepare_root "$fake_root" "$hierarchy" rmdir "$fake_root/$hierarchy" @@ -418,6 +423,8 @@ fake_root=${roots_dir:+"$roots_dir/simple-mutable-with-empty-hierarchy"} hierarchy=/opt extension_data_dir="$fake_root/var/lib/extensions.mutable$hierarchy" +[[ "$FSTYPE" == "fuseblk" ]] && exit 0 + move_existing_hierarchy_aside "$fake_root" "$hierarchy" prepare_root "$fake_root" "$hierarchy" prepare_extension_image "$fake_root" "$hierarchy" @@ -444,6 +451,8 @@ hierarchy=/opt extension_data_dir="$fake_root/var/lib/extensions.mutable$hierarchy" extension_real_dir="$fake_root/upperdir" +[[ "$FSTYPE" == "fuseblk" ]] && exit 0 + prepare_root "$fake_root" "$hierarchy" prepare_extension_image "$fake_root" "$hierarchy" prepare_extension_mutable_dir "$extension_real_dir" @@ -473,6 +482,8 @@ hierarchy=/opt extension_data_dir="$fake_root/var/lib/extensions.mutable$hierarchy" extension_real_dir="$fake_root$hierarchy" +[[ "$FSTYPE" == "fuseblk" ]] && exit 0 + prepare_root "$fake_root" "$hierarchy" prepare_extension_image "$fake_root" "$hierarchy" prepare_extension_mutable_dir "$extension_real_dir" @@ -582,6 +593,8 @@ hierarchy=/opt extension_data_dir="$fake_root/var/lib/extensions.mutable$hierarchy" extension_data_dir_usr="$fake_root/var/lib/extensions.mutable/usr" +[[ "$FSTYPE" == "fuseblk" ]] && exit 0 + prepare_root "$fake_root" "$hierarchy" prepare_extension_image "$fake_root" "$hierarchy" prepare_read_only_hierarchy "$fake_root" "$hierarchy" @@ -635,6 +648,8 @@ hierarchy=/opt extension_data_dir="$fake_root/var/lib/extensions.mutable$hierarchy" extension_data_dir_usr="$fake_root/var/lib/extensions.mutable/usr" +[[ "$FSTYPE" == "fuseblk" ]] && exit 0 + prepare_root "$fake_root" "$hierarchy" prepare_extension_image "$fake_root" "$hierarchy" prepare_read_only_hierarchy "$fake_root" "$hierarchy" @@ -687,6 +702,8 @@ fake_root=${roots_dir:+"$roots_dir/auto-mutable-env-var"} hierarchy=/opt extension_data_dir="$fake_root/var/lib/extensions.mutable$hierarchy" +[[ "$FSTYPE" == "fuseblk" ]] && exit 0 + prepare_root "$fake_root" "$hierarchy" prepare_extension_image "$fake_root" "$hierarchy" prepare_extension_mutable_dir "$extension_data_dir" @@ -774,6 +791,8 @@ fake_root=${roots_dir:+"$roots_dir/ephemeral"} hierarchy=/opt extension_data_dir="$fake_root/var/lib/extensions.mutable$hierarchy" +[[ "$FSTYPE" == "fuseblk" ]] && exit 0 + prepare_root "$fake_root" "$hierarchy" prepare_extension_image "$fake_root" "$hierarchy" prepare_extension_mutable_dir "$extension_data_dir" @@ -798,6 +817,8 @@ fake_root=${roots_dir:+"$roots_dir/ephemeral-env-var"} hierarchy=/opt extension_data_dir="$fake_root/var/lib/extensions.mutable$hierarchy" +[[ "$FSTYPE" == "fuseblk" ]] && exit 0 + prepare_root "$fake_root" "$hierarchy" prepare_extension_image "$fake_root" "$hierarchy" prepare_extension_mutable_dir "$extension_data_dir" @@ -822,6 +843,8 @@ fake_root=${roots_dir:+"$roots_dir/ephemeral-import"} hierarchy=/opt extension_data_dir="$fake_root/var/lib/extensions.mutable$hierarchy" +[[ "$FSTYPE" == "fuseblk" ]] && exit 0 + prepare_root "$fake_root" "$hierarchy" prepare_extension_image "$fake_root" "$hierarchy" prepare_extension_mutable_dir "$extension_data_dir" @@ -846,6 +869,8 @@ fake_root=${roots_dir:+"$roots_dir/ephemeral-import-env-var"} hierarchy=/opt extension_data_dir="$fake_root/var/lib/extensions.mutable$hierarchy" +[[ "$FSTYPE" == "fuseblk" ]] && exit 0 + prepare_root "$fake_root" "$hierarchy" prepare_extension_image "$fake_root" "$hierarchy" prepare_extension_mutable_dir "$extension_data_dir" @@ -871,6 +896,8 @@ hierarchy=/opt extension_data_dir="$fake_root/var/lib/extensions.mutable$hierarchy" extension_real_dir="$fake_root$hierarchy" +[[ "$FSTYPE" == "fuseblk" ]] && exit 0 + prepare_root "$fake_root" "$hierarchy" prepare_extension_image "$fake_root" "$hierarchy" prepare_extension_mutable_dir "$extension_real_dir" @@ -890,6 +917,8 @@ hierarchy=/opt extension_data_dir="$fake_root/var/lib/extensions.mutable$hierarchy" extension_real_dir="$fake_root$hierarchy" +[[ "$FSTYPE" == "fuseblk" ]] && exit 0 + prepare_root "$fake_root" "$hierarchy" prepare_extension_image "$fake_root" "$hierarchy" prepare_extension_mutable_dir "$extension_real_dir" @@ -910,6 +939,8 @@ for mutable_mode in no yes ephemeral; do hierarchy=/opt extension_data_dir="$fake_root/var/lib/extensions.mutable$hierarchy" + [[ "$FSTYPE" == "fuseblk" ]] && exit 0 + prepare_root "$fake_root" "$hierarchy" prepare_extension_image "$fake_root" "$hierarchy" prepare_extension_mutable_dir "$extension_data_dir"