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`).
Jo Zzsi [Sun, 14 Dec 2025 03:06:07 +0000 (22:06 -0500)]
chore: remove default argument to cp
Adding argument processing for arguments that are the default
anyways just adds to cognitive load of reading the code and
a little bit of performance overhead.
--sparse=auto is the default. There is no need to re-specify it.
Jo Zzsi [Sun, 14 Dec 2025 18:08:54 +0000 (13:08 -0500)]
fix(systemd): only install systemd-coredump with systemd-coredump dracut module
systemd-coredump is not meant to be installed "by default" and expected
to be an opt-in binary, which is achieved by adding systemd-coredump
dracut module.
Benjamin Drung [Fri, 12 Dec 2025 21:32:38 +0000 (22:32 +0100)]
refactor: move defining DRACUT_INSTALL to dracut-functions.sh
Functions in `dracut-functions.sh` call `DRACUT_INSTALL`. To make
`dracut-functions.sh` useable on its own, move the code to define
`DRACUT_INSTALL` from `dracut.sh` there.
Brian C. Lane [Wed, 10 Dec 2025 19:35:59 +0000 (11:35 -0800)]
feat(dmsquash-live): allow booting from compressed ostree filesystems
When combined with the ostree module it is possible to boot from a
compressed ostree filesystem, but the root of this has /ostree not /usr
so it fails.
Jo Zzsi [Sun, 14 Dec 2025 20:03:20 +0000 (15:03 -0500)]
ci: limit iscsi testing to Debian/Ubuntu on Daily testsuite
Based on CI test tun observations iscsi tests seems to be more flaky
on Arch, Fedora and openSUSE. Remove these flaky test runs from the CI
and keep Debian/Ubuntu, which seems to be more stable.
Jo Zzsi [Sun, 14 Dec 2025 18:03:35 +0000 (13:03 -0500)]
ci: limit iscsi testing to Debian/Ubuntu
Based on CI test tun observations iscsi tests seems to be more flaky
on Arch and openSUSE. Remove these flaky test runs from the CI and
keep Debian/Ubuntu, which seems to be more stable.
Benjamin Drung [Wed, 26 Nov 2025 00:22:08 +0000 (01:22 +0100)]
fix(dracut): ignore shellcheck SC2329 in addition to SC2317
Shellcheck <= 0.10 complains about SC2317 (info): Command appears to be
unreachable. Check usage (or ignore if invoked indirectly). Shellcheck
0.11 changes this complaint to SC2329 (info): This function is never
invoked. Check usage (or ignored if invoked indirectly).
So ignore shellcheck SC2329 in addition to SC2317 to make both
shellcheck versions happy.
Benjamin Drung [Thu, 11 Dec 2025 20:32:35 +0000 (21:32 +0100)]
feat(dracut): always check DRACUT_INSTALL being executable
If `DRACUT_INSTALL` is set externally (to `valgrind dracut-install` for
example), dracut will skip the check for the dracut-install command.
Better check the first parameter in `DRACUT_INSTALL` being executable
(e.g. check `valgrind` being present when `DRACUT_INSTALL` is set to
`valgrind dracut-install`).
Jo Zzsi [Thu, 6 Nov 2025 12:28:38 +0000 (07:28 -0500)]
feat(Makefile): do not install network-legacy by default
This commit is the next step in the multi year effort to
discourage the usage or network-legacy dracut module.
This commit changes the default build/packaging so that
distributions wish to continue using network-legacy would
have to explicitly opt in to it in the packaging step.
Benjamin Drung [Tue, 2 Dec 2025 15:17:04 +0000 (16:17 +0100)]
ci: run network tests also on arm64
Increase test coverage by also running the network tests on arm64. Since
arm64 is slower than amd64 and test 60 already takes five minutes on
amd64, double the timeout for arm64.
Jo Zzsi [Sat, 22 Nov 2025 22:38:48 +0000 (17:38 -0500)]
chore: set expectation for function compatibility
Set clear boundaries for which functions are maintained for
compatibility with existing dracut modules.
Document the compatibility differences between dracut.sh and
dracut-functions.sh, and move any functions from dracut.sh to
dracut-functions.sh that are clearly required for dracut
module compatibility.
This commit moves all functions from dracut.sh to dracut-functions.sh
that are already documented in man/dracut.modules.7.adoc.
Benjamin Drung [Mon, 1 Dec 2025 15:28:20 +0000 (16:28 +0100)]
ci: use ubuntu:rolling instead of ubuntu:latest
`ubuntu:latest` points to the latest LTS version (currently 24.04) and
`ubuntu:rolling` to the latest release (currently 25.10). Use
`ubuntu:rolling` instead of `ubuntu:latest` consistently everywhere.
systemd-hibernate-resume [1] and systemd-hibernate-resume-generator [2] were
added in systemd-v217 (2014), so the fallback using the custom dracut code to
handle resume is not used with systemd.
perf(resume): do not search cmdline options in /etc/cmdline{,.d}
Both `/etc/cmdline` and `/etc/cmdline.d` are only created in the initrd, they do
not exist in the host, where dracut calls `module-setup.sh` functions, so there
is no need to grep there.
Jo Zzsi [Thu, 27 Nov 2025 13:15:32 +0000 (08:15 -0500)]
ci: explicitly skip tests are not meant to be supported
The motivation of this commit is to not run tests on the CI
that would be skipped. This saves some CI resources and
enables to get back to restore green CI, now that
skipped tests are reported as failures after f120814.
This PR does not change code coverage. This is simply
a different and more efficient way to skip tests on the CI.
Benjamin Drung [Thu, 27 Nov 2025 01:48:26 +0000 (02:48 +0100)]
test: print end of client tests even in failure case
If client tests started and failed with a command failing, the test will
exit and the ERR trap will execute `print_test_result`. But the client
test end will not be printed.
So call `client_test_end` in `print_test_result` to print a client test
end result in case a client test was in progress.
Benjamin Drung [Wed, 26 Nov 2025 15:17:16 +0000 (16:17 +0100)]
test: exit with code 77 if test is skipped
Exiting tests that are skipped with exit code 0 will hide that the test
environment probably miss some tools. That can reduce the test coverage
without anybody noting it.
Therefore exit tests that are skipped with exit code 77. In case tests
are intentionally expected to be skipped, an environment variable could
be introduce to exit with code 0 again.