| Message ID | 20260408195024.1874335-2-rs@ti.com |
|---|---|
| State | Changes Requested |
| Headers | show |
| Series | systemd: fix unmerged-bin tainted message | expand |
On Wed, 2026-04-08 at 14:50 -0500, Randolph Sapp via lists.openembedded.org wrote: > From: Randolph Sapp <rs@ti.com> > > Systemd prefers both /bin and /sbin to link to /usr/bin. If this is not > the case it reports that the system is tainted in systemctl status. > > Add a link from /usr/sbin to /usr/bin to prevent anything from being > excluded from the merged bin directory. This mimics the current merged > bin directory structure of Arch Linux [1]. > > Update the systemd recipe to prevent creating a duplicate link when > sbinmerge is enabled. > > This check was added to systemd back in 2024 [2]. > > [1] https://gitlab.archlinux.org/archlinux/packaging/packages/filesystem/-/blob/main/PKGBUILD > [2] https://github.com/systemd/systemd/commit/844863c61e7b501097da84a1e4d1e4a6aa6d9f0d > > Signed-off-by: Randolph Sapp <rs@ti.com> > --- > > I feel like this is overloading the "usrmerge" distro feature somewhat. On the > other hand, this parameter was added for systemd support, and systemd considers > all of this to result in an unmerged-bin warning. I figure it's kind of fine. > > Open to opinions here, as we could also just add a "sbinmerge" distro feature. > Then again, what would be the expected behavior when usrmerge is disabled? Would > /usr/sbin just point to /usr/bin and /sbin to /bin then? These are good questions. It feels like systemd is basically dictating how the system should be laid out at this point and we may as well put all this on the systemd distro feature as it is getting to the point you can't use it without doing that :/. It feels a bit like we should drop usrmerge too and just use systemd there too since it doesn't have any seperate policy, it is just "do what systemd says". Cheers, Richard
Randolph Sapp via lists.openembedded.org schrieb am Mi 08. Apr, 14:50 (-0500): > diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf > index 84450386d9..29301534d2 100644 > --- a/meta/conf/bitbake.conf > +++ b/meta/conf/bitbake.conf > @@ -22,7 +22,7 @@ root_prefix = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${exec_prefi > > # Base paths > export base_bindir = "${root_prefix}/bin" > -export base_sbindir = "${root_prefix}/sbin" > +export base_sbindir = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${root_prefix}/bin', '${root_prefix}/sbin', d)}" Maybe: export base_sbindir = "${root_prefix}/${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', 'bin', 'sbin', d)}" or export base_sbindir = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${base_bindir}', '${root_prefix}/sbin', d)}" > export base_libdir = "${root_prefix}/${baselib}" > export nonarch_base_libdir = "${root_prefix}/lib" Jörg
> -----Original Message----- > From: openembedded-core@lists.openembedded.org <openembedded-core@lists.openembedded.org> On Behalf Of Jörg Sommer via lists.openembedded.org > Sent: den 9 april 2026 06:31 > To: rs@ti.com > Cc: richard.purdie@linuxfoundation.org; ross.burton@arm.com; mathieu.dubois-briand@bootlin.com; openembedded-core@lists.openembedded.org > Subject: Re: [oe-core][PATCH] systemd: fix unmerged-bin tainted message > > Randolph Sapp via lists.openembedded.org schrieb am Mi 08. Apr, 14:50 (-0500): > > diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf > > index 84450386d9..29301534d2 100644 > > --- a/meta/conf/bitbake.conf > > +++ b/meta/conf/bitbake.conf > > @@ -22,7 +22,7 @@ root_prefix = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${exec_prefi > > > > # Base paths > > export base_bindir = "${root_prefix}/bin" > > -export base_sbindir = "${root_prefix}/sbin" > > +export base_sbindir = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${root_prefix}/bin', '${root_prefix}/sbin', d)}" > > Maybe: > > export base_sbindir = "${root_prefix}/${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', 'bin', 'sbin', d)}" > > or > > export base_sbindir = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${base_bindir}', '${root_prefix}/sbin', d)}" This one. For the unlikely case that someone modifies base_bindir. > > export base_libdir = "${root_prefix}/${baselib}" > > export nonarch_base_libdir = "${root_prefix}/lib" > > > Jörg //Peter
On Thu Apr 9, 2026 at 2:49 AM CDT, Peter Kjellerstedt wrote: >> -----Original Message----- >> From: openembedded-core@lists.openembedded.org <openembedded-core@lists.openembedded.org> On Behalf Of Jörg Sommer via lists.openembedded.org >> Sent: den 9 april 2026 06:31 >> To: rs@ti.com >> Cc: richard.purdie@linuxfoundation.org; ross.burton@arm.com; mathieu.dubois-briand@bootlin.com; openembedded-core@lists.openembedded.org >> Subject: Re: [oe-core][PATCH] systemd: fix unmerged-bin tainted message >> >> Randolph Sapp via lists.openembedded.org schrieb am Mi 08. Apr, 14:50 (-0500): >> > diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf >> > index 84450386d9..29301534d2 100644 >> > --- a/meta/conf/bitbake.conf >> > +++ b/meta/conf/bitbake.conf >> > @@ -22,7 +22,7 @@ root_prefix = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${exec_prefi >> > >> > # Base paths >> > export base_bindir = "${root_prefix}/bin" >> > -export base_sbindir = "${root_prefix}/sbin" >> > +export base_sbindir = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${root_prefix}/bin', '${root_prefix}/sbin', d)}" >> >> Maybe: >> >> export base_sbindir = "${root_prefix}/${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', 'bin', 'sbin', d)}" >> >> or >> >> export base_sbindir = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${base_bindir}', '${root_prefix}/sbin', d)}" > > This one. For the unlikely case that someone modifies base_bindir. > Fair enough. Any other comments about Richards proposal to remove the usrmerge distro feature and merge that into the systemd distro feature? I personally think that a non-systemd environment could still benefit from mimicking a filesystem structure most distros currently ship, but that's just me.
On Thu Apr 9, 2026 at 1:18 PM CDT, Randolph Sapp via lists.openembedded.org wrote: > On Thu Apr 9, 2026 at 2:49 AM CDT, Peter Kjellerstedt wrote: >>> -----Original Message----- >>> From: openembedded-core@lists.openembedded.org <openembedded-core@lists.openembedded.org> On Behalf Of Jörg Sommer via lists.openembedded.org >>> Sent: den 9 april 2026 06:31 >>> To: rs@ti.com >>> Cc: richard.purdie@linuxfoundation.org; ross.burton@arm.com; mathieu.dubois-briand@bootlin.com; openembedded-core@lists.openembedded.org >>> Subject: Re: [oe-core][PATCH] systemd: fix unmerged-bin tainted message >>> >>> Randolph Sapp via lists.openembedded.org schrieb am Mi 08. Apr, 14:50 (-0500): >>> > diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf >>> > index 84450386d9..29301534d2 100644 >>> > --- a/meta/conf/bitbake.conf >>> > +++ b/meta/conf/bitbake.conf >>> > @@ -22,7 +22,7 @@ root_prefix = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${exec_prefi >>> > >>> > # Base paths >>> > export base_bindir = "${root_prefix}/bin" >>> > -export base_sbindir = "${root_prefix}/sbin" >>> > +export base_sbindir = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${root_prefix}/bin', '${root_prefix}/sbin', d)}" >>> >>> Maybe: >>> >>> export base_sbindir = "${root_prefix}/${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', 'bin', 'sbin', d)}" >>> >>> or >>> >>> export base_sbindir = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${base_bindir}', '${root_prefix}/sbin', d)}" >> >> This one. For the unlikely case that someone modifies base_bindir. >> > > Fair enough. Any other comments about Richards proposal to remove the usrmerge > distro feature and merge that into the systemd distro feature? > > I personally think that a non-systemd environment could still benefit from > mimicking a filesystem structure most distros currently ship, but that's just > me. Also suppose I should apply this to all sbin related variables in this file to keep everything consistent between the SDKs and the actual rootfs images.
diff --git a/meta/classes-recipe/populate_sdk_base.bbclass b/meta/classes-recipe/populate_sdk_base.bbclass index b427ff2761..15f393a3bb 100644 --- a/meta/classes-recipe/populate_sdk_base.bbclass +++ b/meta/classes-recipe/populate_sdk_base.bbclass @@ -186,9 +186,10 @@ POPULATE_SDK_POST_HOST_COMMAND:append:task-populate-sdk = " write_host_sdk_manif # Prepare the root links to point to the /usr counterparts. create_merged_usr_symlinks() { root="$1" - install -d $root${base_bindir} $root${base_sbindir} $root${base_libdir} + install -d $root${base_bindir} $root${base_libdir} ln -rs $root${base_bindir} $root/bin - ln -rs $root${base_sbindir} $root/sbin + ln -rs $root${base_bindir} $root/sbin + ln -rs $root${base_bindir} $root/usr/sbin ln -rs $root${base_libdir} $root/${baselib} if [ "${nonarch_base_libdir}" != "${base_libdir}" ]; then diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf index 84450386d9..29301534d2 100644 --- a/meta/conf/bitbake.conf +++ b/meta/conf/bitbake.conf @@ -22,7 +22,7 @@ root_prefix = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${exec_prefi # Base paths export base_bindir = "${root_prefix}/bin" -export base_sbindir = "${root_prefix}/sbin" +export base_sbindir = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${root_prefix}/bin', '${root_prefix}/sbin', d)}" export base_libdir = "${root_prefix}/${baselib}" export nonarch_base_libdir = "${root_prefix}/lib" diff --git a/meta/recipes-core/systemd/systemd_259.5.bb b/meta/recipes-core/systemd/systemd_259.5.bb index c3cb605b4d..d84e38d7cd 100644 --- a/meta/recipes-core/systemd/systemd_259.5.bb +++ b/meta/recipes-core/systemd/systemd_259.5.bb @@ -69,6 +69,7 @@ PACKAGECONFIG ??= " \ quotacheck \ randomseed \ resolved \ + sbinmerge \ serial-getty-generator \ set-time-epoch \ sysusers \ @@ -339,8 +340,11 @@ do_install() { install -m 0644 ${UNPACKDIR}/org.freedesktop.hostname1_no_polkit.conf ${D}${datadir}/dbus-1/system.d/ fi - # create link for existing udev rules - ln -s ${base_bindir}/udevadm ${D}${base_sbindir}/udevadm + # create link for existing udev rules if sbinmerge is not enabled + if ${@bb.utils.contains('PACKAGECONFIG', 'sbinmerge', 'false', 'true', d)} + then + ln -s ${base_bindir}/udevadm ${D}${base_sbindir}/udevadm + fi # install default policy for presets # https://www.freedesktop.org/wiki/Software/systemd/Preset/#howto