]> git.ipfire.org Git - thirdparty/dracut-ng.git/commitdiff
test: extract KVERSION from the generated initramfs
authorJo Zzsi <jozzsicsataban@gmail.com>
Sun, 20 Jul 2025 17:53:49 +0000 (13:53 -0400)
committerNeal Gompa (ニール・ゴンパ) <ngompa13@gmail.com>
Fri, 1 Aug 2025 15:07:16 +0000 (11:07 -0400)
Use lsinitrd to list the files of the generated initramfs and extract
the the KVERSION that was computed by the dracut call.

test/TEST-12-UEFI/test.sh
test/TEST-41-FULL-SYSTEMD/test.sh
test/TEST-43-KERNEL-INSTALL/test.sh
test/TEST-60-NFS/test.sh
test/test-functions

index d9b92fd3a8633d0eb4dd2b344d0538f1b7fbc322..25390f5ae2e827864cd537897e08aa0bb2140a22 100755 (executable)
@@ -48,6 +48,8 @@ test_setup() {
         --add-confdir test-root \
         "$TESTDIR"/tmp-initramfs.root "$KVERSION"
 
+    KVERSION=$(determine_kernel_version "$TESTDIR"/tmp-initramfs.root)
+
     mksquashfs "$TESTDIR"/dracut.*/initramfs/ "$TESTDIR"/squashfs.img -quiet -no-progress
 
     mkdir -p "$TESTDIR"/ESP/EFI/BOOT "$TESTDIR"/dracut.conf.d
@@ -95,6 +97,7 @@ test_setup() {
     test_dracut \
         --kernel-cmdline "$TEST_KERNEL_CMDLINE root=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_root" \
         --add-drivers 'squashfs' \
+        --kver "$KVERSION" \
         --uefi \
         "$TESTDIR"/ESP/EFI/BOOT/BOOTX64.efi
 }
index e349990e32e0757c0063154416e4a2cc883780be..4e270c7a5d1cc23a570caf1b63e849add3ba55e7 100755 (executable)
@@ -103,6 +103,8 @@ test_setup() {
         -a "$dracut_modules" \
         -f "$TESTDIR"/initramfs.root "$KVERSION"
 
+    KVERSION=$(determine_kernel_version "$TESTDIR"/initramfs.root)
+
     mkdir -p "$TESTDIR"/overlay/source && cp -a "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
 
     # second, install the files needed to make the root filesystem
index 504b2b6e696d06c4c10e6f93d7a5ed8e53d1a4dc..23c6ba1cdbb5b40707c46777d56b028a426b5edf 100755 (executable)
@@ -54,6 +54,8 @@ test_setup() {
         --add-confdir test-root \
         -f "$TESTDIR"/initramfs.root "$KVERSION"
 
+    KVERSION=$(determine_kernel_version "$TESTDIR"/initramfs.root)
+
     dd if=/dev/zero of="$TESTDIR"/root.img bs=200MiB count=1 status=none && sync "$TESTDIR"/root.img
     mkfs.ext4 -q -L dracut -d "$TESTDIR"/dracut.*/initramfs/ "$TESTDIR"/root.img && sync "$TESTDIR"/root.img
 
index 380a78dee5c814912969437d301c3220bc06bdf5..74b4b1a479c839e45dfa117281750b0fd27e896a 100755 (executable)
@@ -232,12 +232,21 @@ test_run() {
 
 test_setup() {
     DRACUT_PATH=${DRACUT_PATH:-/sbin /bin /usr/sbin /usr/bin}
-    export kernel=$KVERSION
     export no_kernel=
-    export srcmods="/lib/modules/$kernel/"
     # Detect lib paths
 
+    "$DRACUT" -N --keep --tmpdir "$TESTDIR" \
+        --add-confdir test-root \
+        -a "url-lib nfs" \
+        -I "ip grep setsid" \
+        -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
+
+    KVERSION=$(determine_kernel_version "$TESTDIR"/initramfs.root)
+    export kernel=$KVERSION
+    export srcmods="/lib/modules/$kernel/"
+
     rm -rf -- "$TESTDIR"/overlay
+
     (
         mkdir -p "$TESTDIR"/server/overlay/source
         # shellcheck disable=SC2030
@@ -300,13 +309,6 @@ test_setup() {
     # Make client root inside server root
     # shellcheck disable=SC2031
     export initdir=$TESTDIR/server/overlay/source/nfs/client
-
-    "$DRACUT" -N --keep --tmpdir "$TESTDIR" \
-        --add-confdir test-root \
-        -a "url-lib nfs" \
-        -I "ip grep setsid" \
-        -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
-
     mkdir -p "$initdir" && mv "$TESTDIR"/dracut.*/initramfs/* "$initdir" && rm -rf "$TESTDIR"/dracut.*
     echo "TEST FETCH FILE" > "$initdir"/root/fetchfile
     cp ./client-init.sh "$initdir"/sbin/init
index ca776df0b075819a2fec5a391aa1a89556e5a2aa..2f4fc2668905b219e2ede869ce9ef3784997ae8e 100644 (file)
@@ -126,6 +126,10 @@ command -v test_cleanup &> /dev/null || test_cleanup() {
     :
 }
 
+determine_kernel_version() {
+    lsinitrd "$1" | grep modules.dep | head -1 | rev | cut -d'/' -f2 | rev
+}
+
 # terminal sequence to set color to a 'success' color (currently: green)
 function SETCOLOR_SUCCESS() { echo -en '\033[0;32m'; }
 # terminal sequence to set color to a 'failure' color (currently: red)