From b22d90e59438481b421b1eb2449e6efdfb7f2118 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Thu, 26 May 2022 13:19:11 +0200 Subject: [PATCH] test: generate a custom initrd for TEST-24 if $INITRD is unset Co-Authored-By: Yu Watanabe --- test/TEST-24-CRYPTSETUP/test.sh | 24 ++++++++++++++++++++++++ test/test-functions | 5 +++++ 2 files changed, 29 insertions(+) diff --git a/test/TEST-24-CRYPTSETUP/test.sh b/test/TEST-24-CRYPTSETUP/test.sh index 83f4d65b1da..bdf630d9120 100755 --- a/test/TEST-24-CRYPTSETUP/test.sh +++ b/test/TEST-24-CRYPTSETUP/test.sh @@ -66,6 +66,30 @@ EOF # Forward journal messages to the console, so we have something # to investigate even if we fail to mount the encrypted /var echo ForwardToConsole=yes >> "$initdir/etc/systemd/journald.conf" + + # If $INITRD wasn't provided explicitly, generate a custom one with dm-crypt + # support + if [[ -z "$INITRD" ]]; then + INITRD="${TESTDIR:?}/initrd.img" + dinfo "Generating a custom initrd with dm-crypt support in '${INITRD:?}'" + + if command -v dracut >/dev/null; then + dracut --force --verbose --add crypt "$INITRD" + elif command -v mkinitcpio >/dev/null; then + mkinitcpio --addhooks sd-encrypt --generate "$INITRD" + elif command -v mkinitramfs >/dev/null; then + # The cryptroot hook is provided by the cryptsetup-initramfs package + if ! dpkg-query -s cryptsetup-initramfs; then + derror "Missing 'cryptsetup-initramfs' package for dm-crypt support in initrd" + return 1 + fi + + mkinitramfs -o "$INITRD" + else + dfatal "Unrecognized initrd generator, can't continue" + return 1 + fi + fi } cleanup_root_var() { diff --git a/test/test-functions b/test/test-functions index 06a06e706ad..daed481a292 100644 --- a/test/test-functions +++ b/test/test-functions @@ -337,6 +337,11 @@ qemu_min_version() { # Return 0 if qemu did run (then you must check the result state/logs for actual # success), or 1 if qemu is not available. run_qemu() { + # If the test provided its own initrd, use it (e.g. TEST-24) + if [[ -z "$INITRD" && -f "${TESTDIR:?}/initrd.img" ]]; then + INITRD="$TESTDIR/initrd.img" + fi + if [ -f /etc/machine-id ]; then read -r MACHINE_ID