]> git.ipfire.org Git - thirdparty/dracut-ng.git/log
thirdparty/dracut-ng.git
5 days agofeat: rename rd.overlayfs.readonly to rd.overlay.readonly
Benjamin Drung [Sat, 24 Jan 2026 01:08:56 +0000 (02:08 +0100)] 
feat: rename rd.overlayfs.readonly to rd.overlay.readonly

Commit b77ae7eb8523da696fcb0f48a747ac22bdc9eb31 renamed
`rd.live.overlay.readonly` to `rd.overlayfs.readonly`. Unify the overlay
parameters into the `rd.overlay` namespace. There is no backward
compatibility support needed for `rd.overlayfs.readonly` since it hasn't
been part of a Dracut release.

5 days agochore: use full URL as reference for fixed bugs
Benjamin Drung [Sat, 24 Jan 2026 17:11:52 +0000 (18:11 +0100)] 
chore: use full URL as reference for fixed bugs

Use full URL as reference for fixed bugs. Otherwise the correct bug will
be lost in case the project is renamed or forked.

5 days agochore: move Fixes further up
Benjamin Drung [Sat, 24 Jan 2026 17:10:24 +0000 (18:10 +0100)] 
chore: move Fixes further up

Move `Fixes` further up so that the checklist is always at the end.

5 days agochore: hide template text in HTML comment
Benjamin Drung [Sat, 24 Jan 2026 17:01:16 +0000 (18:01 +0100)] 
chore: hide template text in HTML comment

Hide the template text in HTML comment. This will prevent having the
text displayed in case the submitter does not replace it.

5 days agochore: use level 3 heading for pull request checklist
Benjamin Drung [Sat, 24 Jan 2026 16:57:16 +0000 (17:57 +0100)] 
chore: use level 3 heading for pull request checklist

The size of the `Checklist` heading is too big.

5 days agoci(busybox): install more non-busybox binaries
Jo Zzsi [Sat, 24 Jan 2026 23:20:54 +0000 (18:20 -0500)] 
ci(busybox): install more non-busybox binaries

Redesign the way the busybox container is computed to make it
easier to maintain and eliminate the need to install additional
alpine packages later on.

The new approach inherits from the "regular" alpine dracut container
and replaces all GNU coreutils and GNU util-linux binaries with
busybox binaries.

This PR is reusing Dockerfile-alpine and have an OPTION variable to
prioritize busybox.

6 days agoci: rename alpine-busybox:edge to alpine:busybox-edge
Benjamin Drung [Sat, 24 Jan 2026 23:58:06 +0000 (00:58 +0100)] 
ci: rename alpine-busybox:edge to alpine:busybox-edge

Move busybox from the image name to the tag. That way all alpine images
can be found on https://github.com/dracut-ng/dracut-ng/pkgs/container/alpine

6 days agorefactor(run-qemu): group serial and log file handling
Benjamin Drung [Sat, 24 Jan 2026 16:53:50 +0000 (17:53 +0100)] 
refactor(run-qemu): group serial and log file handling

Configuring `-serial` to write to `stdout` and writing to the a QEMU log
file belongs together.

6 days agotest: use check_qemu_log instead of test marker.img
Benjamin Drung [Fri, 23 Jan 2026 21:24:10 +0000 (22:24 +0100)] 
test: use check_qemu_log instead of test marker.img

Simplify the test code by reading the QEMU log instead of requiring to
write to a `marker.img` inside the VM.

6 days agofeat(dracut): allow hostonly mode if /sys /proc or /run is missing
Jo Zzsi [Fri, 9 Jan 2026 10:58:32 +0000 (05:58 -0500)] 
feat(dracut): allow hostonly mode if /sys /proc or /run is missing

Missing /sys, /proc, or /run no longer forces non-hostonly mode.
Hostonly initramfs generation still requires /dev to be mounted and
continues to work in chroot environments where these filesystems may
be absent.

If /sys is missing, dracut emits a warning but does not fall back to
non-hostonly mode. Hostonly generation should not depend on /sys,
/proc, or /run being mounted.

6 days agochore: remove Changes header from the tempate
Jo Zzsi [Sun, 18 Jan 2026 22:03:49 +0000 (17:03 -0500)] 
chore: remove Changes header from the tempate

Remove Changes header from the tempate to make it easier to
create PRs.

6 days agotest: fix run-qemu to create a log file even with busybox
Benjamin Drung [Sat, 24 Jan 2026 13:12:37 +0000 (14:12 +0100)] 
test: fix run-qemu to create a log file even with busybox

Busybox timeout does not support `--foregroud` and therefore the tests
are run without a timeout when using busybox (for example on
alpine-busybox:edge). The code path for writing to `QEMU_LOGFILE` was
also skipped in this case.

Move checking the condition for writing to a log file into a separate
if-condition.

Fixes: e794ed6b14cf ("test: let run-qemu create a log file")
7 days agofeat: warn in case 3cpio is present but not suitable
Benjamin Drung [Fri, 23 Jan 2026 21:59:26 +0000 (22:59 +0100)] 
feat: warn in case 3cpio is present but not suitable

In case the 3cpio call fails, dracut will silently fall back to cpio.
This makes debugging harder.

So print a warning in case calling 3cpio fails. Print an info in case
3cpio does not support `--create`.

See also https://bugs.debian.org/1126301

7 days agoci(debian): do not install cpio if 3cpio is installed
Benjamin Drung [Fri, 23 Jan 2026 21:52:04 +0000 (22:52 +0100)] 
ci(debian): do not install cpio if 3cpio is installed

Dracut either needs 3cpio or cpio, but not both. So do not install cpio
in case 3cpio is installed.

7 days agotest: let run-qemu create a log file
Benjamin Drung [Fri, 23 Jan 2026 20:44:03 +0000 (21:44 +0100)] 
test: let run-qemu create a log file

Let `run-qemu` create a log file if `QEMU_LOGFILE` is set and the
QEMU is not run in `-daemonize` mode.

7 days agorefactor(test): move check_qemu_log to test-functions
Benjamin Drung [Fri, 23 Jan 2026 17:17:53 +0000 (18:17 +0100)] 
refactor(test): move check_qemu_log to test-functions

Move `check_log` to `test/test-functions`, name it `check_qemu_log`, and
do not require to specify the success message (which will be the same
for all tests).

7 days agoci: wrap long name lines
Benjamin Drung [Fri, 23 Jan 2026 16:41:25 +0000 (17:41 +0100)] 
ci: wrap long name lines

Wrap the long name lines to make yamllint happy.

7 days agoci: wrap long run lines
Benjamin Drung [Fri, 23 Jan 2026 16:38:36 +0000 (17:38 +0100)] 
ci: wrap long run lines

Wrap the long run lines to make yamllint happy.

7 days agoci: wrap long concurrency group lines
Benjamin Drung [Fri, 23 Jan 2026 16:32:44 +0000 (17:32 +0100)] 
ci: wrap long concurrency group lines

Wrap the long concurrency group lines to make yamllint happy.

7 days agoci: use 4-space indent for YAML files
Benjamin Drung [Fri, 23 Jan 2026 13:19:11 +0000 (14:19 +0100)] 
ci: use 4-space indent for YAML files

Some YAML files use 2-space indent and others use 4-space indent. Use
4-space indent for all YAML files. Use this one-liner to convert them:

```
perl -i -pe 's/^((?: {2})+)/"    " x (length($1) \/ 2)/e' antora-playbook.yml \
    doc_site/antora.yml doc_site/supplemental-ui/ui.yml \
    .github/{labeler,dependabot}.yml .github/workflows/{codeql,lint,release,publish,pr}.yml
```

Plus some manual clean-up afterwards.

7 days agoci: use common multi-arch container tags
Benjamin Drung [Fri, 23 Jan 2026 13:33:43 +0000 (14:33 +0100)] 
ci: use common multi-arch container tags

Commit 5dd694a4834ec7643b02d04d73f87d5c760b7ede created multi-arch
container tag. Use those in the CI jobs to simplify the jobs.

7 days agoci: test UEFI generation on Alpine
Jo Zzsi [Sat, 17 Jan 2026 10:11:45 +0000 (05:11 -0500)] 
ci: test UEFI generation on Alpine

Strengthen determine_kernel_version (this function only used
during testing) to look for files ending with modules.dep
to filter out entries like e.g. modules.dep.bin.

8 days agoci(Alpine): vmlinuz workaround
Jo Zzsi [Fri, 23 Jan 2026 00:32:16 +0000 (19:32 -0500)] 
ci(Alpine): vmlinuz workaround

Re-introduce vmlinuz workaround for the Alpine CI container to
enable UKI testing.

Partial revert of d9497f3 .

8 days agofeat: rename rd.live.overlay to rd.overlay
Nadzeya Hutsko [Mon, 19 Jan 2026 20:24:07 +0000 (21:24 +0100)] 
feat: rename rd.live.overlay to rd.overlay

The overlay functionality can be used with both dmsquash-live and
overlayfs modules, and is not limited to live images. This change
improves naming of command line options with better namespace scoping.

Renames:
- rd.live.overlay -> rd.overlay
- rd.live.overlay.reset -> rd.overlay.reset

Backward compatibility is maintained through deprecation flags.

8 days agofix(test/DMSQUASH): zero overlay partition on reset
Nadzeya Hutsko [Thu, 22 Jan 2026 11:54:13 +0000 (12:54 +0100)] 
fix(test/DMSQUASH): zero overlay partition on reset

The reset_overlay_partition function was not fully clearing
the overlay partition. Delete the partition from the
partition table and zero out the disk region to ensure a
clean state between test runs.

8 days agorefactor(test/DMSQUASH): extract autooverlay helpers for reuse
Nadzeya Hutsko [Thu, 22 Jan 2026 11:50:50 +0000 (12:50 +0100)] 
refactor(test/DMSQUASH): extract autooverlay helpers for reuse

Extract check_autooverlay_marker() and reset_overlay_partition() helper
functions to avoid code duplication when testing multiple autooverlay
scenarios.

8 days agodocs(systemd-pcrphase): mention the new binary name
Benjamin Drung [Thu, 22 Jan 2026 13:04:14 +0000 (14:04 +0100)] 
docs(systemd-pcrphase): mention the new binary name

Clarify the comment which of the two names is the new one.

8 days agofix(dmsquash-live-autooverlay): re-read partition table after creation
Nadzeya Hutsko [Thu, 22 Jan 2026 12:03:28 +0000 (13:03 +0100)] 
fix(dmsquash-live-autooverlay): re-read partition table after creation

After parted creates the overlay partition, the kernel's in-memory
partition table is not automatically updated. This causes mkfs to fail
with "The file /dev/sdX does not exist" on some systems.

Add blockdev --rereadpt to force the kernel to re-read the partition
table before attempting to create the filesystem.

8 days agofix(systemd-pcrphase): do not print an error if an optional binary is not found
Antonio Alvarez Feijoo [Thu, 22 Jan 2026 10:04:31 +0000 (11:04 +0100)] 
fix(systemd-pcrphase): do not print an error if an optional binary is not found

Fixes #2094

8 days agofeat(lvm): match host lvm recovery installation
Jo Zzsi [Sun, 18 Jan 2026 14:51:44 +0000 (09:51 -0500)] 
feat(lvm): match host lvm recovery installation

These LVM tools are just symlinks to binaries that are already installed
inside the initramfs. Dracut might as well install these symlinks to
avoid people looking for them during a potentially stressful recovery time.

9 days agoci: create common multi-arch container tag
Benjamin Drung [Tue, 20 Jan 2026 11:41:28 +0000 (12:41 +0100)] 
ci: create common multi-arch container tag

The same container tag can be used for images with different
architectures. That is the case for most common images (like
`ubuntu:devel`).

9 days agofix(Makefile): broken symlink in dracut config examples
Hongxu Jia [Thu, 22 May 2025 10:07:27 +0000 (18:07 +0800)] 
fix(Makefile): broken symlink in dracut config examples

Due to commit [1], it installs dracut config examples under /usr.
But while enable_test=no, the symlink of test in dracut config is broken
```
root@qemux86-64:~# ls /usr/lib/dracut/dracut.conf.d/test*  -ahl
lrwxrwxrwx 1 root root 27 Apr  5  2011 /usr/lib/dracut/dracut.conf.d/test -> ../test/dracut.conf.d/test/
lrwxrwxrwx 1 root root 36 Apr  5  2011 /usr/lib/dracut/dracut.conf.d/test-makeroot -> ../test/dracut.conf.d/test-makeroot/
lrwxrwxrwx 1 root root 31 Apr  5  2011 /usr/lib/dracut/dracut.conf.d/test-root -> ../test/dracut.conf.d/test-root
root@qemux86-64:~# realpath /usr/lib/dracut/dracut.conf.d/test*
realpath: /usr/lib/dracut/dracut.conf.d/test: No such file or directory
realpath: /usr/lib/dracut/dracut.conf.d/test-makeroot: No such file or directory
realpath: /usr/lib/dracut/dracut.conf.d/test-root: No such file or directory
```

This commit cleans up test symlink if enable_test=no

[1] https://github.com/dracut-ng/dracut-ng/commit/0d369e3e30935dffe48dfff1e90463868e7f804a

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
9 days agofeat(livenet): support root=http:* as alias for root=live:http:*
Benjamin Drung [Tue, 20 Jan 2026 13:45:17 +0000 (14:45 +0100)] 
feat(livenet): support root=http:* as alias for root=live:http:*

For compatibility with `cloud-initramfs-rooturl` support `root=http:*`
as alias for `root=live:http:*` and `root=https:*` as alias for
`root=live:https:*`.

9 days agofeat: move DRACUT_VERSION from dracut-version.sh into dracut.sh
Benjamin Drung [Tue, 6 Jan 2026 14:39:49 +0000 (15:39 +0100)] 
feat: move DRACUT_VERSION from dracut-version.sh into dracut.sh

`dracut-version.sh` is only sourced by `dracut.sh`. So move defining
`DRACUT_VERSION` into `dracut.sh` and remove `dracut-version.sh`. This
allows removing code for sourcing this file.

9 days agoci(busybox): disable DMSQUASH
Jo Zzsi [Wed, 21 Jan 2026 01:29:31 +0000 (20:29 -0500)] 
ci(busybox): disable DMSQUASH

Disable running DMSQUASH test without coreutils until a proper fix is
available.

Follow-up to 362ea81 .

10 days agoci: sort container job configs by tag name
Benjamin Drung [Tue, 20 Jan 2026 13:35:20 +0000 (14:35 +0100)] 
ci: sort container job configs by tag name

Sort container job configs by tag name because the tag name is used as
job name.

10 days agofeat: add yamllint config
Benjamin Drung [Tue, 20 Jan 2026 13:29:22 +0000 (14:29 +0100)] 
feat: add yamllint config

Add a yamllint config allowing a line length of 120 characters for the
beginning. The next steps would wrap the too long lines and add a linter
job running `yamllint .`.

10 days agoci: use container tag name as job name
Benjamin Drung [Tue, 20 Jan 2026 13:22:26 +0000 (14:22 +0100)] 
ci: use container tag name as job name

Use the full container tag name as job name (e. g. `ubuntu:devel-amd`).
This is shorter and easy to read.

10 days agoci: remove duplicate ubuntu image jobs from container-extra
Benjamin Drung [Tue, 20 Jan 2026 13:13:04 +0000 (14:13 +0100)] 
ci: remove duplicate ubuntu image jobs from container-extra

The `ubuntu:devel` and `ubuntu:rolling` container images are already
built by the container job. There is no need to build them on the
container-extra job as well.

10 days agotest: add test case for booting root=live:<URL>
Benjamin Drung [Mon, 19 Jan 2026 18:36:42 +0000 (19:36 +0100)] 
test: add test case for booting root=live:<URL>

Add a test case for booting `root=live:<URL>` before adding new features
to the `livenet` Dracut module. Numbering the test is tricky, because it
uses live boot (range 30-39) and basic networking (range 60-69).

10 days agoci: only publish to GitHub Pages for dracut-ng repo
Benjamin Drung [Tue, 20 Jan 2026 11:31:09 +0000 (12:31 +0100)] 
ci: only publish to GitHub Pages for dracut-ng repo

Forking dracut-ng will also fork the CI configs and pushes to the forked
main branch will trigger the publish job which will fail (unless pages
are explicitly enabled).

So only publish to GitHub Pages when triggered from the dracut-ng
repository.

10 days agoci: also push tags when container jobs were triggered manually
Benjamin Drung [Tue, 20 Jan 2026 11:01:22 +0000 (12:01 +0100)] 
ci: also push tags when container jobs were triggered manually

The CI jobs for building the containers might be triggered manually. The
event name is `workflow_dispatch` then and the tag update would not be
pushed. That defeats the purpose of running those jobs manually.

10 days agoci: name container jobs after CI name
Benjamin Drung [Tue, 20 Jan 2026 10:25:26 +0000 (11:25 +0100)] 
ci: name container jobs after CI name

Name the container jobs after their CI name instead of `amd64` since
they also build `arm64` images.

11 days agochore(gitignore): ignore html files in test directory
Benjamin Drung [Mon, 19 Jan 2026 18:47:15 +0000 (19:47 +0100)] 
chore(gitignore): ignore html files in test directory

I sometimes convert the test log file to HTML using `ansi2html` to make
the logs nicer to read. Ignore those HTML files in `.gitignore` as well.

11 days agochore(gitignore): sort .gitignore file
Benjamin Drung [Mon, 19 Jan 2026 18:46:54 +0000 (19:46 +0100)] 
chore(gitignore): sort .gitignore file

```
LANG=C sort .gitignore | sponge .gitignore
```

11 days agoci: explicitly install python3 in containers
Benjamin Drung [Mon, 19 Jan 2026 17:13:23 +0000 (18:13 +0100)] 
ci: explicitly install python3 in containers

Explicitly install python3 in the containers to allow testing the
`livenet` module using Python 3 `http.server` as HTTP server. Many of
the containers already have Python installed as dependency.

11 days agochore(gitignore): ignore .testdir and test logs
Benjamin Drung [Mon, 19 Jan 2026 12:14:28 +0000 (13:14 +0100)] 
chore(gitignore): ignore .testdir and test logs

`test/test-functions` creates a `.testdir` file with `-$TEST_RUN_ID` as
suffix. It also create log files named `server.log` and
`test${TEST_RUN_ID:+-$TEST_RUN_ID}.log`.

Make the `.gitignore` pattern match those files.

11 days agotest(DMSQUASH): fix autooverlay test checks the entire root.img
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.

Fixes: #2054
11 days agotest(DMSQUASH): fix do_live_overlay not being called
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.

11 days agotest(DMSQUASH): add sync after writing the marker
Nadzeya Hutsko [Mon, 19 Jan 2026 09:59:44 +0000 (10:59 +0100)] 
test(DMSQUASH): add sync after writing the marker

The change is done to ensure it is flushed to the persist
partition before shutdown.

12 days agochore: update obsolete comments and documentation
Jo Zzsi [Sat, 17 Jan 2026 10:35:50 +0000 (05:35 -0500)] 
chore: update obsolete comments and documentation

Change the comment and make it more generic.

12 days agoci: rename network-systemd job to match the derauct module name
Jo Zzsi [Sun, 18 Jan 2026 21:57:05 +0000 (16:57 -0500)] 
ci: rename network-systemd job to match the derauct module name

network-systemd is testing the systemd-networkd dracut module.
Let us use the dracut module name as the name of the job.

2 weeks agochore(dracut): call the public determine_kernel_image function
Jo Zzsi [Fri, 16 Jan 2026 13:02:21 +0000 (08:02 -0500)] 
chore(dracut): call the public determine_kernel_image function

Instead of repeating and reimplementing the function to find
kernel image, call the public function.

Follow-up to df93355 .

2 weeks agofeat(dracut): expose determine_kernel_image as a public function
Jo Zzsi [Thu, 15 Jan 2026 22:52:35 +0000 (17:52 -0500)] 
feat(dracut): expose determine_kernel_image as a public function

Expose determine_kernel_image as a public and documented helper
function.

2 weeks agotest(DRACUT-CPIO): correct test_check condition
Jo Zzsi [Fri, 16 Jan 2026 12:15:03 +0000 (07:15 -0500)] 
test(DRACUT-CPIO): correct test_check condition

Partial revert to correct test_check condition.

The current code checks if dracut-cpio is found in PATH and skips
the test in case dracut-cpio is found.

Follow-up to b687756 .

2 weeks agotest: use assertion.sh hook for test-root
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`.

2 weeks agofix(systemd-networkd): ensure zzzz-dracut-default.network cleanup
Jo Zzsi [Thu, 8 Jan 2026 16:01:47 +0000 (11:01 -0500)] 
fix(systemd-networkd): ensure zzzz-dracut-default.network cleanup

zzzz-dracut-default.network should be only installed when
systemd-network-generator does not generate any files in
files in /run/systemd/network .

Place dracut-default.network in /usr/lib/dracut/
and do not change /usr as part of managing .network
files in initramfs.

Follow-up to 523c9b0 .

2 weeks agofeat(dracut): add busybox support for 3cpio and enhanced_cpio
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.

2 weeks agotest(DMSQUASH): use test_marker_check
Benjamin Drung [Thu, 15 Jan 2026 12:55:50 +0000 (13:55 +0100)] 
test(DMSQUASH): use test_marker_check

Use `test_marker_check` to shorten the test case code.

2 weeks agoci: replace non-standard PLATFORM with standard TARGETARCH
Jo Zzsi [Thu, 15 Jan 2026 13:45:18 +0000 (08:45 -0500)] 
ci: replace non-standard PLATFORM with standard TARGETARCH

The simple goal of this PR is to remove unnecessary variable
to make the code more readable and maintainable.

2 weeks agochore(dracut): remove support for 255 error for is_qemu_virtualized
Jo Zzsi [Wed, 14 Jan 2026 12:54:04 +0000 (07:54 -0500)] 
chore(dracut): remove support for 255 error for is_qemu_virtualized

Treat the return value as a boolean and not an integer, to simplify
the API before potentially exposing this API as a public API.

2 weeks agoci(Alpine): add support for EFI stub and ukify
Jo Zzsi [Wed, 14 Jan 2026 03:50:22 +0000 (22:50 -0500)] 
ci(Alpine): add support for EFI stub and ukify

alpine:edge has support for EFI stub and ukify. Adding these
packages would allow the projuct to increase CI test coverage.

2 weeks agofix(dracut): remove trailing null characters from SBATs when building UKIs
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.

2 weeks agotest(KERNEL-INSTALL): check kernel-install result
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.

2 weeks agotest: drop duplicate check for -daemonize
Benjamin Drung [Tue, 13 Jan 2026 18:29:54 +0000 (19:29 +0100)] 
test: drop duplicate check for -daemonize

`run-qemu` checks twice for the `-daemonize` parameter.

Fixes: a3f73298f287 ("testsuite: refactor qemu options")
2 weeks agofix(i18n): remove Gentoo workaround that is no longer needed
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.

2 weeks agorefactor: move defining inst_sysusers to dracut-functions.sh
Jo Zzsi [Fri, 9 Jan 2026 14:26:48 +0000 (09:26 -0500)] 
refactor: move defining inst_sysusers to dracut-functions.sh

inst_sysusers is a public interface to dracut modules, move it
to `dracut-functions.sh`.

Document inst_sysusers in the man page as from now on it is a
public interface.

2 weeks agotest: run QEMU with a timeout unless daemonized
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.

Fixes: https://bugs.debian.org/1121884
2 weeks agoci: unskip FULL-SYSTEMD on containers where it is passing
Jo Zzsi [Sat, 10 Jan 2026 22:37:02 +0000 (17:37 -0500)] 
ci: unskip FULL-SYSTEMD on containers where it is passing

This test is now passing on arm openSUSE and gentoo. Skip it.

2 weeks agotest(FULL-SYSTEMD): do not depend on -smbios qemu feature
Jo Zzsi [Sat, 10 Jan 2026 21:39:23 +0000 (16:39 -0500)] 
test(FULL-SYSTEMD): do not depend on -smbios qemu feature

smbios support is architecture dependent and not widely supported.

Using smbios when available does not increase the test coverage
for dracut significantly.

Partial revert of 817dd6125 .

2 weeks agoci(basic): correct syntax to exclude several tests
Jo Zzsi [Sun, 11 Jan 2026 00:49:31 +0000 (19:49 -0500)] 
ci(basic): correct syntax to exclude several tests

Make sure tests 20 and 26 are excluded as intended by fixing
GitHub Action syntax.

Follow-up to 1798677 .

2 weeks agoci: skip running failing tesst due to 2021
Jo Zzsi [Sat, 10 Jan 2026 21:07:05 +0000 (16:07 -0500)] 
ci: skip running failing tesst due to 2021

Temporary skip running tests until
https://github.com/dracut-ng/dracut-ng/issues/2021
is resolved.

Follow-up to 1798677 .

2 weeks agoci: simplify GitHub Action job naming
Jo Zzsi [Sat, 10 Jan 2026 20:33:34 +0000 (15:33 -0500)] 
ci: simplify GitHub Action job naming

network-manager dracut module is the default networking provider.

Remove forcing network-manager networking and simplify naming.

2 weeks agoci: skip running failing tesst due to 2021
Jo Zzsi [Sat, 10 Jan 2026 19:33:29 +0000 (14:33 -0500)] 
ci: skip running failing tesst due to 2021

Temporary skip running tests until
https://github.com/dracut-ng/dracut-ng/issues/2021
is resolved.

2 weeks agoci: skip running tests that are failing due to 1988
Jo Zzsi [Sat, 10 Jan 2026 18:18:33 +0000 (13:18 -0500)] 
ci: skip running tests that are failing due to 1988

Temporary skip running tests until
https://github.com/dracut-ng/dracut-ng/issues/1988
is resolved.

2 weeks agoci: run network-systemd tests on arm as well
Jo Zzsi [Sat, 10 Jan 2026 15:38:10 +0000 (10:38 -0500)] 
ci: run network-systemd tests on arm as well

Add arm to the test matrix for network-systemd.

2 weeks agoci: move mkosi testing into daily testsuite
Jo Zzsi [Sat, 10 Jan 2026 17:00:23 +0000 (12:00 -0500)] 
ci: move mkosi testing into daily testsuite

mkosi is not default/native in any of the test containers and it
does not seem to be stable.

This PR moves running mkosi reference test into
daily testing so that the dedicated GitHub Action can be just
disabled without a PR.

2 weeks agoci(openSUSE): container build fix
Jo Zzsi [Sat, 10 Jan 2026 17:30:14 +0000 (12:30 -0500)] 
ci(openSUSE): container build fix

ruby3.4-rubygem-asciidoctor is now called ruby4.0-rubygem-asciidoctor.

2 weeks agoci: run network-legacy tests on arm as well
Jo Zzsi [Sat, 10 Jan 2026 14:56:14 +0000 (09:56 -0500)] 
ci: run network-legacy tests on arm as well

Add arm to the test matrix for network-legacy.

2 weeks agoci: remove leftover and duplicated GitHub Action
Jo Zzsi [Sat, 10 Jan 2026 15:42:39 +0000 (10:42 -0500)] 
ci: remove leftover and duplicated GitHub Action

daily-systemd-arm64 GitHub Action is no longer needed as it is
covered by daily-systemd.

Follow-up to a43bd7a .

2 weeks agoci: fix GitHub Action syntax
Jo Zzsi [Sat, 10 Jan 2026 14:22:20 +0000 (09:22 -0500)] 
ci: fix GitHub Action syntax

excluding architectures requires {runner: 'ubuntu-24.04', tag: 'amd'} .

2 weeks agoci: combine omitsystemd x64 and arm64 into one GitHub action
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.

2 weeks agoci: combine systemd x64 and arm64 into one GitHub action
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.

2 weeks agoci: combine hostonlystrict x64 and arm64 into one GitHub action
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.

2 weeks agoci: combine network-manager x64 and arm64 into one GitHub action
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.

2 weeks agoci: combine basic x64 and arm64 into one GitHub action
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.

2 weeks agoci(busybox): make test 80 compatible with busybox
Jo Zzsi [Sat, 10 Jan 2026 11:43:35 +0000 (06:43 -0500)] 
ci(busybox): make test 80 compatible with busybox

BusyBox ln does not support the -r argument. This argument
can be removed from the test suite without losing test coverage.

Now that the test runs with busybox, add it to the busybox daily
testsuite.

2 weeks agoci(busybox): make test 30 compatible with busybox
Jo Zzsi [Sat, 10 Jan 2026 11:36:30 +0000 (06:36 -0500)] 
ci(busybox): make test 30 compatible with busybox

busybox dd understands bs=1M but it does not understands bs=1MiB.

Now that the test runs with busybox, add it to the busybox daily
testsuite.

2 weeks agoci: run TEST_CONTAINER_COMMAND before configure runs
Jo Zzsi [Sat, 10 Jan 2026 11:21:43 +0000 (06:21 -0500)] 
ci: run TEST_CONTAINER_COMMAND before configure runs

Move running TEST_CONTAINER_COMMAND during CI tests
earlier so that packages can be installed/uninstalled
before configure runs.

2 weeks agoci: daily busybox tests
Jo Zzsi [Sat, 10 Jan 2026 10:48:37 +0000 (05:48 -0500)] 
ci: daily busybox tests

Add a GitHub action to run and pass as many of the
existing tests as possible without installing coreutils.

3 weeks agoci: modularize GitHub Actions for daily tests
Jo Zzsi [Fri, 9 Jan 2026 13:23:32 +0000 (08:23 -0500)] 
ci: modularize GitHub Actions for daily tests

Move each job into its own GA yaml file so that each job
can be individually enabled/disabled via the GitHub web interface.

This change prevents triggering all test runs every time
the monolithic yaml file is modified.

3 weeks agotest(KERNEL-INSTALL): layout and uki_generator set must be set on Gentoo
Jo Zzsi [Fri, 9 Jan 2026 16:13:03 +0000 (11:13 -0500)] 
test(KERNEL-INSTALL): layout and uki_generator set must be set on Gentoo

Set layout, initrd_generator, and uki_generator for kernel-install.

Fixes https://github.com/dracut-ng/dracut-ng/issues/2018 .

3 weeks agoci(alpine-busybox): grep is no longer required
Jo Zzsi [Fri, 9 Jan 2026 12:51:49 +0000 (07:51 -0500)] 
ci(alpine-busybox): grep is no longer required

busybox grep is supports all the required functionality and
command line arguments to pass dracut's basic test.

Installing GNU grep on top of busybox is no longer required.

Follow-up to 2de5129 .

3 weeks agoci: verify marker images consistently
Jo Zzsi [Fri, 9 Jan 2026 10:32:28 +0000 (05:32 -0500)] 
ci: verify marker images consistently

Use grep -F -a to check marker images after test runs.

This affects test evaluation only and does not modify dracut
core logic.

3 weeks agoci: add a test run for basic tests using busybox
Jo Zzsi [Wed, 7 Jan 2026 22:34:48 +0000 (17:34 -0500)] 
ci: add a test run for basic tests using busybox

This test prevents regressions when running basic tests on
Alpine with busybox.

3 weeks agofix(dracut): use proper dracut logging when possible
Jo Zzsi [Thu, 8 Jan 2026 13:35:35 +0000 (08:35 -0500)] 
fix(dracut): use proper dracut logging when possible

The recent restructuring of the code allows using proper dracut logging
in more areas of the code.

Follow-up to 8552a0f .

3 weeks agoci(alpine-busybox): alpine container with busybox
Jo Zzsi [Thu, 8 Jan 2026 02:20:54 +0000 (21:20 -0500)] 
ci(alpine-busybox): alpine container with busybox

The coreutils binaries are not installed and only busybox
binaries are available.

This container is meant to prevent regressions when running
basic test with busybox.

3 weeks agorefactor(dracut-install): simplify boolean evaluation
Benjamin Drung [Wed, 7 Jan 2026 23:14:39 +0000 (00:14 +0100)] 
refactor(dracut-install): simplify boolean evaluation

Checking a boolean with `== false` can be simplified to use the `not`
operator.

3 weeks agotest: use syntax compatible with busybox implementation
Jo Zzsi [Wed, 7 Jan 2026 20:09:35 +0000 (15:09 -0500)] 
test: use syntax compatible with busybox implementation

busybox du only support `-s` for summary and `-b` for block-size.

Follow-up to d4af288f0 .

3 weeks agoci: drop alpine:latest and run tests only on alpine:edge
Jo Zzsi [Wed, 7 Jan 2026 20:44:22 +0000 (15:44 -0500)] 
ci: drop alpine:latest and run tests only on alpine:edge

alpine:edge has been very stable CI environment for this project,
so let's promote it to the main CI and at the same time
let's retire alpine:latest.

The goal of this PR is to reduce time and computation on the CI
without loosing significant test coverage.