Nadzeya Hutsko [Mon, 19 Jan 2026 09:57:29 +0000 (10:57 +0100)]
test(DMSQUASH): fix autooverlay test checks the entire root.img
The test searched for the marker string in the entire root.img, but
the string also existed literally in test-init.sh embedded in the
first partition, causing a false positive. Fix by extracting and
searching only the second (overlay) partition.
Nadzeya Hutsko [Mon, 19 Jan 2026 09:59:53 +0000 (10:59 +0100)]
test(DMSQUASH): fix do_live_overlay not being called
The test disk image contained raw rootfs instead of the live
structure (LiveOS/rootfs.img), so FSIMG was empty and do_live_overlay()
was never called. Fix by using the live structure on disk.
Benjamin Drung [Fri, 16 Jan 2026 17:12:11 +0000 (18:12 +0100)]
test: use assertion.sh hook for test-root
The test-root `test-init.sh` script can run test case specific test
assertion if `/assertion.sh` is present.
Use this infrastructure for `TEST-30-DMSQUASH`. This fixes the issue
(found by Nadzeya) that `test-init.sh` tried to read `/proc/cmdline` but
`/proc` was not mounted and the directory did not exist. `test-init.sh`
takes care of mounting `/proc`.
Jo Zzsi [Tue, 13 Jan 2026 17:48:54 +0000 (12:48 -0500)]
feat(dracut): add busybox support for 3cpio and enhanced_cpio
3cpio and enhanced_cpio is already supported with coreutils.
This PR adds support for 3cpio and enhanced_cpio for busybox as well.
busybox stat does not support `file-system` syntax, instead
it supports `-f` syntax only.
Li Tian [Wed, 14 Jan 2026 05:24:36 +0000 (13:24 +0800)]
fix(dracut): remove trailing null characters from SBATs when building UKIs
SBAT of kernel has null character paddings at the end. Using tools
like ukify will display massive amount of '\0' in SBAT. Ukify is
doing ".rstrip('b\x00')" when merging SBATs.
Benjamin Drung [Tue, 13 Jan 2026 14:36:22 +0000 (15:36 +0100)]
test(KERNEL-INSTALL): check kernel-install result
The kernel-install call should create an `initrd` file that the test
will use later in `test_run`. Check that this file has been created to
ease debugging in case of a failure.
Jo Zzsi [Sat, 6 Sep 2025 18:49:40 +0000 (14:49 -0400)]
fix(i18n): remove Gentoo workaround that is no longer needed
Gentoo no longer sets KEYMAP to something like "-u pl2", instead
it is set to "pl12".
This piece of code is part of the very original commit of the i18n
dracut module from 2010 - 87122af
There is no mention of '-u' in the oldest version of the wiki from 2013
https://wiki.gentoo.org/index.php?title=Keyboard_layout_switching&diff=1320347&oldid=16937
Remove this workaround that is no longer used or tested to
make it easier to reason about the code.
Benjamin Drung [Mon, 12 Jan 2026 12:16:25 +0000 (13:16 +0100)]
test: run QEMU with a timeout unless daemonized
Dracut tests might hang. The Dracut CI sets a timeout to kill those
hanging tests, but downstream might not configure something similar.
Run QEMU with a timeout (unless daemonized) to avoid hanging tests
forever.
The slowest tests executions that I have seen on Debian/Ubuntu:
* 33:44 for test 11 (5 client tests) on Ubuntu resolute on armhf
* 101:58 for test 60 (19 client tests) on Debian unstable on ppc64el
* 19:58 for test 70 (3 client tests) on Ubuntu resolute on arm64
* 22:35 for test 71 (4 client tests) on Ubuntu resolute on arm64
* 52:48 for test 72 (8 client tests) Debian unstable on ppc64el
These slow tests take between 5:22 and 6:45 for each client tests on
average (ignoring the setup cost). So set the timeout to 10 minutes as
default.
Jo Zzsi [Sat, 10 Jan 2026 13:53:01 +0000 (08:53 -0500)]
ci: combine omitsystemd x64 and arm64 into one GitHub action
Running tests on arm64 is just as stable as x64, there is
no need to separate them. Combine them into one GitHub
action should make it easier to reason about regressions.
Jo Zzsi [Sat, 10 Jan 2026 13:30:41 +0000 (08:30 -0500)]
ci: combine systemd x64 and arm64 into one GitHub action
Running tests on arm64 is just as stable as x64, there is
no need to separate them. Combine them into one GitHub
action should make it easier to reason about regressions.
Jo Zzsi [Sat, 10 Jan 2026 13:19:49 +0000 (08:19 -0500)]
ci: combine hostonlystrict x64 and arm64 into one GitHub action
Running tests on arm64 is just as stable as x64, there is
no need to separate them. Combine them into one GitHub
action should make it easier to reason about regressions.
Jo Zzsi [Sat, 10 Jan 2026 13:05:25 +0000 (08:05 -0500)]
ci: combine network-manager x64 and arm64 into one GitHub action
Running tests on arm64 is just as stable as x64, there is
no need to separate them. Combine them into one GitHub
action should make it easier to reason about regressions.
Jo Zzsi [Sat, 10 Jan 2026 12:19:44 +0000 (07:19 -0500)]
ci: combine basic x64 and arm64 into one GitHub action
Running tests on arm64 is just as stable as x64, there is
no need to separate them. Combine them into one GitHub
action should make it easier to reason about regressions.
This test aims to run without the `initqueue` module, but the `base` module
depends on it if `$hostonly_cmdline == "yes"` [1]. Although the test ends
successfully, the log shows some errors because `dracut-lib.sh` is not present
if the `base` module cannot be installed:
```
dracut[E]: Module 'base' depends on module 'initqueue', which can't be installed
...
/usr/bin/dracut-cmdline-ask: line 3: /lib/dracut-lib.sh: No such file or directory
[ 2.108191] dracut-cmdline[254]: /usr/bin/dracut-cmdline: line 6: /lib/dracut-lib.sh: No such file or directory
[ 2.129548] dracut-pre-udev[259]: /usr/bin/dracut-pre-udev: line 6: /lib/dracut-lib.sh: No such file or directory
...
[ 3.176822] dracut-pre-pivot[368]: /usr/bin/dracut-pre-pivot: line 7: /lib/dracut-lib.sh: No such file or directory
...
All OK
```
Benjamin Drung [Tue, 6 Jan 2026 13:34:36 +0000 (14:34 +0100)]
feat(dracut): drop unreachable code for dracutbasedir/initdir
`dracut.sh` sets the variables `dracutbasedir` and `initdir`. Then it
creates the `initdir` directory. So checking those variables again can
be dropped.
Follow-up: 4cb4917e1222 ("refactor: fold dracut-init.sh into dracut.sh")
Benjamin Drung [Mon, 5 Jan 2026 23:32:20 +0000 (00:32 +0100)]
fix(dracut): source dracut-functions.sh before calling dwarning
`dracut-functions.sh` sources `dracut-logger.sh` which defines the
`dwarning` function. `dracut.sh` might call `dwarning` before
`dracut-functions.sh` is sourced.
`dracut-functions.sh` calls `find_binary` and `dlog_init` when sourced.
`find_binary` needs `dracutsysrootdir` set and `dlog_init` needs
`stdloglvl`, `sysloglvl`, `kmsgloglvl`, `maxloglvl`, `fileloglvl`,
`logfile`. Move sourcing `dracut-functions.sh` as early as possible, but
after setting those variables.
Follow-up for 8d9887b Fixes: https://bugs.debian.org/1124479
Jo Zzsi [Sat, 20 Dec 2025 18:46:23 +0000 (13:46 -0500)]
chore: move net udev rules to net-lib dracut modules
The net-lib dracut module is designed to be always installed when
networking is enabled in the generated initramfs.
Move networking related udev rules to net-lib dracut modules from the
udev-rules dracut module.
The motivation behind this change is to increase modularity,
stay consistent with other dracut modules and potentially
increase performance when networking is not required in the
initramfs.
Jo Zzsi [Fri, 19 Dec 2025 21:06:06 +0000 (16:06 -0500)]
feat: remove rev_lib_symlinks
rev_lib_symlinks is not used any more by dracut and it is not
a dependency for any of the out-of-tree dracut modules.
`rev_lib_symlinks` function was introduced by a10a141 to be used by
`inst_library`, however `inst_library` no longer uses it
(neither any other function).
It is hard to maintain code that is not documented,
not used and has no test coverage.
Benjamin Drung [Mon, 15 Dec 2025 14:56:33 +0000 (15:56 +0100)]
test: drop root=LABEL=dracut from TEST_KERNEL_CMDLINE
Several tests (for example the NFS or iSCSI tests) set the kernel
cmdline `root=` and therefore overwrite `root=LABEL=dracut` set by
`TEST_KERNEL_CMDLINE`.
Shorten the kernel cmdline and avoid confusion, drop `root=LABEL=dracut`
and specify it only in tests that do not set `root=`.
Benjamin Drung [Fri, 19 Dec 2025 17:51:39 +0000 (18:51 +0100)]
ci: expose /dev/kvm on arm64 as well
Similar to amd64 expose `/dev/kvm` to the arm64 container for faster
QEMU execution.
As of 2025-12-19 the arm64 runners do not provide nested virtualization.
Nested virtualization is possible on AArch64 since Linux 6.16, so it
should be possible to offer even without bare metal instances.
Similar to amd64 expose `/dev/kvm` to the arm64 container for faster
QEMU execution once the runners provide nested virtualization.
Jo Zzsi [Mon, 15 Dec 2025 00:29:08 +0000 (19:29 -0500)]
refactor: move defining inst_rules to dracut-functions.sh
inst_rules is a public interface to dracut modules, move it
to `dracut-functions.sh`.
To make `dracut-functions.sh` useable on its own, move all the dependent
functions to `dracut-functions.sh` but make internal by prepending
their names with _.
Jo Zzsi [Thu, 18 Dec 2025 22:37:04 +0000 (17:37 -0500)]
ci: re-enable running iscsi tests parallel
iscsi tests have been stabilized (based on the CI runs
in the last few days), let's try to open them back
up and re-enable running iscsi tests parallel.
fix(nfs): do not execute logic in nfs hooks if netroot is not nfs
If the nfs module is present in the initrd, it always perform some operations
(mount/umount rpc_pipefs, exec/kill rpcbind, rpc.statd and rpc.idmapd), even in
initrds not specifically created for nfsroot (e.g., in non-hostonly mode).
This can create a conflict with some VMware tools that use the rpc_pipefs
filesystem and can run in the initrd.
TEST-13-SYSROOT calls dracut with `--hostonly` which leads to
`hostonly_cmdline` default to `yes`. This leads to the code path for
"save host_devs which we need bring up" in
`modules.d/80base/module-setup.sh` being executed. In this VM case the
variables are:
Benjamin Drung [Mon, 15 Dec 2025 10:37:23 +0000 (11:37 +0100)]
ci: split install dependencies step from test run step
To ease looking at the test results, split the step that installs the
dependencies step from the step that runs the actual test (in this case
`make syncheck`).