[PATCH v3 0/1] image-postproc: ignore systemd preset failures

34 views
Skip to first unread message

Badrikesh Prusty

unread,
Feb 18, 2026, 11:44:16 PMFeb 18
to isar-...@googlegroups.com, gokhan...@siemens.com, alexander...@siemens.com, Badrikesh Prusty
changes in v3:
* Do not disable pre-population of enabled systemd services during build,
as this is the correct default behavior. Downstream layers can disable
it if needed.
* Ignore failures from systemd preset only.

changes in v2:
* Disable populate-systemd-preset at build time by default due to service
failures observed on some systems.

Badrikesh Prusty (1):
image-postproc: ignore systemd preset failures

meta/classes-recipe/rootfs.bbclass | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--
2.39.5

Badrikesh Prusty

unread,
Feb 18, 2026, 11:44:18 PMFeb 18
to isar-...@googlegroups.com, gokhan...@siemens.com, alexander...@siemens.com, Badrikesh Prusty
Add '|| true' to systemd preset invocation during image postprocessing
to tolerate failures caused by already-masked units.

Signed-off-by: Badrikesh Prusty <badrikes...@siemens.com>
---
meta/classes-recipe/rootfs.bbclass | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meta/classes-recipe/rootfs.bbclass b/meta/classes-recipe/rootfs.bbclass
index 8485b32f..ef3ddb84 100644
--- a/meta/classes-recipe/rootfs.bbclass
+++ b/meta/classes-recipe/rootfs.bbclass
@@ -574,7 +574,7 @@ image_postprocess_populate_systemd_preset() {
--show systemd || echo "" )

if (test "$SYSTEMD_INSTALLED" = "installed"); then
- sudo chroot '${ROOTFSDIR}' systemctl preset-all --preset-mode="enable-only"
+ sudo chroot '${ROOTFSDIR}' systemctl preset-all --preset-mode="enable-only" || true
fi
}

--
2.39.5

MOESSBAUER, Felix

unread,
Feb 19, 2026, 8:36:16 AMFeb 19
to Prusty, Badrikesh, isar-...@googlegroups.com, Heinisch, Alexander, Cetin, Gokhan
On Wed, 2026-02-18 at 23:44 -0500, 'Badrikesh Prusty' via isar-users
wrote:
This is still too coarse. Currently the presetting fails on bullseye
targets with the following error "Failed to preset: Invalid argument.".

While I did not check the root-cause, I'm pretty sure this is a
different error which would be hidden by || true.

Felix

--
Siemens AG
Linux Expert Center
Friedrich-Ludwig-Bauer-Str. 3
85748 Garching, Germany

Prusty, Badrikesh

unread,
Feb 19, 2026, 10:27:04 AMFeb 19
to MOESSBAUER, Felix, isar-...@googlegroups.com, Heinisch, Alexander, Cetin, Gokhan

Hi,

I guess the error of invalid argument is due to invalid preset configs
in /usr/lib/systemd/system-preset/ or the preset files missing in
system-preset/ directory. With my initial check the `preset-all` and
`preset-mode` flags are available since systemd v215.

For masked service failures, I tested this on my systems locally with a
newer version of systemd as well. The command also fails with exit code
1 when running the preset on Debian Trixie and Forky. I’m not sure how
the builds for Trixie continues despite these failures.

Logs:
```
> systemctl --version
systemd 259 (259-1)
+PAM +AUDIT +SELINUX +APPARMOR +IMA +IPE +SMACK +SECCOMP +GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +KMOD +LIBCRYPTSETUP +LIBCRYPTSETUP_PLUGINS +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 +BZIP2 +LZ4 +XZ +ZLIB +ZSTD +BPF_FRAMEWORK +BTF -XKBCOMMON -UTMP +SYSVINIT +LIBARCHIVE
547G ~
> sudo systemctl preset-all --preset-mode="enable-only"
Failed to preset all units: Unit /etc/systemd/system/hibernate.target is masked
547G ~
> echo $?
1

> systemctl --version
systemd 257 (257.9-1~deb13u1)
+PAM +AUDIT +SELINUX +APPARMOR +IMA +IPE +SMACK +SECCOMP +GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBCRYPTSETUP_PLUGINS +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 +BZIP2 +LZ4 +XZ +ZLIB +ZSTD +BPF_FRAMEWORK +BTF -XKBCOMMON -UTMP +SYSVINIT +LIBARCHIVE
847E ~
> sudo systemctl preset-all --preset-mode="enable-only"
Failed to preset all units: Unit /etc/systemd/system/sleep.target is masked
847E ~
> echo $?
1
```

________________________________________
From: Moessbauer, Felix (FT RPD CED OES-DE) <felix.mo...@siemens.com>
Sent: 19 February 2026 19:06
To: Prusty, Badrikesh (FT FDS CES LX PBU 2); isar-...@googlegroups.com
Cc: Heinisch, Alexander (FT RPD CED SES-AT); Çetin, Gökhan (FT D EU TR C&E)
Subject: Re: [PATCH v3 1/1] image-postproc: ignore systemd preset failures

Jan Kiszka

unread,
Feb 19, 2026, 12:52:29 PMFeb 19
to Badrikesh Prusty, isar-...@googlegroups.com, gokhan...@siemens.com, alexander...@siemens.com
Is this series aiming at these new warnings of Isar?

DEBUG: Executing shell function image_postprocess_disable_systemd_firstboot
/proc/ is not mounted. This is not a supported mode of operation. Please fix
your invocation environment to mount /proc/ and /sys/ properly. Proceeding anyway.
Your mileage may vary.
Created symlink '/etc/systemd/system/systemd-firstboot.service' → '/dev/null'.
WARNING: Your image is not configured completely according to systemd-firstboot.
WARNING: It prompted: ""
DEBUG: Shell function image_postprocess_disable_systemd_firstboot finished

Jan

--
Siemens AG, Foundational Technologies
Linux Expert Center

Jan Kiszka

unread,
Feb 19, 2026, 2:10:31 PMFeb 19
to Badrikesh Prusty, isar-...@googlegroups.com, Felix Moessbauer, gokhan...@siemens.com, alexander...@siemens.com
Hmm, no. This seems to be another to-do for Felix' rootless patches. I
was running them, and this warning is gone when going back to vanilla Isar.

MOESSBAUER, Felix

unread,
Feb 20, 2026, 3:21:04 AMFeb 20
to Prusty, Badrikesh, isar-...@googlegroups.com, Kiszka, Jan, Heinisch, Alexander, Cetin, Gokhan
Good catch. We need /proc and /sys mounted, which we currently not do
in this task.

Felix

>
> Jan
>
> --
> Siemens AG, Foundational Technologies
> Linux Expert Center

Badrikesh Prusty

unread,
Apr 27, 2026, 12:18:33 AM (2 days ago) Apr 27
to isar-users
Hi,

Apologies for the delayed response.
It looks like /proc and /sys are already mounted during the beginng of the do_rootfs_postprocess task via rootfs_do_mounts function. Shell function run order:
```
$ grep "DEBUG: Shell" temp/log.do_rootfs_postprocess
DEBUG: Shell function rootfs_do_mounts finished
DEBUG: Shell function rootfs_do_qemu finished

DEBUG: Shell function image_postprocess_disable_systemd_firstboot finished
DEBUG: Shell function image_postprocess_sshd_key_regen finished
DEBUG: Shell function image_postprocess_machine_id finished
DEBUG: Shell function image_postprocess_mark finished
DEBUG: Shell function image_postprocess_configure finished
DEBUG: Shell function generate_sbom finished
DEBUG: Shell function rootfs_postprocess_clean_package_cache finished
DEBUG: Shell function rootfs_postprocess_clean_log_files finished
DEBUG: Shell function rootfs_postprocess_clean_debconf_cache finished
DEBUG: Shell function rootfs_postprocess_clean_pycache finished
DEBUG: Shell function rootfs_postprocess_clean_ldconfig_cache finished
DEBUG: Shell function rootfs_postprocess_clean_tmp finished
DEBUG: Shell function rootfs_generate_manifest finished
DEBUG: Shell function rootfs_export_dpkg_status finished
DEBUG: Shell function rootfs_cleanup_isar_apt finished
DEBUG: Shell function image_postprocess_populate_systemd_preset finished
DEBUG: Shell function image_disable_systemd_networkd finished
DEBUG: Shell function rootfs_do_umounts finished
``` 

Added "ls -l" to list the rootfs directories after do_mounts: (/proc and /sys mounted)

```
lrwxrwxrwx   1 root       root          7 Mar  2 21:50 bin -> usr/bin
drwxr-xr-x   2 root       root       4.0K Apr 23 06:28 boot
-rwxr-xr-x   1 root       root       3.5K Apr 21 11:05 chroot-setup.sh
drwxr-xr-x  15 root       root       3.4K Apr 23 06:27 dev
drwxr-xr-x  58 root       root       4.0K Apr 23 06:28 etc
drwxr-xr-x   3 root       root       4.0K Apr 23 06:28 home
lrwxrwxrwx   1 root       root         29 Apr 23 06:28 initrd.img -> boot/initrd.img-6.12.78-cip19
lrwxrwxrwx   1 root       root         29 Apr 23 06:28 initrd.img.old -> boot/initrd.img-6.12.78-cip19
drwxr-xr-x   5 industrial industrial 4.0K Apr 21 11:05 isar-apt
drwxr-xr-x  11 industrial industrial 4.0K Apr 23 06:28 isar-work
lrwxrwxrwx   1 root       root          7 Mar  2 21:50 lib -> usr/lib
lrwxrwxrwx   1 root       root          9 Mar  2 21:50 lib64 -> usr/lib64
drwxr-xr-x   2 root       root       4.0K Apr 21 11:05 media
drwxr-xr-x   2 root       root       4.0K Apr 21 11:05 mnt
drwxr-xr-x   3 root       root       4.0K Apr 23 06:28 opt
dr-xr-xr-x 813 root       root          0 Apr 23 06:28 proc
drwx------   3 root       root       4.0K Apr 23 06:28 root
drwxr-xr-x   9 root       root       4.0K Apr 23 06:28 run
lrwxrwxrwx   1 root       root          8 Mar  2 21:50 sbin -> usr/sbin
drwxr-xr-x   2 root       root       4.0K Apr 21 11:05 srv
drwxr-xr-x  13 root       root          0 Mar  2 21:50 sys
drwxrwxrwt   2 root       root       4.0K Apr 23 06:28 tmp
drwxr-xr-x  12 root       root       4.0K Apr 21 11:05 usr
drwxr-xr-x  11 root       root       4.0K Apr 21 11:05 var
lrwxrwxrwx   1 root       root         26 Apr 23 06:28 vmlinuz -> boot/vmlinuz-6.12.78-cip19
lrwxrwxrwx   1 root       root         26 Apr 23 06:28 vmlinuz.old -> boot/vmlinuz-6.12.78-cip19
```

Will send a v4 patch with a “Fixes” tag. That should unblock builds for Bookworm or earlier that mask the systemd service.

Many Thanks,
Badrikesh

Badrikesh Prusty

unread,
Apr 27, 2026, 12:22:09 AM (2 days ago) Apr 27
to isar-...@googlegroups.com, felix.mo...@siemens.com, jan.k...@siemens.com, gokhan...@siemens.com, alexander...@siemens.com, Badrikesh Prusty
Add '|| true' to systemd preset invocation during image postprocessing
to tolerate failures caused by already-masked units.

Fixes: 72b88a12 ("classes/image-postproc: Enable systemd units based on systemd presets")

Signed-off-by: Badrikesh Prusty <badrikes...@siemens.com>
---
meta/classes-recipe/rootfs.bbclass | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meta/classes-recipe/rootfs.bbclass b/meta/classes-recipe/rootfs.bbclass
index 8b502a50..adb6c614 100644
--- a/meta/classes-recipe/rootfs.bbclass
+++ b/meta/classes-recipe/rootfs.bbclass
@@ -574,7 +574,7 @@ image_postprocess_populate_systemd_preset() {
--show systemd || echo "" )

if (test "$SYSTEMD_INSTALLED" = "installed"); then
- sudo chroot '${ROOTFSDIR}' systemctl preset-all --preset-mode="enable-only"
+ sudo chroot '${ROOTFSDIR}' systemctl preset-all --preset-mode="enable-only" || true
fi
}

--
2.47.3

Jan Kiszka

unread,
Apr 27, 2026, 5:59:41 AM (2 days ago) Apr 27
to Badrikesh Prusty, isar-...@googlegroups.com, felix.mo...@siemens.com, gokhan...@siemens.com, alexander...@siemens.com
A better pattern than "|| true" is

[ masked ] || systemctl ...

Prusty, Badrikesh

unread,
2:47 AM (1 hour ago) 2:47 AM
to Kiszka, Jan, isar-...@googlegroups.com, MOESSBAUER, Felix, Cetin, Gokhan, Heinisch, Alexander
Hi,

Thanks for the suggestion. Updated as suggested. Link: https://groups.google.com/g/isar-users/c/wojTiSSPfG4


Many thanks,
Badrikesh
> + --preset-mode="enable-only" || true
Reply all
Reply to author
Forward
0 new messages