67 lines
2.5 KiB
Diff
67 lines
2.5 KiB
Diff
From b22d90e59438481b421b1eb2449e6efdfb7f2118 Mon Sep 17 00:00:00 2001
|
|
From: Frantisek Sumsal <frantisek@sumsal.cz>
|
|
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 <watanabe.yu+github@gmail.com>
|
|
---
|
|
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 a52848b..c18f4aa 100755
|
|
--- a/test/TEST-24-CRYPTSETUP/test.sh
|
|
+++ b/test/TEST-24-CRYPTSETUP/test.sh
|
|
@@ -64,6 +64,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 bef87ca..0239bbc 100644
|
|
--- a/test/test-functions
|
|
+++ b/test/test-functions
|
|
@@ -325,6 +325,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 </etc/machine-id
|
|
[ -z "$INITRD" ] && [ -e "$EFI_MOUNT/$MACHINE_ID/$KERNEL_VER/initrd" ] \
|
|
--
|
|
2.33.0
|
|
|