]> git.ipfire.org Git - thirdparty/dracut-ng.git/commitdiff
test(RAID): optionally encrypted LVM PV
authorJo Zzsi <jozzsicsataban@gmail.com>
Thu, 14 Nov 2024 13:39:21 +0000 (08:39 -0500)
committerLaszlo <laszlo.gombos@gmail.com>
Thu, 14 Nov 2024 16:00:51 +0000 (11:00 -0500)
Replace TEST-20 with TEST-24 and remove TEST-24.

.github/workflows/integration-extra.yml
.github/workflows/integration.yml
test/TEST-20-RAID/create-root.sh
test/TEST-20-RAID/test.sh
test/TEST-24-RAID/Makefile [deleted file]
test/TEST-24-RAID/create-root.sh [deleted file]
test/TEST-24-RAID/test.sh [deleted file]

index 20e52483204b699fef967f615f84d6dfe425ebb0..c4768e3b24dd7b2cf55f6014ba14dd1d514bf593 100644 (file)
@@ -47,7 +47,6 @@ jobs:
                         "21",
                         "22",
                         "23",
-                        "24",
                         "25",
                         "26",
                         "30",
index b95afe1505455150792c6555a6bf9f292608be8e..e11b12333b3344c1afa4182d1f161d8f3adde21e 100644 (file)
@@ -89,7 +89,6 @@ jobs:
                         "21",
                         "22",
                         "23",
-                        "24",
                         "25",
                         "26",
                         "30",
index 4db5510eca1a41e79b4a87d58adf9b6b54261505..68249a33c1c9fddd517c290cc5784b4038dec2cc 100755 (executable)
@@ -1,39 +1,72 @@
 #!/bin/sh
 
 trap 'poweroff -f' EXIT
-set -ex
-mdadm --create /dev/md0 --run --auto=yes --level=5 --raid-devices=3 /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_raid[123]
-# wait for the array to finish initializing, otherwise this sometimes fails
-# randomly.
-mdadm -W /dev/md0 || :
-printf test > keyfile
-cryptsetup -q luksFormat /dev/md0 /keyfile
-echo "The passphrase is test"
-cryptsetup luksOpen /dev/md0 dracut_crypt_test < /keyfile
-lvm pvcreate -ff -y /dev/mapper/dracut_crypt_test
-lvm vgcreate dracut /dev/mapper/dracut_crypt_test
-lvm lvcreate --yes -l 100%FREE -n root dracut
-lvm vgchange -ay
-mkfs.ext4 -q -L root /dev/dracut/root
+set -e
+
+# populate TEST_FSTYPE
+. /env
+
+if [ "$TEST_FSTYPE" = "zfs" ]; then
+    zpool create dracut /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_raid[12]
+    zfs create dracut/root
+elif [ "$TEST_FSTYPE" = "btrfs" ]; then
+    mkfs.btrfs -q -draid0 -mraid0 -L root /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_raid[12]
+    udevadm settle
+    btrfs device scan
+else
+    mdadm --create /dev/md0 --run --auto=yes --level=0 --raid-devices=2 /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_raid[12]
+    # wait for the array to finish initializing, otherwise this sometimes fails randomly.
+    mdadm -W /dev/md0 || :
+
+    if command -v cryptsetup > /dev/null; then
+        printf test > keyfile
+        cryptsetup -q luksFormat /dev/md0 /keyfile
+        echo "The passphrase is test"
+        cryptsetup luksOpen /dev/md0 dracut_crypt_test < /keyfile
+        lvm pvcreate -ff -y /dev/mapper/dracut_crypt_test
+        lvm vgcreate dracut /dev/mapper/dracut_crypt_test
+    else
+        lvm pvcreate -ff -y /dev/md0
+        lvm vgcreate dracut /dev/md0
+    fi
+
+    lvm lvcreate --yes -l 100%FREE -n root dracut
+    lvm vgchange -ay
+
+    eval "mkfs.${TEST_FSTYPE} -q -L root /dev/dracut/root"
+fi
+
+udevadm settle
 mkdir -p /sysroot
-mount -t ext4 /dev/dracut/root /sysroot
+
+if [ "$TEST_FSTYPE" = "zfs" ]; then
+    zfs set mountpoint=/sysroot dracut/root
+    zfs get mounted dracut/root
+elif [ "$TEST_FSTYPE" = "btrfs" ]; then
+    mount -t "$TEST_FSTYPE" /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_raid1 /sysroot
+else
+    mount -t "$TEST_FSTYPE" /dev/dracut/root /sysroot
+fi
+
 cp -a -t /sysroot /source/*
-mkdir -p /sysroot/run
 umount /sysroot
-lvm lvchange -a n /dev/dracut/root
-udevadm settle
-cryptsetup luksClose /dev/mapper/dracut_crypt_test
-udevadm settle
-mdadm -W /dev/md0 || :
-udevadm settle
-mdadm --detail --export /dev/md0 | grep -F MD_UUID > /tmp/mduuid
-. /tmp/mduuid
-udevadm settle
-eval "$(udevadm info --query=property --name=/dev/md0 | while read -r line || [ -n "$line" ]; do [ "$line" != "${line#*ID_FS_UUID*}" ] && echo "$line"; done)"
+
+if [ -e /dev/md0 ]; then
+    lvm lvchange -a n /dev/dracut/root
+    udevadm settle
+    mdadm -W /dev/md0 || :
+    udevadm settle
+    mdadm --detail --export /dev/md0 | grep -F MD_UUID > /tmp/mduuid
+    . /tmp/mduuid
+    udevadm settle
+    eval "$(udevadm info --query=property --name=/dev/md0 | while read -r line || [ -n "$line" ]; do [ "$line" != "${line#*ID_FS_UUID*}" ] && echo "$line"; done)"
+fi
+
 {
     echo "dracut-root-block-created"
     echo MD_UUID="$MD_UUID"
     echo "ID_FS_UUID=$ID_FS_UUID"
 } | dd oflag=direct,dsync of=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_marker status=none
+
 sync
 poweroff -f
index 37c9cf44d9d0518c61e9524d50d52468e9bd6b16..f960f66b11476905b1f5355b8877afe61d0d76db 100755 (executable)
@@ -1,36 +1,36 @@
 #!/usr/bin/env bash
+
+[ -z "$TEST_FSTYPE" ] && TEST_FSTYPE="ext4"
+
 # shellcheck disable=SC2034
-TEST_DESCRIPTION="root filesystem on an encrypted LVM PV on a RAID-5"
+TEST_DESCRIPTION="root filesystem on multiple device $TEST_FSTYPE"
 
 test_check() {
-    if ! type -p cryptsetup &> /dev/null; then
-        echo "Test needs cryptsetup for crypt module... Skipping"
-        return 1
-    fi
-
-    if ! type -p mdadm &> /dev/null; then
-        echo "Test needs mdadm for mdraid module ... Skipping"
-        return 1
-    fi
+    (command -v zfs || (command -v mdadm && command -v "mkfs.$TEST_FSTYPE")) &> /dev/null
 }
 
 # Uncomment this to debug failures
-#DEBUGFAIL="rd.shell rd.udev.log-priority=debug loglevel=70 systemd.log_target=kmsg"
-#DEBUGFAIL="rd.break rd.shell rd.debug debug"
+#DEBUGFAIL="rd.shell"
 test_run() {
     declare -a disk_args=()
     declare -i disk_index=0
     qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker
     qemu_add_drive disk_index disk_args "$TESTDIR"/raid-1.img raid1
     qemu_add_drive disk_index disk_args "$TESTDIR"/raid-2.img raid2
-    qemu_add_drive disk_index disk_args "$TESTDIR"/raid-3.img raid3
+
+    if [ "$TEST_FSTYPE" = "zfs" ]; then
+        TEST_KERNEL_CMDLINE+=" root=ZFS=dracut/root "
+    elif [ "$TEST_FSTYPE" = "btrfs" ]; then
+        TEST_KERNEL_CMDLINE+=" root=LABEL=root "
+    else
+        TEST_KERNEL_CMDLINE+=" root=/dev/dracut/root rd.auto"
+    fi
 
     test_marker_reset
     "$testdir"/run-qemu \
         "${disk_args[@]}" \
-        -append "$TEST_KERNEL_CMDLINE root=/dev/dracut/root rd.auto" \
+        -append "$TEST_KERNEL_CMDLINE ro" \
         -initrd "$TESTDIR"/initramfs.testing || return 1
-
     test_marker_check || return 1
 }
 
@@ -41,36 +41,50 @@ test_setup() {
         -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
     mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
 
+    # pass enviroment variables to make the root filesystem
+    echo "TEST_FSTYPE=${TEST_FSTYPE}" > "$TESTDIR"/overlay/env
+
+    # second, install the files needed to make the root filesystem
     # create an initramfs that will create the target root filesystem.
     # We do it this way so that we do not risk trashing the host mdraid
     # devices, volume groups, encrypted partitions, etc.
+
+    # shellcheck disable=SC2046
     "$DRACUT" -N -i "$TESTDIR"/overlay / \
         --add-confdir test-makeroot \
-        -a "bash crypt lvm mdraid" \
-        -I "grep cryptsetup" \
+        -a "lvm mdraid" \
+        -I "grep" \
+        $(if command -v cryptsetup > /dev/null; then echo "-a crypt -I cryptsetup"; fi) \
+        $(if [ "$TEST_FSTYPE" = "zfs" ]; then echo "-a zfs"; else echo "-I mkfs.${TEST_FSTYPE}"; fi) \
         -i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \
         -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
 
     # Create the blank files to use as a root filesystem
     declare -a disk_args=()
+    # shellcheck disable=SC2034
     declare -i disk_index=0
     qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker 1
     qemu_add_drive disk_index disk_args "$TESTDIR"/raid-1.img raid1 1
     qemu_add_drive disk_index disk_args "$TESTDIR"/raid-2.img raid2 1
-    qemu_add_drive disk_index disk_args "$TESTDIR"/raid-3.img raid3 1
 
     "$testdir"/run-qemu \
         "${disk_args[@]}" \
-        -append "root=/dev/cannotreach quiet console=ttyS0,115200n81" \
+        -append "root=/dev/fakeroot quiet console=ttyS0,115200n81" \
         -initrd "$TESTDIR"/initramfs.makeroot || return 1
+
     test_marker_check dracut-root-block-created || return 1
-    eval "$(grep -F -a -m 1 ID_FS_UUID "$TESTDIR"/marker.img)"
 
-    echo "testluks UUID=$ID_FS_UUID /etc/key" > /tmp/crypttab
-    echo -n "test" > /tmp/key
+    if command -v cryptsetup > /dev/null; then
+        eval "$(grep -F -a -m 1 ID_FS_UUID "$TESTDIR"/marker.img)"
+        echo "testluks UUID=$ID_FS_UUID /etc/key" > /tmp/crypttab
+        echo -n "test" > /tmp/key
+    fi
 
+    # shellcheck disable=SC2046
     test_dracut \
-        -a "crypt lvm mdraid" \
+        -a "lvm mdraid" \
+        $(if command -v cryptsetup > /dev/null; then echo "-a crypt"; fi) \
+        $(if [ "$TEST_FSTYPE" = "zfs" ]; then echo "-a zfs"; fi) \
         -i "./cryptroot-ask.sh" "/sbin/cryptroot-ask" \
         -i "/tmp/crypttab" "/etc/crypttab" \
         -i "/tmp/key" "/etc/key" \
diff --git a/test/TEST-24-RAID/Makefile b/test/TEST-24-RAID/Makefile
deleted file mode 100644 (file)
index 2dcab81..0000000
+++ /dev/null
@@ -1 +0,0 @@
--include ../Makefile.testdir
diff --git a/test/TEST-24-RAID/create-root.sh b/test/TEST-24-RAID/create-root.sh
deleted file mode 100755 (executable)
index b525465..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/bin/sh
-
-trap 'poweroff -f' EXIT
-set -e
-
-# populate TEST_FSTYPE
-. /env
-
-if [ "$TEST_FSTYPE" = "zfs" ]; then
-    zpool create dracut /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_raid[12]
-    zfs create dracut/root
-elif [ "$TEST_FSTYPE" = "btrfs" ]; then
-    mkfs.btrfs -q -draid0 -mraid0 -L root /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_raid[12]
-    udevadm settle
-    btrfs device scan
-else
-    mdadm --create /dev/md0 --run --auto=yes --level=0 --raid-devices=2 /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_raid[12]
-    # wait for the array to finish initializing, otherwise this sometimes fails randomly.
-    mdadm -W /dev/md0 || :
-
-    lvm pvcreate -ff -y /dev/md0
-    lvm vgcreate dracut /dev/md0
-    lvm lvcreate --yes -l 100%FREE -n root dracut
-    lvm vgchange -ay
-
-    eval "mkfs.${TEST_FSTYPE} -q -L root /dev/dracut/root"
-fi
-
-udevadm settle
-mkdir -p /sysroot
-
-if [ "$TEST_FSTYPE" = "zfs" ]; then
-    zfs set mountpoint=/sysroot dracut/root
-    zfs get mounted dracut/root
-elif [ "$TEST_FSTYPE" = "btrfs" ]; then
-    mount -t "$TEST_FSTYPE" /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_raid1 /sysroot
-else
-    mount -t "$TEST_FSTYPE" /dev/dracut/root /sysroot
-fi
-
-cp -a -t /sysroot /source/*
-umount /sysroot
-
-if [ -e /dev/md0 ]; then
-    lvm lvchange -a n /dev/dracut/root
-    udevadm settle
-    mdadm -W /dev/md0 || :
-    udevadm settle
-    mdadm --detail --export /dev/md0 | grep -F MD_UUID > /tmp/mduuid
-    . /tmp/mduuid
-    udevadm settle
-fi
-
-echo "dracut-root-block-created" | dd oflag=direct,dsync of=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_marker status=none
-sync
-poweroff -f
diff --git a/test/TEST-24-RAID/test.sh b/test/TEST-24-RAID/test.sh
deleted file mode 100755 (executable)
index 049d4a3..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-#!/usr/bin/env bash
-
-[ -z "$TEST_FSTYPE" ] && TEST_FSTYPE="ext4"
-
-# shellcheck disable=SC2034
-TEST_DESCRIPTION="root filesystem on multiple device $TEST_FSTYPE"
-
-test_check() {
-    (command -v zfs || (command -v mdadm && command -v "mkfs.$TEST_FSTYPE")) &> /dev/null
-}
-
-# Uncomment this to debug failures
-#DEBUGFAIL="rd.shell"
-test_run() {
-    declare -a disk_args=()
-    declare -i disk_index=0
-    qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker
-    qemu_add_drive disk_index disk_args "$TESTDIR"/raid-1.img raid1
-    qemu_add_drive disk_index disk_args "$TESTDIR"/raid-2.img raid2
-
-    if [ "$TEST_FSTYPE" = "zfs" ]; then
-        TEST_KERNEL_CMDLINE+=" root=ZFS=dracut/root "
-    elif [ "$TEST_FSTYPE" = "btrfs" ]; then
-        TEST_KERNEL_CMDLINE+=" root=LABEL=root "
-    else
-        TEST_KERNEL_CMDLINE+=" root=/dev/dracut/root rd.auto"
-    fi
-
-    test_marker_reset
-    "$testdir"/run-qemu \
-        "${disk_args[@]}" \
-        -append "$TEST_KERNEL_CMDLINE ro" \
-        -initrd "$TESTDIR"/initramfs.testing
-    test_marker_check || return 1
-}
-
-test_setup() {
-    # Create what will eventually be our root filesystem onto an overlay
-    "$DRACUT" -N --keep --tmpdir "$TESTDIR" \
-        --add-confdir test-root \
-        -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
-    mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
-
-    # pass enviroment variables to make the root filesystem
-    echo "TEST_FSTYPE=${TEST_FSTYPE}" > "$TESTDIR"/overlay/env
-
-    # second, install the files needed to make the root filesystem
-    # create an initramfs that will create the target root filesystem.
-    # We do it this way so that we do not risk trashing the host mdraid
-    # devices, volume groups, encrypted partitions, etc.
-
-    # shellcheck disable=SC2046
-    "$DRACUT" -N -i "$TESTDIR"/overlay / \
-        --add-confdir test-makeroot \
-        -a "lvm mdraid" \
-        $(if [ "$TEST_FSTYPE" = "zfs" ]; then echo "-a zfs"; else echo "-I mkfs.${TEST_FSTYPE}"; fi) \
-        -i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \
-        -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
-
-    # Create the blank files to use as a root filesystem
-    declare -a disk_args=()
-    # shellcheck disable=SC2034
-    declare -i disk_index=0
-    qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker 1
-    qemu_add_drive disk_index disk_args "$TESTDIR"/raid-1.img raid1 1
-    qemu_add_drive disk_index disk_args "$TESTDIR"/raid-2.img raid2 1
-
-    "$testdir"/run-qemu \
-        "${disk_args[@]}" \
-        -append "root=/dev/fakeroot quiet console=ttyS0,115200n81" \
-        -initrd "$TESTDIR"/initramfs.makeroot || return 1
-
-    test_marker_check dracut-root-block-created || return 1
-
-    # shellcheck disable=SC2046
-    test_dracut \
-        -a "lvm mdraid" \
-        $(if [ "$TEST_FSTYPE" = "zfs" ]; then echo "-a zfs"; fi) \
-        "$TESTDIR"/initramfs.testing
-}
-
-# shellcheck disable=SC1090
-. "$testdir"/test-functions