diff mbox series

[1/3] systemd: upgrade to 255.1

Message ID 20231227042036.2376255-1-Qi.Chen@windriver.com
State Accepted, archived
Commit ebafe463799b39025a0b24a0a14a2f02b6de9bac
Headers show
Series [1/3] systemd: upgrade to 255.1 | expand

Commit Message

ChenQi Dec. 27, 2023, 4:20 a.m. UTC
From: Chen Qi <Qi.Chen@windriver.com>

1. Patch changes:

0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
is removed because it has no real effect now. The /lib is now
/usr/lib because 'usrmerge' is a required distro feature for systemd.

0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch is
refreshed for the new version to avoid patch-fuzz issue.

2. root user's home directory now defaults to "/root":

The sysuers.d/basic.conf is still modified to respect the ROOT_HOME
value, so if users set ROOT_HOME to "/home/root", the behavior is the
same as before. However, this is only for backward compatibility. With
this patch, The ROOT_HOME value is set to "/root" in init-manager-systemd.inc.
This is because systemd's source codes are hardcoding "/root", and other
values are not officially supported. See the list below.
$ grep -rl '"/root"' src/ | grep -v 'src/test'
src/core/namespace.c
src/basic/user-util.c
src/nss-systemd/nss-systemd.c
src/nspawn/nspawn.c
src/firstboot/firstboot.c
src/shared/userdb.c
src/shared/user-record.c
$ grep -rl /root network/ factory/ sysctl.d/ sysusers.d/ rules.d/ tmpfiles.d/ units/ xorg/ tools/
sysusers.d/basic.conf.in
tmpfiles.d/provision.conf
units/emergency.service.in
units/rescue.service.in
tools/list-discoverable-partitions.py
Previously, the recipe was just substituting sysusers.d/basic.conf.in,
which is not enough to be treated as 'fully support'. I deliberately put
a warning message in do_install to warn users about non "/root" ROOT_HOME
value. Don't remove it until all above places are handled.

3. cgroupv2 is now the default.
cgroupv2 is the default for systemd for many years and it's the default
for distros such as ubuntu and fedora. Let's also use it as the default.

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
 .../distro/include/init-manager-systemd.inc   |  2 +
 meta/recipes-core/systemd/systemd.inc         |  4 +-
 ...tall-dependency-links-at-install-tim.patch | 22 +++---
 ...sysctl.d-binfmt.d-modules-load.d-to-.patch | 73 -------------------
 .../systemd/systemd/basic.conf.in             | 40 ----------
 .../{systemd_254.4.bb => systemd_255.1.bb}    | 16 ++--
 6 files changed, 25 insertions(+), 132 deletions(-)
 delete mode 100644 meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
 delete mode 100644 meta/recipes-core/systemd/systemd/basic.conf.in
 rename meta/recipes-core/systemd/{systemd_254.4.bb => systemd_255.1.bb} (98%)

Comments

Alexandre Belloni Dec. 27, 2023, 11:59 a.m. UTC | #1
We hit the added warning on the autobuilders:

WARNING: systemd-1_255.1-r0 do_install: Using /home/root as root user's home directory is not fully supported by systemd

https://autobuilder.yoctoproject.org/typhoon/#/builders/40/builds/8354/steps/14/logs/warnings

On 27/12/2023 12:20:34+0800, Chen Qi via lists.openembedded.org wrote:
> From: Chen Qi <Qi.Chen@windriver.com>
> 
> 1. Patch changes:
> 
> 0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
> is removed because it has no real effect now. The /lib is now
> /usr/lib because 'usrmerge' is a required distro feature for systemd.
> 
> 0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch is
> refreshed for the new version to avoid patch-fuzz issue.
> 
> 2. root user's home directory now defaults to "/root":
> 
> The sysuers.d/basic.conf is still modified to respect the ROOT_HOME
> value, so if users set ROOT_HOME to "/home/root", the behavior is the
> same as before. However, this is only for backward compatibility. With
> this patch, The ROOT_HOME value is set to "/root" in init-manager-systemd.inc.
> This is because systemd's source codes are hardcoding "/root", and other
> values are not officially supported. See the list below.
> $ grep -rl '"/root"' src/ | grep -v 'src/test'
> src/core/namespace.c
> src/basic/user-util.c
> src/nss-systemd/nss-systemd.c
> src/nspawn/nspawn.c
> src/firstboot/firstboot.c
> src/shared/userdb.c
> src/shared/user-record.c
> $ grep -rl /root network/ factory/ sysctl.d/ sysusers.d/ rules.d/ tmpfiles.d/ units/ xorg/ tools/
> sysusers.d/basic.conf.in
> tmpfiles.d/provision.conf
> units/emergency.service.in
> units/rescue.service.in
> tools/list-discoverable-partitions.py
> Previously, the recipe was just substituting sysusers.d/basic.conf.in,
> which is not enough to be treated as 'fully support'. I deliberately put
> a warning message in do_install to warn users about non "/root" ROOT_HOME
> value. Don't remove it until all above places are handled.
> 
> 3. cgroupv2 is now the default.
> cgroupv2 is the default for systemd for many years and it's the default
> for distros such as ubuntu and fedora. Let's also use it as the default.
> 
> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> ---
>  .../distro/include/init-manager-systemd.inc   |  2 +
>  meta/recipes-core/systemd/systemd.inc         |  4 +-
>  ...tall-dependency-links-at-install-tim.patch | 22 +++---
>  ...sysctl.d-binfmt.d-modules-load.d-to-.patch | 73 -------------------
>  .../systemd/systemd/basic.conf.in             | 40 ----------
>  .../{systemd_254.4.bb => systemd_255.1.bb}    | 16 ++--
>  6 files changed, 25 insertions(+), 132 deletions(-)
>  delete mode 100644 meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
>  delete mode 100644 meta/recipes-core/systemd/systemd/basic.conf.in
>  rename meta/recipes-core/systemd/{systemd_254.4.bb => systemd_255.1.bb} (98%)
> 
> diff --git a/meta/conf/distro/include/init-manager-systemd.inc b/meta/conf/distro/include/init-manager-systemd.inc
> index 595d1f2644..0a76647459 100644
> --- a/meta/conf/distro/include/init-manager-systemd.inc
> +++ b/meta/conf/distro/include/init-manager-systemd.inc
> @@ -5,3 +5,5 @@ VIRTUAL-RUNTIME_init_manager ??= "systemd"
>  VIRTUAL-RUNTIME_initscripts ??= "systemd-compat-units"
>  VIRTUAL-RUNTIME_login_manager ??= "shadow-base"
>  VIRTUAL-RUNTIME_dev_manager ??= "systemd"
> +# systemd hardcodes /root in its source codes, other values are not offically supported
> +ROOT_HOME ?= "/root"
> diff --git a/meta/recipes-core/systemd/systemd.inc b/meta/recipes-core/systemd/systemd.inc
> index ccc3236457..1417e0150f 100644
> --- a/meta/recipes-core/systemd/systemd.inc
> +++ b/meta/recipes-core/systemd/systemd.inc
> @@ -15,8 +15,8 @@ LICENSE:libsystemd = "LGPL-2.1-or-later"
>  LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
>                      file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
>  
> -SRCREV = "2e7504449a51fb38db9cd2da391c6434f82def51"
> -SRCBRANCH = "v254-stable"
> +SRCREV = "2018ccef6645ce00c784369a22dc4e98f6d7061d"
> +SRCBRANCH = "v255-stable"
>  SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=https;branch=${SRCBRANCH}"
>  
>  S = "${WORKDIR}/git"
> diff --git a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
> index 085f1e9052..be231cf6b2 100644
> --- a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
> +++ b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
> @@ -1,8 +1,8 @@
> -From ca7d9a8d9c81702af9c599bb79706f12b1a465cf Mon Sep 17 00:00:00 2001
> +From 29a58009a172e369ad7166e16dab2f4945c6b0d2 Mon Sep 17 00:00:00 2001
>  From: Chen Qi <Qi.Chen@windriver.com>
>  Date: Thu, 21 Feb 2019 16:23:24 +0800
> -Subject: [PATCH] binfmt: Don't install dependency links at install time for
> - the binfmt services
> +Subject: [PATCH 1/2] binfmt: Don't install dependency links at install time
> + for the binfmt services
>  
>  use [Install] blocks so that they get created when the service is enabled
>  like a traditional service.
> @@ -25,10 +25,10 @@ Signed-off-by: Scott Murray <scott.murray@konsulko.com>
>   3 files changed, 7 insertions(+), 2 deletions(-)
>  
>  diff --git a/units/meson.build b/units/meson.build
> -index c7939a10f8..219570ab19 100644
> +index e7bfb7f838..1d5ec4b178 100644
>  --- a/units/meson.build
>  +++ b/units/meson.build
> -@@ -149,7 +149,6 @@ units = [
> +@@ -154,7 +154,6 @@ units = [
>           {
>             'file' : 'proc-sys-fs-binfmt_misc.automount',
>             'conditions' : ['ENABLE_BINFMT'],
> @@ -36,7 +36,7 @@ index c7939a10f8..219570ab19 100644
>           },
>           {
>             'file' : 'proc-sys-fs-binfmt_misc.mount',
> -@@ -246,7 +245,6 @@ units = [
> +@@ -251,7 +250,6 @@ units = [
>           {
>             'file' : 'systemd-binfmt.service.in',
>             'conditions' : ['ENABLE_BINFMT'],
> @@ -45,7 +45,7 @@ index c7939a10f8..219570ab19 100644
>           {
>             'file' : 'systemd-bless-boot.service.in',
>  diff --git a/units/proc-sys-fs-binfmt_misc.automount b/units/proc-sys-fs-binfmt_misc.automount
> -index 6b1bbdc91e..5ec5b8670a 100644
> +index 5d212015a5..6c2900ca77 100644
>  --- a/units/proc-sys-fs-binfmt_misc.automount
>  +++ b/units/proc-sys-fs-binfmt_misc.automount
>  @@ -22,3 +22,6 @@ Before=shutdown.target
> @@ -56,7 +56,7 @@ index 6b1bbdc91e..5ec5b8670a 100644
>  +[Install]
>  +WantedBy=sysinit.target
>  diff --git a/units/systemd-binfmt.service.in b/units/systemd-binfmt.service.in
> -index b04412e037..63f116e4fa 100644
> +index 6861c76674..531e9fbd90 100644
>  --- a/units/systemd-binfmt.service.in
>  +++ b/units/systemd-binfmt.service.in
>  @@ -14,6 +14,7 @@ Documentation=https://docs.kernel.org/admin-guide/binfmt-misc.html
> @@ -68,12 +68,12 @@ index b04412e037..63f116e4fa 100644
>   After=proc-sys-fs-binfmt_misc.mount
>   After=local-fs.target
>  @@ -31,3 +32,6 @@ RemainAfterExit=yes
> - ExecStart={{ROOTLIBEXECDIR}}/systemd-binfmt
> - ExecStop={{ROOTLIBEXECDIR}}/systemd-binfmt --unregister
> + ExecStart={{LIBEXECDIR}}/systemd-binfmt
> + ExecStop={{LIBEXECDIR}}/systemd-binfmt --unregister
>   TimeoutSec=90s
>  +
>  +[Install]
>  +WantedBy=sysinit.target
>  -- 
> -2.39.2
> +2.34.1
>  
> diff --git a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch b/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
> deleted file mode 100644
> index 98914ae154..0000000000
> --- a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
> +++ /dev/null
> @@ -1,73 +0,0 @@
> -From f75f03ef6bc3554068e456bed227f333d5cb8c34 Mon Sep 17 00:00:00 2001
> -From: Khem Raj <raj.khem@gmail.com>
> -Date: Tue, 29 Sep 2020 18:01:41 -0700
> -Subject: [PATCH] Move sysusers.d/sysctl.d/binfmt.d/modules-load.d to /usr
> -
> -These directories are moved to /lib since systemd v246, commit
> -4a56315a990b ("path: use ROOTPREFIX properly"), but in oe-core/yocto,
> -the old /usr/lib is still being used.
> -
> -Upstream-Status: Inappropriate (OE-specific)
> -Signed-off-by: Khem Raj <raj.khem@gmail.com>
> -Signed-off-by: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
> ----
> - src/core/systemd.pc.in           | 8 ++++----
> - src/libsystemd/sd-path/sd-path.c | 8 ++++----
> - 2 files changed, 8 insertions(+), 8 deletions(-)
> -
> -diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in
> -index 693433b34b..8368a3ff02 100644
> ---- a/src/core/systemd.pc.in
> -+++ b/src/core/systemd.pc.in
> -@@ -67,16 +67,16 @@ tmpfilesdir=${tmpfiles_dir}
> - 
> - user_tmpfiles_dir=${prefix}/share/user-tmpfiles.d
> - 
> --sysusers_dir=${rootprefix}/lib/sysusers.d
> -+sysusers_dir=${prefix}/lib/sysusers.d
> - sysusersdir=${sysusers_dir}
> - 
> --sysctl_dir=${rootprefix}/lib/sysctl.d
> -+sysctl_dir=${prefix}/lib/sysctl.d
> - sysctldir=${sysctl_dir}
> - 
> --binfmt_dir=${rootprefix}/lib/binfmt.d
> -+binfmt_dir=${prefix}/lib/binfmt.d
> - binfmtdir=${binfmt_dir}
> - 
> --modules_load_dir=${rootprefix}/lib/modules-load.d
> -+modules_load_dir=${prefix}/lib/modules-load.d
> - modulesloaddir=${modules_load_dir}
> - 
> - catalog_dir=${prefix}/lib/systemd/catalog
> -diff --git a/src/libsystemd/sd-path/sd-path.c b/src/libsystemd/sd-path/sd-path.c
> -index 1af3a36d1d..def502b717 100644
> ---- a/src/libsystemd/sd-path/sd-path.c
> -+++ b/src/libsystemd/sd-path/sd-path.c
> -@@ -365,19 +365,19 @@ static int get_path(uint64_t type, char **buffer, const char **ret) {
> -                 return 0;
> - 
> -         case SD_PATH_SYSUSERS:
> --                *ret = ROOTPREFIX_NOSLASH "/lib/sysusers.d";
> -+                *ret = "/usr/lib/sysusers.d";
> -                 return 0;
> - 
> -         case SD_PATH_SYSCTL:
> --                *ret = ROOTPREFIX_NOSLASH "/lib/sysctl.d";
> -+                *ret = "/usr/lib/sysctl.d";
> -                 return 0;
> - 
> -         case SD_PATH_BINFMT:
> --                *ret = ROOTPREFIX_NOSLASH "/lib/binfmt.d";
> -+                *ret = "/usr/lib/binfmt.d";
> -                 return 0;
> - 
> -         case SD_PATH_MODULES_LOAD:
> --                *ret = ROOTPREFIX_NOSLASH "/lib/modules-load.d";
> -+                *ret = "/usr/lib/modules-load.d";
> -                 return 0;
> - 
> -         case SD_PATH_CATALOG:
> --- 
> -2.39.2
> -
> diff --git a/meta/recipes-core/systemd/systemd/basic.conf.in b/meta/recipes-core/systemd/systemd/basic.conf.in
> deleted file mode 100644
> index fac288f7fa..0000000000
> --- a/meta/recipes-core/systemd/systemd/basic.conf.in
> +++ /dev/null
> @@ -1,40 +0,0 @@
> -#  This file is part of systemd.
> -#
> -#  systemd is free software; you can redistribute it and/or modify it
> -#  under the terms of the GNU Lesser General Public License as published by
> -#  the Free Software Foundation; either version 2.1 of the License, or
> -#  (at your option) any later version.
> -
> -# The superuser
> -u root    0     "root" :ROOT_HOME:
> -
> -# The nobody user/group for NFS file systems
> -g {{NOBODY_GROUP_NAME}} 65534       -            -
> -u {{NOBODY_USER_NAME }} 65534:65534 "Nobody"     -
> -
> -# Administrator group: can *see* more than normal users
> -g adm     {{ADM_GID    }}     -            -
> -
> -# Administrator group: can *do* more than normal users
> -g wheel   {{WHEEL_GID  }}     -            -
> -
> -# Access to shared database of users on the system
> -g utmp    {{UTMP_GID   }}     -            -
> -
> -# Physical and virtual hardware access groups
> -g audio   {{AUDIO_GID  }}     -            -
> -g cdrom   {{CDROM_GID  }}     -            -
> -g dialout {{DIALOUT_GID}}     -            -
> -g disk    {{DISK_GID   }}     -            -
> -g input   {{INPUT_GID  }}     -            -
> -g kmem    {{KMEM_GID   }}     -            -
> -g kvm     {{KVM_GID    }}     -            -
> -g lp      {{LP_GID     }}     -            -
> -g render  {{RENDER_GID }}     -            -
> -g sgx     {{SGX_GID    }}     -            -
> -g tape    {{TAPE_GID   }}     -            -
> -g tty     {{TTY_GID    }}     -            -
> -g video   {{VIDEO_GID  }}     -            -
> -
> -# Default group for normal users
> -g users   {{USERS_GID  }}     -            -
> diff --git a/meta/recipes-core/systemd/systemd_254.4.bb b/meta/recipes-core/systemd/systemd_255.1.bb
> similarity index 98%
> rename from meta/recipes-core/systemd/systemd_254.4.bb
> rename to meta/recipes-core/systemd/systemd_255.1.bb
> index 0c12926bef..daa3a01fef 100644
> --- a/meta/recipes-core/systemd/systemd_254.4.bb
> +++ b/meta/recipes-core/systemd/systemd_255.1.bb
> @@ -21,7 +21,6 @@ REQUIRED_DISTRO_FEATURES += "systemd"
>  SRC_URI += " \
>             file://touchscreen.rules \
>             file://00-create-volatile.conf \
> -           file://basic.conf.in \
>             ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://org.freedesktop.hostname1_no_polkit.conf', '', d)} \
>             ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://00-hostnamed-network-user.conf', '', d)} \
>             file://init \
> @@ -29,7 +28,6 @@ SRC_URI += " \
>             file://systemd-pager.sh \
>             file://0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
>             file://0008-implment-systemd-sysv-install-for-OE.patch \
> -           file://0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch \
>             "
>  
>  # patches needed by musl
> @@ -73,6 +71,7 @@ PACKAGECONFIG ??= " \
>      ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '', 'link-udev-shared', d)} \
>      backlight \
>      binfmt \
> +    cgroupv2 \
>      gshadow \
>      hibernate \
>      hostnamed \
> @@ -266,12 +265,16 @@ EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec \
>  # The 60 seconds is watchdog's default vaule.
>  WATCHDOG_TIMEOUT ??= "60"
>  
> -do_configure:prepend() {
> -  sed s@:ROOT_HOME:@${ROOT_HOME}@g ${WORKDIR}/basic.conf.in > ${S}/sysusers.d/basic.conf.in
> -}
> -
>  do_install() {
>  	meson_do_install
> +	# Change the root user's home directory in /lib/sysusers.d/basic.conf.
> +	# This is done merely for backward compatibility with previous systemd recipes.
> +	# systemd hardcodes root user's HOME to be "/root". Changing to use other values
> +	# may have unexpected runtime behaviors.
> +	if [ "${ROOT_HOME}" != "/root" ]; then
> +		bbwarn "Using ${ROOT_HOME} as root user's home directory is not fully supported by systemd"
> +		sed -i -e 's#/root#${ROOT_HOME}#g' ${D}${exec_prefix}/lib/sysusers.d/basic.conf
> +	fi
>  	install -d ${D}/${base_sbindir}
>  	if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then
>  		# Provided by a separate recipe
> @@ -754,6 +757,7 @@ FILES:udev += "${base_sbindir}/udevd \
>                 ${rootlibexecdir}/udev/rules.d/60-persistent-alsa.rules \
>                 ${rootlibexecdir}/udev/rules.d/60-persistent-input.rules \
>                 ${rootlibexecdir}/udev/rules.d/60-persistent-storage.rules \
> +               ${rootlibexecdir}/udev/rules.d/60-persistent-storage-mtd.rules \
>                 ${rootlibexecdir}/udev/rules.d/60-persistent-storage-tape.rules \
>                 ${rootlibexecdir}/udev/rules.d/60-persistent-v4l.rules \
>                 ${rootlibexecdir}/udev/rules.d/60-sensor.rules \
> -- 
> 2.34.1
> 

> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#192923): https://lists.openembedded.org/g/openembedded-core/message/192923
> Mute This Topic: https://lists.openembedded.org/mt/103380516/3617179
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
ChenQi Dec. 28, 2023, 3 a.m. UTC | #2
I double checked it in my environment, setting INIT_MANAGER to "systemd" and then 'bitbake systemd' will not generate this warning. In this case ROOT_HOME's value is "/root".
I checked https://autobuilder.yoctoproject.org/typhoon/#/builders/40/builds/8354, but I couldn't find the configuration items that set the init manager to systemd.
Does the build use the variable 'INIT_MANAGER'? Does it set ROOT_HOME to "/home/root" somewhere?

Regards,
Qi

-----Original Message-----
From: Alexandre Belloni <alexandre.belloni@bootlin.com> 
Sent: Wednesday, December 27, 2023 7:59 PM
To: Chen, Qi <Qi.Chen@windriver.com>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [OE-core][PATCH 1/3] systemd: upgrade to 255.1

We hit the added warning on the autobuilders:

WARNING: systemd-1_255.1-r0 do_install: Using /home/root as root user's home directory is not fully supported by systemd

https://autobuilder.yoctoproject.org/typhoon/#/builders/40/builds/8354/steps/14/logs/warnings

On 27/12/2023 12:20:34+0800, Chen Qi via lists.openembedded.org wrote:
> From: Chen Qi <Qi.Chen@windriver.com>
> 
> 1. Patch changes:
> 
> 0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
> is removed because it has no real effect now. The /lib is now /usr/lib 
> because 'usrmerge' is a required distro feature for systemd.
> 
> 0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch is 
> refreshed for the new version to avoid patch-fuzz issue.
> 
> 2. root user's home directory now defaults to "/root":
> 
> The sysuers.d/basic.conf is still modified to respect the ROOT_HOME 
> value, so if users set ROOT_HOME to "/home/root", the behavior is the 
> same as before. However, this is only for backward compatibility. With 
> this patch, The ROOT_HOME value is set to "/root" in init-manager-systemd.inc.
> This is because systemd's source codes are hardcoding "/root", and 
> other values are not officially supported. See the list below.
> $ grep -rl '"/root"' src/ | grep -v 'src/test'
> src/core/namespace.c
> src/basic/user-util.c
> src/nss-systemd/nss-systemd.c
> src/nspawn/nspawn.c
> src/firstboot/firstboot.c
> src/shared/userdb.c
> src/shared/user-record.c
> $ grep -rl /root network/ factory/ sysctl.d/ sysusers.d/ rules.d/ 
> tmpfiles.d/ units/ xorg/ tools/ sysusers.d/basic.conf.in 
> tmpfiles.d/provision.conf units/emergency.service.in 
> units/rescue.service.in tools/list-discoverable-partitions.py
> Previously, the recipe was just substituting sysusers.d/basic.conf.in, 
> which is not enough to be treated as 'fully support'. I deliberately 
> put a warning message in do_install to warn users about non "/root" 
> ROOT_HOME value. Don't remove it until all above places are handled.
> 
> 3. cgroupv2 is now the default.
> cgroupv2 is the default for systemd for many years and it's the 
> default for distros such as ubuntu and fedora. Let's also use it as the default.
> 
> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> ---
>  .../distro/include/init-manager-systemd.inc   |  2 +
>  meta/recipes-core/systemd/systemd.inc         |  4 +-
>  ...tall-dependency-links-at-install-tim.patch | 22 +++---  
> ...sysctl.d-binfmt.d-modules-load.d-to-.patch | 73 -------------------
>  .../systemd/systemd/basic.conf.in             | 40 ----------
>  .../{systemd_254.4.bb => systemd_255.1.bb}    | 16 ++--
>  6 files changed, 25 insertions(+), 132 deletions(-)  delete mode 
> 100644 
> meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt
> .d-modules-load.d-to-.patch  delete mode 100644 
> meta/recipes-core/systemd/systemd/basic.conf.in
>  rename meta/recipes-core/systemd/{systemd_254.4.bb => 
> systemd_255.1.bb} (98%)
> 
> diff --git a/meta/conf/distro/include/init-manager-systemd.inc 
> b/meta/conf/distro/include/init-manager-systemd.inc
> index 595d1f2644..0a76647459 100644
> --- a/meta/conf/distro/include/init-manager-systemd.inc
> +++ b/meta/conf/distro/include/init-manager-systemd.inc
> @@ -5,3 +5,5 @@ VIRTUAL-RUNTIME_init_manager ??= "systemd"
>  VIRTUAL-RUNTIME_initscripts ??= "systemd-compat-units"
>  VIRTUAL-RUNTIME_login_manager ??= "shadow-base"
>  VIRTUAL-RUNTIME_dev_manager ??= "systemd"
> +# systemd hardcodes /root in its source codes, other values are not 
> +offically supported ROOT_HOME ?= "/root"
> diff --git a/meta/recipes-core/systemd/systemd.inc 
> b/meta/recipes-core/systemd/systemd.inc
> index ccc3236457..1417e0150f 100644
> --- a/meta/recipes-core/systemd/systemd.inc
> +++ b/meta/recipes-core/systemd/systemd.inc
> @@ -15,8 +15,8 @@ LICENSE:libsystemd = "LGPL-2.1-or-later"
>  LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
>                      file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
>  
> -SRCREV = "2e7504449a51fb38db9cd2da391c6434f82def51"
> -SRCBRANCH = "v254-stable"
> +SRCREV = "2018ccef6645ce00c784369a22dc4e98f6d7061d"
> +SRCBRANCH = "v255-stable"
>  SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=https;branch=${SRCBRANCH}"
>  
>  S = "${WORKDIR}/git"
> diff --git 
> a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependen
> cy-links-at-install-tim.patch 
> b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependen
> cy-links-at-install-tim.patch
> index 085f1e9052..be231cf6b2 100644
> --- 
> a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependen
> cy-links-at-install-tim.patch
> +++ b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-depe
> +++ ndency-links-at-install-tim.patch
> @@ -1,8 +1,8 @@
> -From ca7d9a8d9c81702af9c599bb79706f12b1a465cf Mon Sep 17 00:00:00 
> 2001
> +From 29a58009a172e369ad7166e16dab2f4945c6b0d2 Mon Sep 17 00:00:00 
> +2001
>  From: Chen Qi <Qi.Chen@windriver.com>
>  Date: Thu, 21 Feb 2019 16:23:24 +0800
> -Subject: [PATCH] binfmt: Don't install dependency links at install 
> time for
> - the binfmt services
> +Subject: [PATCH 1/2] binfmt: Don't install dependency links at 
> +install time  for the binfmt services
>  
>  use [Install] blocks so that they get created when the service is 
> enabled  like a traditional service.
> @@ -25,10 +25,10 @@ Signed-off-by: Scott Murray <scott.murray@konsulko.com>
>   3 files changed, 7 insertions(+), 2 deletions(-)
>  
>  diff --git a/units/meson.build b/units/meson.build -index 
> c7939a10f8..219570ab19 100644
> +index e7bfb7f838..1d5ec4b178 100644
>  --- a/units/meson.build
>  +++ b/units/meson.build
> -@@ -149,7 +149,6 @@ units = [
> +@@ -154,7 +154,6 @@ units = [
>           {
>             'file' : 'proc-sys-fs-binfmt_misc.automount',
>             'conditions' : ['ENABLE_BINFMT'], @@ -36,7 +36,7 @@ index 
> c7939a10f8..219570ab19 100644
>           },
>           {
>             'file' : 'proc-sys-fs-binfmt_misc.mount', -@@ -246,7 
> +245,6 @@ units = [
> +@@ -251,7 +250,6 @@ units = [
>           {
>             'file' : 'systemd-binfmt.service.in',
>             'conditions' : ['ENABLE_BINFMT'], @@ -45,7 +45,7 @@ index 
> c7939a10f8..219570ab19 100644
>           {
>             'file' : 'systemd-bless-boot.service.in',  diff --git 
> a/units/proc-sys-fs-binfmt_misc.automount 
> b/units/proc-sys-fs-binfmt_misc.automount
> -index 6b1bbdc91e..5ec5b8670a 100644
> +index 5d212015a5..6c2900ca77 100644
>  --- a/units/proc-sys-fs-binfmt_misc.automount
>  +++ b/units/proc-sys-fs-binfmt_misc.automount
>  @@ -22,3 +22,6 @@ Before=shutdown.target @@ -56,7 +56,7 @@ index 
> 6b1bbdc91e..5ec5b8670a 100644  +[Install]  +WantedBy=sysinit.target  
> diff --git a/units/systemd-binfmt.service.in 
> b/units/systemd-binfmt.service.in -index b04412e037..63f116e4fa 100644
> +index 6861c76674..531e9fbd90 100644
>  --- a/units/systemd-binfmt.service.in  +++ 
> b/units/systemd-binfmt.service.in  @@ -14,6 +14,7 @@ 
> Documentation=https://docs.kernel.org/admin-guide/binfmt-misc.html
> @@ -68,12 +68,12 @@ index b04412e037..63f116e4fa 100644
>   After=proc-sys-fs-binfmt_misc.mount
>   After=local-fs.target
>  @@ -31,3 +32,6 @@ RemainAfterExit=yes
> - ExecStart={{ROOTLIBEXECDIR}}/systemd-binfmt
> - ExecStop={{ROOTLIBEXECDIR}}/systemd-binfmt --unregister
> + ExecStart={{LIBEXECDIR}}/systemd-binfmt
> + ExecStop={{LIBEXECDIR}}/systemd-binfmt --unregister
>   TimeoutSec=90s
>  +
>  +[Install]
>  +WantedBy=sysinit.target
>  --
> -2.39.2
> +2.34.1
>  
> diff --git 
> a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binf
> mt.d-modules-load.d-to-.patch 
> b/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binf
> mt.d-modules-load.d-to-.patch
> deleted file mode 100644
> index 98914ae154..0000000000
> --- 
> a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binf
> mt.d-modules-load.d-to-.patch
> +++ /dev/null
> @@ -1,73 +0,0 @@
> -From f75f03ef6bc3554068e456bed227f333d5cb8c34 Mon Sep 17 00:00:00 
> 2001
> -From: Khem Raj <raj.khem@gmail.com>
> -Date: Tue, 29 Sep 2020 18:01:41 -0700
> -Subject: [PATCH] Move sysusers.d/sysctl.d/binfmt.d/modules-load.d to 
> /usr
> -
> -These directories are moved to /lib since systemd v246, commit 
> -4a56315a990b ("path: use ROOTPREFIX properly"), but in oe-core/yocto, 
> -the old /usr/lib is still being used.
> -
> -Upstream-Status: Inappropriate (OE-specific)
> -Signed-off-by: Khem Raj <raj.khem@gmail.com>
> -Signed-off-by: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
> ----
> - src/core/systemd.pc.in           | 8 ++++----
> - src/libsystemd/sd-path/sd-path.c | 8 ++++----
> - 2 files changed, 8 insertions(+), 8 deletions(-)
> -
> -diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in -index 
> 693433b34b..8368a3ff02 100644
> ---- a/src/core/systemd.pc.in
> -+++ b/src/core/systemd.pc.in
> -@@ -67,16 +67,16 @@ tmpfilesdir=${tmpfiles_dir}
> -
> - user_tmpfiles_dir=${prefix}/share/user-tmpfiles.d
> -
> --sysusers_dir=${rootprefix}/lib/sysusers.d
> -+sysusers_dir=${prefix}/lib/sysusers.d
> - sysusersdir=${sysusers_dir}
> -
> --sysctl_dir=${rootprefix}/lib/sysctl.d
> -+sysctl_dir=${prefix}/lib/sysctl.d
> - sysctldir=${sysctl_dir}
> -
> --binfmt_dir=${rootprefix}/lib/binfmt.d
> -+binfmt_dir=${prefix}/lib/binfmt.d
> - binfmtdir=${binfmt_dir}
> -
> --modules_load_dir=${rootprefix}/lib/modules-load.d
> -+modules_load_dir=${prefix}/lib/modules-load.d
> - modulesloaddir=${modules_load_dir}
> -
> - catalog_dir=${prefix}/lib/systemd/catalog
> -diff --git a/src/libsystemd/sd-path/sd-path.c 
> b/src/libsystemd/sd-path/sd-path.c
> -index 1af3a36d1d..def502b717 100644
> ---- a/src/libsystemd/sd-path/sd-path.c
> -+++ b/src/libsystemd/sd-path/sd-path.c
> -@@ -365,19 +365,19 @@ static int get_path(uint64_t type, char **buffer, const char **ret) {
> -                 return 0;
> - 
> -         case SD_PATH_SYSUSERS:
> --                *ret = ROOTPREFIX_NOSLASH "/lib/sysusers.d";
> -+                *ret = "/usr/lib/sysusers.d";
> -                 return 0;
> - 
> -         case SD_PATH_SYSCTL:
> --                *ret = ROOTPREFIX_NOSLASH "/lib/sysctl.d";
> -+                *ret = "/usr/lib/sysctl.d";
> -                 return 0;
> - 
> -         case SD_PATH_BINFMT:
> --                *ret = ROOTPREFIX_NOSLASH "/lib/binfmt.d";
> -+                *ret = "/usr/lib/binfmt.d";
> -                 return 0;
> - 
> -         case SD_PATH_MODULES_LOAD:
> --                *ret = ROOTPREFIX_NOSLASH "/lib/modules-load.d";
> -+                *ret = "/usr/lib/modules-load.d";
> -                 return 0;
> - 
> -         case SD_PATH_CATALOG:
> ---
> -2.39.2
> -
> diff --git a/meta/recipes-core/systemd/systemd/basic.conf.in 
> b/meta/recipes-core/systemd/systemd/basic.conf.in
> deleted file mode 100644
> index fac288f7fa..0000000000
> --- a/meta/recipes-core/systemd/systemd/basic.conf.in
> +++ /dev/null
> @@ -1,40 +0,0 @@
> -#  This file is part of systemd.
> -#
> -#  systemd is free software; you can redistribute it and/or modify it 
> -#  under the terms of the GNU Lesser General Public License as 
> published by -#  the Free Software Foundation; either version 2.1 of 
> the License, or -#  (at your option) any later version.
> -
> -# The superuser
> -u root    0     "root" :ROOT_HOME:
> -
> -# The nobody user/group for NFS file systems
> -g {{NOBODY_GROUP_NAME}} 65534       -            -
> -u {{NOBODY_USER_NAME }} 65534:65534 "Nobody"     -
> -
> -# Administrator group: can *see* more than normal users
> -g adm     {{ADM_GID    }}     -            -
> -
> -# Administrator group: can *do* more than normal users
> -g wheel   {{WHEEL_GID  }}     -            -
> -
> -# Access to shared database of users on the system
> -g utmp    {{UTMP_GID   }}     -            -
> -
> -# Physical and virtual hardware access groups
> -g audio   {{AUDIO_GID  }}     -            -
> -g cdrom   {{CDROM_GID  }}     -            -
> -g dialout {{DIALOUT_GID}}     -            -
> -g disk    {{DISK_GID   }}     -            -
> -g input   {{INPUT_GID  }}     -            -
> -g kmem    {{KMEM_GID   }}     -            -
> -g kvm     {{KVM_GID    }}     -            -
> -g lp      {{LP_GID     }}     -            -
> -g render  {{RENDER_GID }}     -            -
> -g sgx     {{SGX_GID    }}     -            -
> -g tape    {{TAPE_GID   }}     -            -
> -g tty     {{TTY_GID    }}     -            -
> -g video   {{VIDEO_GID  }}     -            -
> -
> -# Default group for normal users
> -g users   {{USERS_GID  }}     -            -
> diff --git a/meta/recipes-core/systemd/systemd_254.4.bb 
> b/meta/recipes-core/systemd/systemd_255.1.bb
> similarity index 98%
> rename from meta/recipes-core/systemd/systemd_254.4.bb
> rename to meta/recipes-core/systemd/systemd_255.1.bb
> index 0c12926bef..daa3a01fef 100644
> --- a/meta/recipes-core/systemd/systemd_254.4.bb
> +++ b/meta/recipes-core/systemd/systemd_255.1.bb
> @@ -21,7 +21,6 @@ REQUIRED_DISTRO_FEATURES += "systemd"
>  SRC_URI += " \
>             file://touchscreen.rules \
>             file://00-create-volatile.conf \
> -           file://basic.conf.in \
>             ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://org.freedesktop.hostname1_no_polkit.conf', '', d)} \
>             ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://00-hostnamed-network-user.conf', '', d)} \
>             file://init \
> @@ -29,7 +28,6 @@ SRC_URI += " \
>             file://systemd-pager.sh \
>             file://0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
>             file://0008-implment-systemd-sysv-install-for-OE.patch \
> -           file://0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch \
>             "
>  
>  # patches needed by musl
> @@ -73,6 +71,7 @@ PACKAGECONFIG ??= " \
>      ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '', 'link-udev-shared', d)} \
>      backlight \
>      binfmt \
> +    cgroupv2 \
>      gshadow \
>      hibernate \
>      hostnamed \
> @@ -266,12 +265,16 @@ EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec 
> \  # The 60 seconds is watchdog's default vaule.
>  WATCHDOG_TIMEOUT ??= "60"
>  
> -do_configure:prepend() {
> -  sed s@:ROOT_HOME:@${ROOT_HOME}@g ${WORKDIR}/basic.conf.in > 
> ${S}/sysusers.d/basic.conf.in -}
> -
>  do_install() {
>  	meson_do_install
> +	# Change the root user's home directory in /lib/sysusers.d/basic.conf.
> +	# This is done merely for backward compatibility with previous systemd recipes.
> +	# systemd hardcodes root user's HOME to be "/root". Changing to use other values
> +	# may have unexpected runtime behaviors.
> +	if [ "${ROOT_HOME}" != "/root" ]; then
> +		bbwarn "Using ${ROOT_HOME} as root user's home directory is not fully supported by systemd"
> +		sed -i -e 's#/root#${ROOT_HOME}#g' ${D}${exec_prefix}/lib/sysusers.d/basic.conf
> +	fi
>  	install -d ${D}/${base_sbindir}
>  	if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then
>  		# Provided by a separate recipe
> @@ -754,6 +757,7 @@ FILES:udev += "${base_sbindir}/udevd \
>                 ${rootlibexecdir}/udev/rules.d/60-persistent-alsa.rules \
>                 ${rootlibexecdir}/udev/rules.d/60-persistent-input.rules \
>                 
> ${rootlibexecdir}/udev/rules.d/60-persistent-storage.rules \
> +               
> + ${rootlibexecdir}/udev/rules.d/60-persistent-storage-mtd.rules \
>                 ${rootlibexecdir}/udev/rules.d/60-persistent-storage-tape.rules \
>                 ${rootlibexecdir}/udev/rules.d/60-persistent-v4l.rules \
>                 ${rootlibexecdir}/udev/rules.d/60-sensor.rules \
> --
> 2.34.1
> 

> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#192923): https://lists.openembedded.org/g/openembedded-core/message/192923
> Mute This Topic: https://lists.openembedded.org/mt/103380516/3617179
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Khem Raj Dec. 28, 2023, 3:19 a.m. UTC | #3
Please do a musl build too. We might have some patch conflicts to address.

On Wed, Dec 27, 2023 at 7:00 PM Chen Qi via lists.openembedded.org
<Qi.Chen=windriver.com@lists.openembedded.org> wrote:
>
> I double checked it in my environment, setting INIT_MANAGER to "systemd" and then 'bitbake systemd' will not generate this warning. In this case ROOT_HOME's value is "/root".
> I checked https://autobuilder.yoctoproject.org/typhoon/#/builders/40/builds/8354, but I couldn't find the configuration items that set the init manager to systemd.
> Does the build use the variable 'INIT_MANAGER'? Does it set ROOT_HOME to "/home/root" somewhere?
>
> Regards,
> Qi
>
> -----Original Message-----
> From: Alexandre Belloni <alexandre.belloni@bootlin.com>
> Sent: Wednesday, December 27, 2023 7:59 PM
> To: Chen, Qi <Qi.Chen@windriver.com>
> Cc: openembedded-core@lists.openembedded.org
> Subject: Re: [OE-core][PATCH 1/3] systemd: upgrade to 255.1
>
> We hit the added warning on the autobuilders:
>
> WARNING: systemd-1_255.1-r0 do_install: Using /home/root as root user's home directory is not fully supported by systemd
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/40/builds/8354/steps/14/logs/warnings
>
> On 27/12/2023 12:20:34+0800, Chen Qi via lists.openembedded.org wrote:
> > From: Chen Qi <Qi.Chen@windriver.com>
> >
> > 1. Patch changes:
> >
> > 0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
> > is removed because it has no real effect now. The /lib is now /usr/lib
> > because 'usrmerge' is a required distro feature for systemd.
> >
> > 0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch is
> > refreshed for the new version to avoid patch-fuzz issue.
> >
> > 2. root user's home directory now defaults to "/root":
> >
> > The sysuers.d/basic.conf is still modified to respect the ROOT_HOME
> > value, so if users set ROOT_HOME to "/home/root", the behavior is the
> > same as before. However, this is only for backward compatibility. With
> > this patch, The ROOT_HOME value is set to "/root" in init-manager-systemd.inc.
> > This is because systemd's source codes are hardcoding "/root", and
> > other values are not officially supported. See the list below.
> > $ grep -rl '"/root"' src/ | grep -v 'src/test'
> > src/core/namespace.c
> > src/basic/user-util.c
> > src/nss-systemd/nss-systemd.c
> > src/nspawn/nspawn.c
> > src/firstboot/firstboot.c
> > src/shared/userdb.c
> > src/shared/user-record.c
> > $ grep -rl /root network/ factory/ sysctl.d/ sysusers.d/ rules.d/
> > tmpfiles.d/ units/ xorg/ tools/ sysusers.d/basic.conf.in
> > tmpfiles.d/provision.conf units/emergency.service.in
> > units/rescue.service.in tools/list-discoverable-partitions.py
> > Previously, the recipe was just substituting sysusers.d/basic.conf.in,
> > which is not enough to be treated as 'fully support'. I deliberately
> > put a warning message in do_install to warn users about non "/root"
> > ROOT_HOME value. Don't remove it until all above places are handled.
> >
> > 3. cgroupv2 is now the default.
> > cgroupv2 is the default for systemd for many years and it's the
> > default for distros such as ubuntu and fedora. Let's also use it as the default.
> >
> > Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> > ---
> >  .../distro/include/init-manager-systemd.inc   |  2 +
> >  meta/recipes-core/systemd/systemd.inc         |  4 +-
> >  ...tall-dependency-links-at-install-tim.patch | 22 +++---
> > ...sysctl.d-binfmt.d-modules-load.d-to-.patch | 73 -------------------
> >  .../systemd/systemd/basic.conf.in             | 40 ----------
> >  .../{systemd_254.4.bb => systemd_255.1.bb}    | 16 ++--
> >  6 files changed, 25 insertions(+), 132 deletions(-)  delete mode
> > 100644
> > meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt
> > .d-modules-load.d-to-.patch  delete mode 100644
> > meta/recipes-core/systemd/systemd/basic.conf.in
> >  rename meta/recipes-core/systemd/{systemd_254.4.bb =>
> > systemd_255.1.bb} (98%)
> >
> > diff --git a/meta/conf/distro/include/init-manager-systemd.inc
> > b/meta/conf/distro/include/init-manager-systemd.inc
> > index 595d1f2644..0a76647459 100644
> > --- a/meta/conf/distro/include/init-manager-systemd.inc
> > +++ b/meta/conf/distro/include/init-manager-systemd.inc
> > @@ -5,3 +5,5 @@ VIRTUAL-RUNTIME_init_manager ??= "systemd"
> >  VIRTUAL-RUNTIME_initscripts ??= "systemd-compat-units"
> >  VIRTUAL-RUNTIME_login_manager ??= "shadow-base"
> >  VIRTUAL-RUNTIME_dev_manager ??= "systemd"
> > +# systemd hardcodes /root in its source codes, other values are not
> > +offically supported ROOT_HOME ?= "/root"
> > diff --git a/meta/recipes-core/systemd/systemd.inc
> > b/meta/recipes-core/systemd/systemd.inc
> > index ccc3236457..1417e0150f 100644
> > --- a/meta/recipes-core/systemd/systemd.inc
> > +++ b/meta/recipes-core/systemd/systemd.inc
> > @@ -15,8 +15,8 @@ LICENSE:libsystemd = "LGPL-2.1-or-later"
> >  LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
> >                      file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
> >
> > -SRCREV = "2e7504449a51fb38db9cd2da391c6434f82def51"
> > -SRCBRANCH = "v254-stable"
> > +SRCREV = "2018ccef6645ce00c784369a22dc4e98f6d7061d"
> > +SRCBRANCH = "v255-stable"
> >  SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=https;branch=${SRCBRANCH}"
> >
> >  S = "${WORKDIR}/git"
> > diff --git
> > a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependen
> > cy-links-at-install-tim.patch
> > b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependen
> > cy-links-at-install-tim.patch
> > index 085f1e9052..be231cf6b2 100644
> > ---
> > a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependen
> > cy-links-at-install-tim.patch
> > +++ b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-depe
> > +++ ndency-links-at-install-tim.patch
> > @@ -1,8 +1,8 @@
> > -From ca7d9a8d9c81702af9c599bb79706f12b1a465cf Mon Sep 17 00:00:00
> > 2001
> > +From 29a58009a172e369ad7166e16dab2f4945c6b0d2 Mon Sep 17 00:00:00
> > +2001
> >  From: Chen Qi <Qi.Chen@windriver.com>
> >  Date: Thu, 21 Feb 2019 16:23:24 +0800
> > -Subject: [PATCH] binfmt: Don't install dependency links at install
> > time for
> > - the binfmt services
> > +Subject: [PATCH 1/2] binfmt: Don't install dependency links at
> > +install time  for the binfmt services
> >
> >  use [Install] blocks so that they get created when the service is
> > enabled  like a traditional service.
> > @@ -25,10 +25,10 @@ Signed-off-by: Scott Murray <scott.murray@konsulko.com>
> >   3 files changed, 7 insertions(+), 2 deletions(-)
> >
> >  diff --git a/units/meson.build b/units/meson.build -index
> > c7939a10f8..219570ab19 100644
> > +index e7bfb7f838..1d5ec4b178 100644
> >  --- a/units/meson.build
> >  +++ b/units/meson.build
> > -@@ -149,7 +149,6 @@ units = [
> > +@@ -154,7 +154,6 @@ units = [
> >           {
> >             'file' : 'proc-sys-fs-binfmt_misc.automount',
> >             'conditions' : ['ENABLE_BINFMT'], @@ -36,7 +36,7 @@ index
> > c7939a10f8..219570ab19 100644
> >           },
> >           {
> >             'file' : 'proc-sys-fs-binfmt_misc.mount', -@@ -246,7
> > +245,6 @@ units = [
> > +@@ -251,7 +250,6 @@ units = [
> >           {
> >             'file' : 'systemd-binfmt.service.in',
> >             'conditions' : ['ENABLE_BINFMT'], @@ -45,7 +45,7 @@ index
> > c7939a10f8..219570ab19 100644
> >           {
> >             'file' : 'systemd-bless-boot.service.in',  diff --git
> > a/units/proc-sys-fs-binfmt_misc.automount
> > b/units/proc-sys-fs-binfmt_misc.automount
> > -index 6b1bbdc91e..5ec5b8670a 100644
> > +index 5d212015a5..6c2900ca77 100644
> >  --- a/units/proc-sys-fs-binfmt_misc.automount
> >  +++ b/units/proc-sys-fs-binfmt_misc.automount
> >  @@ -22,3 +22,6 @@ Before=shutdown.target @@ -56,7 +56,7 @@ index
> > 6b1bbdc91e..5ec5b8670a 100644  +[Install]  +WantedBy=sysinit.target
> > diff --git a/units/systemd-binfmt.service.in
> > b/units/systemd-binfmt.service.in -index b04412e037..63f116e4fa 100644
> > +index 6861c76674..531e9fbd90 100644
> >  --- a/units/systemd-binfmt.service.in  +++
> > b/units/systemd-binfmt.service.in  @@ -14,6 +14,7 @@
> > Documentation=https://docs.kernel.org/admin-guide/binfmt-misc.html
> > @@ -68,12 +68,12 @@ index b04412e037..63f116e4fa 100644
> >   After=proc-sys-fs-binfmt_misc.mount
> >   After=local-fs.target
> >  @@ -31,3 +32,6 @@ RemainAfterExit=yes
> > - ExecStart={{ROOTLIBEXECDIR}}/systemd-binfmt
> > - ExecStop={{ROOTLIBEXECDIR}}/systemd-binfmt --unregister
> > + ExecStart={{LIBEXECDIR}}/systemd-binfmt
> > + ExecStop={{LIBEXECDIR}}/systemd-binfmt --unregister
> >   TimeoutSec=90s
> >  +
> >  +[Install]
> >  +WantedBy=sysinit.target
> >  --
> > -2.39.2
> > +2.34.1
> >
> > diff --git
> > a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binf
> > mt.d-modules-load.d-to-.patch
> > b/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binf
> > mt.d-modules-load.d-to-.patch
> > deleted file mode 100644
> > index 98914ae154..0000000000
> > ---
> > a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binf
> > mt.d-modules-load.d-to-.patch
> > +++ /dev/null
> > @@ -1,73 +0,0 @@
> > -From f75f03ef6bc3554068e456bed227f333d5cb8c34 Mon Sep 17 00:00:00
> > 2001
> > -From: Khem Raj <raj.khem@gmail.com>
> > -Date: Tue, 29 Sep 2020 18:01:41 -0700
> > -Subject: [PATCH] Move sysusers.d/sysctl.d/binfmt.d/modules-load.d to
> > /usr
> > -
> > -These directories are moved to /lib since systemd v246, commit
> > -4a56315a990b ("path: use ROOTPREFIX properly"), but in oe-core/yocto,
> > -the old /usr/lib is still being used.
> > -
> > -Upstream-Status: Inappropriate (OE-specific)
> > -Signed-off-by: Khem Raj <raj.khem@gmail.com>
> > -Signed-off-by: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
> > ----
> > - src/core/systemd.pc.in           | 8 ++++----
> > - src/libsystemd/sd-path/sd-path.c | 8 ++++----
> > - 2 files changed, 8 insertions(+), 8 deletions(-)
> > -
> > -diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in -index
> > 693433b34b..8368a3ff02 100644
> > ---- a/src/core/systemd.pc.in
> > -+++ b/src/core/systemd.pc.in
> > -@@ -67,16 +67,16 @@ tmpfilesdir=${tmpfiles_dir}
> > -
> > - user_tmpfiles_dir=${prefix}/share/user-tmpfiles.d
> > -
> > --sysusers_dir=${rootprefix}/lib/sysusers.d
> > -+sysusers_dir=${prefix}/lib/sysusers.d
> > - sysusersdir=${sysusers_dir}
> > -
> > --sysctl_dir=${rootprefix}/lib/sysctl.d
> > -+sysctl_dir=${prefix}/lib/sysctl.d
> > - sysctldir=${sysctl_dir}
> > -
> > --binfmt_dir=${rootprefix}/lib/binfmt.d
> > -+binfmt_dir=${prefix}/lib/binfmt.d
> > - binfmtdir=${binfmt_dir}
> > -
> > --modules_load_dir=${rootprefix}/lib/modules-load.d
> > -+modules_load_dir=${prefix}/lib/modules-load.d
> > - modulesloaddir=${modules_load_dir}
> > -
> > - catalog_dir=${prefix}/lib/systemd/catalog
> > -diff --git a/src/libsystemd/sd-path/sd-path.c
> > b/src/libsystemd/sd-path/sd-path.c
> > -index 1af3a36d1d..def502b717 100644
> > ---- a/src/libsystemd/sd-path/sd-path.c
> > -+++ b/src/libsystemd/sd-path/sd-path.c
> > -@@ -365,19 +365,19 @@ static int get_path(uint64_t type, char **buffer, const char **ret) {
> > -                 return 0;
> > -
> > -         case SD_PATH_SYSUSERS:
> > --                *ret = ROOTPREFIX_NOSLASH "/lib/sysusers.d";
> > -+                *ret = "/usr/lib/sysusers.d";
> > -                 return 0;
> > -
> > -         case SD_PATH_SYSCTL:
> > --                *ret = ROOTPREFIX_NOSLASH "/lib/sysctl.d";
> > -+                *ret = "/usr/lib/sysctl.d";
> > -                 return 0;
> > -
> > -         case SD_PATH_BINFMT:
> > --                *ret = ROOTPREFIX_NOSLASH "/lib/binfmt.d";
> > -+                *ret = "/usr/lib/binfmt.d";
> > -                 return 0;
> > -
> > -         case SD_PATH_MODULES_LOAD:
> > --                *ret = ROOTPREFIX_NOSLASH "/lib/modules-load.d";
> > -+                *ret = "/usr/lib/modules-load.d";
> > -                 return 0;
> > -
> > -         case SD_PATH_CATALOG:
> > ---
> > -2.39.2
> > -
> > diff --git a/meta/recipes-core/systemd/systemd/basic.conf.in
> > b/meta/recipes-core/systemd/systemd/basic.conf.in
> > deleted file mode 100644
> > index fac288f7fa..0000000000
> > --- a/meta/recipes-core/systemd/systemd/basic.conf.in
> > +++ /dev/null
> > @@ -1,40 +0,0 @@
> > -#  This file is part of systemd.
> > -#
> > -#  systemd is free software; you can redistribute it and/or modify it
> > -#  under the terms of the GNU Lesser General Public License as
> > published by -#  the Free Software Foundation; either version 2.1 of
> > the License, or -#  (at your option) any later version.
> > -
> > -# The superuser
> > -u root    0     "root" :ROOT_HOME:
> > -
> > -# The nobody user/group for NFS file systems
> > -g {{NOBODY_GROUP_NAME}} 65534       -            -
> > -u {{NOBODY_USER_NAME }} 65534:65534 "Nobody"     -
> > -
> > -# Administrator group: can *see* more than normal users
> > -g adm     {{ADM_GID    }}     -            -
> > -
> > -# Administrator group: can *do* more than normal users
> > -g wheel   {{WHEEL_GID  }}     -            -
> > -
> > -# Access to shared database of users on the system
> > -g utmp    {{UTMP_GID   }}     -            -
> > -
> > -# Physical and virtual hardware access groups
> > -g audio   {{AUDIO_GID  }}     -            -
> > -g cdrom   {{CDROM_GID  }}     -            -
> > -g dialout {{DIALOUT_GID}}     -            -
> > -g disk    {{DISK_GID   }}     -            -
> > -g input   {{INPUT_GID  }}     -            -
> > -g kmem    {{KMEM_GID   }}     -            -
> > -g kvm     {{KVM_GID    }}     -            -
> > -g lp      {{LP_GID     }}     -            -
> > -g render  {{RENDER_GID }}     -            -
> > -g sgx     {{SGX_GID    }}     -            -
> > -g tape    {{TAPE_GID   }}     -            -
> > -g tty     {{TTY_GID    }}     -            -
> > -g video   {{VIDEO_GID  }}     -            -
> > -
> > -# Default group for normal users
> > -g users   {{USERS_GID  }}     -            -
> > diff --git a/meta/recipes-core/systemd/systemd_254.4.bb
> > b/meta/recipes-core/systemd/systemd_255.1.bb
> > similarity index 98%
> > rename from meta/recipes-core/systemd/systemd_254.4.bb
> > rename to meta/recipes-core/systemd/systemd_255.1.bb
> > index 0c12926bef..daa3a01fef 100644
> > --- a/meta/recipes-core/systemd/systemd_254.4.bb
> > +++ b/meta/recipes-core/systemd/systemd_255.1.bb
> > @@ -21,7 +21,6 @@ REQUIRED_DISTRO_FEATURES += "systemd"
> >  SRC_URI += " \
> >             file://touchscreen.rules \
> >             file://00-create-volatile.conf \
> > -           file://basic.conf.in \
> >             ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://org.freedesktop.hostname1_no_polkit.conf', '', d)} \
> >             ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://00-hostnamed-network-user.conf', '', d)} \
> >             file://init \
> > @@ -29,7 +28,6 @@ SRC_URI += " \
> >             file://systemd-pager.sh \
> >             file://0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
> >             file://0008-implment-systemd-sysv-install-for-OE.patch \
> > -           file://0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch \
> >             "
> >
> >  # patches needed by musl
> > @@ -73,6 +71,7 @@ PACKAGECONFIG ??= " \
> >      ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '', 'link-udev-shared', d)} \
> >      backlight \
> >      binfmt \
> > +    cgroupv2 \
> >      gshadow \
> >      hibernate \
> >      hostnamed \
> > @@ -266,12 +265,16 @@ EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec
> > \  # The 60 seconds is watchdog's default vaule.
> >  WATCHDOG_TIMEOUT ??= "60"
> >
> > -do_configure:prepend() {
> > -  sed s@:ROOT_HOME:@${ROOT_HOME}@g ${WORKDIR}/basic.conf.in >
> > ${S}/sysusers.d/basic.conf.in -}
> > -
> >  do_install() {
> >       meson_do_install
> > +     # Change the root user's home directory in /lib/sysusers.d/basic.conf.
> > +     # This is done merely for backward compatibility with previous systemd recipes.
> > +     # systemd hardcodes root user's HOME to be "/root". Changing to use other values
> > +     # may have unexpected runtime behaviors.
> > +     if [ "${ROOT_HOME}" != "/root" ]; then
> > +             bbwarn "Using ${ROOT_HOME} as root user's home directory is not fully supported by systemd"
> > +             sed -i -e 's#/root#${ROOT_HOME}#g' ${D}${exec_prefix}/lib/sysusers.d/basic.conf
> > +     fi
> >       install -d ${D}/${base_sbindir}
> >       if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then
> >               # Provided by a separate recipe
> > @@ -754,6 +757,7 @@ FILES:udev += "${base_sbindir}/udevd \
> >                 ${rootlibexecdir}/udev/rules.d/60-persistent-alsa.rules \
> >                 ${rootlibexecdir}/udev/rules.d/60-persistent-input.rules \
> >
> > ${rootlibexecdir}/udev/rules.d/60-persistent-storage.rules \
> > +
> > + ${rootlibexecdir}/udev/rules.d/60-persistent-storage-mtd.rules \
> >                 ${rootlibexecdir}/udev/rules.d/60-persistent-storage-tape.rules \
> >                 ${rootlibexecdir}/udev/rules.d/60-persistent-v4l.rules \
> >                 ${rootlibexecdir}/udev/rules.d/60-sensor.rules \
> > --
> > 2.34.1
> >
>
> >
> >
> >
>
>
> --
> Alexandre Belloni, co-owner and COO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#192970): https://lists.openembedded.org/g/openembedded-core/message/192970
> Mute This Topic: https://lists.openembedded.org/mt/103380516/1997914
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
ChenQi Dec. 28, 2023, 3:32 a.m. UTC | #4
Hi Khem,

I'm working on some other issue these two days. But I think I can send out a follow-up patch to handle those musl patches after New Year's Day.

Regards,
Qi

-----Original Message-----
From: Khem Raj <raj.khem@gmail.com> 
Sent: Thursday, December 28, 2023 11:20 AM
To: Chen, Qi <Qi.Chen@windriver.com>
Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>; openembedded-core@lists.openembedded.org
Subject: Re: [OE-core][PATCH 1/3] systemd: upgrade to 255.1

Please do a musl build too. We might have some patch conflicts to address.

On Wed, Dec 27, 2023 at 7:00 PM Chen Qi via lists.openembedded.org <Qi.Chen=windriver.com@lists.openembedded.org> wrote:
>
> I double checked it in my environment, setting INIT_MANAGER to "systemd" and then 'bitbake systemd' will not generate this warning. In this case ROOT_HOME's value is "/root".
> I checked https://autobuilder.yoctoproject.org/typhoon/#/builders/40/builds/8354, but I couldn't find the configuration items that set the init manager to systemd.
> Does the build use the variable 'INIT_MANAGER'? Does it set ROOT_HOME to "/home/root" somewhere?
>
> Regards,
> Qi
>
> -----Original Message-----
> From: Alexandre Belloni <alexandre.belloni@bootlin.com>
> Sent: Wednesday, December 27, 2023 7:59 PM
> To: Chen, Qi <Qi.Chen@windriver.com>
> Cc: openembedded-core@lists.openembedded.org
> Subject: Re: [OE-core][PATCH 1/3] systemd: upgrade to 255.1
>
> We hit the added warning on the autobuilders:
>
> WARNING: systemd-1_255.1-r0 do_install: Using /home/root as root 
> user's home directory is not fully supported by systemd
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/40/builds/8354
> /steps/14/logs/warnings
>
> On 27/12/2023 12:20:34+0800, Chen Qi via lists.openembedded.org wrote:
> > From: Chen Qi <Qi.Chen@windriver.com>
> >
> > 1. Patch changes:
> >
> > 0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
> > is removed because it has no real effect now. The /lib is now 
> > /usr/lib because 'usrmerge' is a required distro feature for systemd.
> >
> > 0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch is 
> > refreshed for the new version to avoid patch-fuzz issue.
> >
> > 2. root user's home directory now defaults to "/root":
> >
> > The sysuers.d/basic.conf is still modified to respect the ROOT_HOME 
> > value, so if users set ROOT_HOME to "/home/root", the behavior is 
> > the same as before. However, this is only for backward 
> > compatibility. With this patch, The ROOT_HOME value is set to "/root" in init-manager-systemd.inc.
> > This is because systemd's source codes are hardcoding "/root", and 
> > other values are not officially supported. See the list below.
> > $ grep -rl '"/root"' src/ | grep -v 'src/test'
> > src/core/namespace.c
> > src/basic/user-util.c
> > src/nss-systemd/nss-systemd.c
> > src/nspawn/nspawn.c
> > src/firstboot/firstboot.c
> > src/shared/userdb.c
> > src/shared/user-record.c
> > $ grep -rl /root network/ factory/ sysctl.d/ sysusers.d/ rules.d/ 
> > tmpfiles.d/ units/ xorg/ tools/ sysusers.d/basic.conf.in 
> > tmpfiles.d/provision.conf units/emergency.service.in 
> > units/rescue.service.in tools/list-discoverable-partitions.py
> > Previously, the recipe was just substituting 
> > sysusers.d/basic.conf.in, which is not enough to be treated as 
> > 'fully support'. I deliberately put a warning message in do_install to warn users about non "/root"
> > ROOT_HOME value. Don't remove it until all above places are handled.
> >
> > 3. cgroupv2 is now the default.
> > cgroupv2 is the default for systemd for many years and it's the 
> > default for distros such as ubuntu and fedora. Let's also use it as the default.
> >
> > Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> > ---
> >  .../distro/include/init-manager-systemd.inc   |  2 +
> >  meta/recipes-core/systemd/systemd.inc         |  4 +-
> >  ...tall-dependency-links-at-install-tim.patch | 22 +++--- 
> > ...sysctl.d-binfmt.d-modules-load.d-to-.patch | 73 -------------------
> >  .../systemd/systemd/basic.conf.in             | 40 ----------
> >  .../{systemd_254.4.bb => systemd_255.1.bb}    | 16 ++--
> >  6 files changed, 25 insertions(+), 132 deletions(-)  delete mode
> > 100644
> > meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binf
> > mt .d-modules-load.d-to-.patch  delete mode 100644 
> > meta/recipes-core/systemd/systemd/basic.conf.in
> >  rename meta/recipes-core/systemd/{systemd_254.4.bb => 
> > systemd_255.1.bb} (98%)
> >
> > diff --git a/meta/conf/distro/include/init-manager-systemd.inc
> > b/meta/conf/distro/include/init-manager-systemd.inc
> > index 595d1f2644..0a76647459 100644
> > --- a/meta/conf/distro/include/init-manager-systemd.inc
> > +++ b/meta/conf/distro/include/init-manager-systemd.inc
> > @@ -5,3 +5,5 @@ VIRTUAL-RUNTIME_init_manager ??= "systemd"
> >  VIRTUAL-RUNTIME_initscripts ??= "systemd-compat-units"
> >  VIRTUAL-RUNTIME_login_manager ??= "shadow-base"
> >  VIRTUAL-RUNTIME_dev_manager ??= "systemd"
> > +# systemd hardcodes /root in its source codes, other values are not 
> > +offically supported ROOT_HOME ?= "/root"
> > diff --git a/meta/recipes-core/systemd/systemd.inc
> > b/meta/recipes-core/systemd/systemd.inc
> > index ccc3236457..1417e0150f 100644
> > --- a/meta/recipes-core/systemd/systemd.inc
> > +++ b/meta/recipes-core/systemd/systemd.inc
> > @@ -15,8 +15,8 @@ LICENSE:libsystemd = "LGPL-2.1-or-later"
> >  LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
> >                      file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
> >
> > -SRCREV = "2e7504449a51fb38db9cd2da391c6434f82def51"
> > -SRCBRANCH = "v254-stable"
> > +SRCREV = "2018ccef6645ce00c784369a22dc4e98f6d7061d"
> > +SRCBRANCH = "v255-stable"
> >  SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=https;branch=${SRCBRANCH}"
> >
> >  S = "${WORKDIR}/git"
> > diff --git
> > a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-depend
> > en
> > cy-links-at-install-tim.patch
> > b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-depend
> > en
> > cy-links-at-install-tim.patch
> > index 085f1e9052..be231cf6b2 100644
> > ---
> > a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-depend
> > en
> > cy-links-at-install-tim.patch
> > +++ b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-de
> > +++ pe ndency-links-at-install-tim.patch
> > @@ -1,8 +1,8 @@
> > -From ca7d9a8d9c81702af9c599bb79706f12b1a465cf Mon Sep 17 00:00:00
> > 2001
> > +From 29a58009a172e369ad7166e16dab2f4945c6b0d2 Mon Sep 17 00:00:00
> > +2001
> >  From: Chen Qi <Qi.Chen@windriver.com>
> >  Date: Thu, 21 Feb 2019 16:23:24 +0800
> > -Subject: [PATCH] binfmt: Don't install dependency links at install 
> > time for
> > - the binfmt services
> > +Subject: [PATCH 1/2] binfmt: Don't install dependency links at 
> > +install time  for the binfmt services
> >
> >  use [Install] blocks so that they get created when the service is 
> > enabled  like a traditional service.
> > @@ -25,10 +25,10 @@ Signed-off-by: Scott Murray <scott.murray@konsulko.com>
> >   3 files changed, 7 insertions(+), 2 deletions(-)
> >
> >  diff --git a/units/meson.build b/units/meson.build -index
> > c7939a10f8..219570ab19 100644
> > +index e7bfb7f838..1d5ec4b178 100644
> >  --- a/units/meson.build
> >  +++ b/units/meson.build
> > -@@ -149,7 +149,6 @@ units = [
> > +@@ -154,7 +154,6 @@ units = [
> >           {
> >             'file' : 'proc-sys-fs-binfmt_misc.automount',
> >             'conditions' : ['ENABLE_BINFMT'], @@ -36,7 +36,7 @@ 
> > index
> > c7939a10f8..219570ab19 100644
> >           },
> >           {
> >             'file' : 'proc-sys-fs-binfmt_misc.mount', -@@ -246,7
> > +245,6 @@ units = [
> > +@@ -251,7 +250,6 @@ units = [
> >           {
> >             'file' : 'systemd-binfmt.service.in',
> >             'conditions' : ['ENABLE_BINFMT'], @@ -45,7 +45,7 @@ 
> > index
> > c7939a10f8..219570ab19 100644
> >           {
> >             'file' : 'systemd-bless-boot.service.in',  diff --git 
> > a/units/proc-sys-fs-binfmt_misc.automount
> > b/units/proc-sys-fs-binfmt_misc.automount
> > -index 6b1bbdc91e..5ec5b8670a 100644
> > +index 5d212015a5..6c2900ca77 100644
> >  --- a/units/proc-sys-fs-binfmt_misc.automount
> >  +++ b/units/proc-sys-fs-binfmt_misc.automount
> >  @@ -22,3 +22,6 @@ Before=shutdown.target @@ -56,7 +56,7 @@ index 
> > 6b1bbdc91e..5ec5b8670a 100644  +[Install]  +WantedBy=sysinit.target 
> > diff --git a/units/systemd-binfmt.service.in 
> > b/units/systemd-binfmt.service.in -index b04412e037..63f116e4fa 
> > 100644
> > +index 6861c76674..531e9fbd90 100644
> >  --- a/units/systemd-binfmt.service.in  +++ 
> > b/units/systemd-binfmt.service.in  @@ -14,6 +14,7 @@ 
> > Documentation=https://docs.kernel.org/admin-guide/binfmt-misc.html
> > @@ -68,12 +68,12 @@ index b04412e037..63f116e4fa 100644
> >   After=proc-sys-fs-binfmt_misc.mount
> >   After=local-fs.target
> >  @@ -31,3 +32,6 @@ RemainAfterExit=yes
> > - ExecStart={{ROOTLIBEXECDIR}}/systemd-binfmt
> > - ExecStop={{ROOTLIBEXECDIR}}/systemd-binfmt --unregister
> > + ExecStart={{LIBEXECDIR}}/systemd-binfmt
> > + ExecStop={{LIBEXECDIR}}/systemd-binfmt --unregister
> >   TimeoutSec=90s
> >  +
> >  +[Install]
> >  +WantedBy=sysinit.target
> >  --
> > -2.39.2
> > +2.34.1
> >
> > diff --git
> > a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-bi
> > nf
> > mt.d-modules-load.d-to-.patch
> > b/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-bi
> > nf
> > mt.d-modules-load.d-to-.patch
> > deleted file mode 100644
> > index 98914ae154..0000000000
> > ---
> > a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-bi
> > nf
> > mt.d-modules-load.d-to-.patch
> > +++ /dev/null
> > @@ -1,73 +0,0 @@
> > -From f75f03ef6bc3554068e456bed227f333d5cb8c34 Mon Sep 17 00:00:00
> > 2001
> > -From: Khem Raj <raj.khem@gmail.com>
> > -Date: Tue, 29 Sep 2020 18:01:41 -0700
> > -Subject: [PATCH] Move sysusers.d/sysctl.d/binfmt.d/modules-load.d 
> > to /usr
> > -
> > -These directories are moved to /lib since systemd v246, commit 
> > -4a56315a990b ("path: use ROOTPREFIX properly"), but in 
> > oe-core/yocto, -the old /usr/lib is still being used.
> > -
> > -Upstream-Status: Inappropriate (OE-specific)
> > -Signed-off-by: Khem Raj <raj.khem@gmail.com>
> > -Signed-off-by: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
> > ----
> > - src/core/systemd.pc.in           | 8 ++++----
> > - src/libsystemd/sd-path/sd-path.c | 8 ++++----
> > - 2 files changed, 8 insertions(+), 8 deletions(-)
> > -
> > -diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in -index
> > 693433b34b..8368a3ff02 100644
> > ---- a/src/core/systemd.pc.in
> > -+++ b/src/core/systemd.pc.in
> > -@@ -67,16 +67,16 @@ tmpfilesdir=${tmpfiles_dir}
> > -
> > - user_tmpfiles_dir=${prefix}/share/user-tmpfiles.d
> > -
> > --sysusers_dir=${rootprefix}/lib/sysusers.d
> > -+sysusers_dir=${prefix}/lib/sysusers.d
> > - sysusersdir=${sysusers_dir}
> > -
> > --sysctl_dir=${rootprefix}/lib/sysctl.d
> > -+sysctl_dir=${prefix}/lib/sysctl.d
> > - sysctldir=${sysctl_dir}
> > -
> > --binfmt_dir=${rootprefix}/lib/binfmt.d
> > -+binfmt_dir=${prefix}/lib/binfmt.d
> > - binfmtdir=${binfmt_dir}
> > -
> > --modules_load_dir=${rootprefix}/lib/modules-load.d
> > -+modules_load_dir=${prefix}/lib/modules-load.d
> > - modulesloaddir=${modules_load_dir}
> > -
> > - catalog_dir=${prefix}/lib/systemd/catalog
> > -diff --git a/src/libsystemd/sd-path/sd-path.c
> > b/src/libsystemd/sd-path/sd-path.c
> > -index 1af3a36d1d..def502b717 100644
> > ---- a/src/libsystemd/sd-path/sd-path.c
> > -+++ b/src/libsystemd/sd-path/sd-path.c
> > -@@ -365,19 +365,19 @@ static int get_path(uint64_t type, char **buffer, const char **ret) {
> > -                 return 0;
> > -
> > -         case SD_PATH_SYSUSERS:
> > --                *ret = ROOTPREFIX_NOSLASH "/lib/sysusers.d";
> > -+                *ret = "/usr/lib/sysusers.d";
> > -                 return 0;
> > -
> > -         case SD_PATH_SYSCTL:
> > --                *ret = ROOTPREFIX_NOSLASH "/lib/sysctl.d";
> > -+                *ret = "/usr/lib/sysctl.d";
> > -                 return 0;
> > -
> > -         case SD_PATH_BINFMT:
> > --                *ret = ROOTPREFIX_NOSLASH "/lib/binfmt.d";
> > -+                *ret = "/usr/lib/binfmt.d";
> > -                 return 0;
> > -
> > -         case SD_PATH_MODULES_LOAD:
> > --                *ret = ROOTPREFIX_NOSLASH "/lib/modules-load.d";
> > -+                *ret = "/usr/lib/modules-load.d";
> > -                 return 0;
> > -
> > -         case SD_PATH_CATALOG:
> > ---
> > -2.39.2
> > -
> > diff --git a/meta/recipes-core/systemd/systemd/basic.conf.in
> > b/meta/recipes-core/systemd/systemd/basic.conf.in
> > deleted file mode 100644
> > index fac288f7fa..0000000000
> > --- a/meta/recipes-core/systemd/systemd/basic.conf.in
> > +++ /dev/null
> > @@ -1,40 +0,0 @@
> > -#  This file is part of systemd.
> > -#
> > -#  systemd is free software; you can redistribute it and/or modify 
> > it -#  under the terms of the GNU Lesser General Public License as 
> > published by -#  the Free Software Foundation; either version 2.1 of 
> > the License, or -#  (at your option) any later version.
> > -
> > -# The superuser
> > -u root    0     "root" :ROOT_HOME:
> > -
> > -# The nobody user/group for NFS file systems
> > -g {{NOBODY_GROUP_NAME}} 65534       -            -
> > -u {{NOBODY_USER_NAME }} 65534:65534 "Nobody"     -
> > -
> > -# Administrator group: can *see* more than normal users
> > -g adm     {{ADM_GID    }}     -            -
> > -
> > -# Administrator group: can *do* more than normal users
> > -g wheel   {{WHEEL_GID  }}     -            -
> > -
> > -# Access to shared database of users on the system
> > -g utmp    {{UTMP_GID   }}     -            -
> > -
> > -# Physical and virtual hardware access groups
> > -g audio   {{AUDIO_GID  }}     -            -
> > -g cdrom   {{CDROM_GID  }}     -            -
> > -g dialout {{DIALOUT_GID}}     -            -
> > -g disk    {{DISK_GID   }}     -            -
> > -g input   {{INPUT_GID  }}     -            -
> > -g kmem    {{KMEM_GID   }}     -            -
> > -g kvm     {{KVM_GID    }}     -            -
> > -g lp      {{LP_GID     }}     -            -
> > -g render  {{RENDER_GID }}     -            -
> > -g sgx     {{SGX_GID    }}     -            -
> > -g tape    {{TAPE_GID   }}     -            -
> > -g tty     {{TTY_GID    }}     -            -
> > -g video   {{VIDEO_GID  }}     -            -
> > -
> > -# Default group for normal users
> > -g users   {{USERS_GID  }}     -            -
> > diff --git a/meta/recipes-core/systemd/systemd_254.4.bb
> > b/meta/recipes-core/systemd/systemd_255.1.bb
> > similarity index 98%
> > rename from meta/recipes-core/systemd/systemd_254.4.bb
> > rename to meta/recipes-core/systemd/systemd_255.1.bb
> > index 0c12926bef..daa3a01fef 100644
> > --- a/meta/recipes-core/systemd/systemd_254.4.bb
> > +++ b/meta/recipes-core/systemd/systemd_255.1.bb
> > @@ -21,7 +21,6 @@ REQUIRED_DISTRO_FEATURES += "systemd"
> >  SRC_URI += " \
> >             file://touchscreen.rules \
> >             file://00-create-volatile.conf \
> > -           file://basic.conf.in \
> >             ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://org.freedesktop.hostname1_no_polkit.conf', '', d)} \
> >             ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://00-hostnamed-network-user.conf', '', d)} \
> >             file://init \
> > @@ -29,7 +28,6 @@ SRC_URI += " \
> >             file://systemd-pager.sh \
> >             file://0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
> >             file://0008-implment-systemd-sysv-install-for-OE.patch \
> > -           file://0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch \
> >             "
> >
> >  # patches needed by musl
> > @@ -73,6 +71,7 @@ PACKAGECONFIG ??= " \
> >      ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '', 'link-udev-shared', d)} \
> >      backlight \
> >      binfmt \
> > +    cgroupv2 \
> >      gshadow \
> >      hibernate \
> >      hostnamed \
> > @@ -266,12 +265,16 @@ EXTRA_OEMESON += 
> > "-Dkexec-path=${sbindir}/kexec \  # The 60 seconds is watchdog's default vaule.
> >  WATCHDOG_TIMEOUT ??= "60"
> >
> > -do_configure:prepend() {
> > -  sed s@:ROOT_HOME:@${ROOT_HOME}@g ${WORKDIR}/basic.conf.in > 
> > ${S}/sysusers.d/basic.conf.in -}
> > -
> >  do_install() {
> >       meson_do_install
> > +     # Change the root user's home directory in /lib/sysusers.d/basic.conf.
> > +     # This is done merely for backward compatibility with previous systemd recipes.
> > +     # systemd hardcodes root user's HOME to be "/root". Changing to use other values
> > +     # may have unexpected runtime behaviors.
> > +     if [ "${ROOT_HOME}" != "/root" ]; then
> > +             bbwarn "Using ${ROOT_HOME} as root user's home directory is not fully supported by systemd"
> > +             sed -i -e 's#/root#${ROOT_HOME}#g' ${D}${exec_prefix}/lib/sysusers.d/basic.conf
> > +     fi
> >       install -d ${D}/${base_sbindir}
> >       if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then
> >               # Provided by a separate recipe @@ -754,6 +757,7 @@ 
> > FILES:udev += "${base_sbindir}/udevd \
> >                 ${rootlibexecdir}/udev/rules.d/60-persistent-alsa.rules \
> >                 
> > ${rootlibexecdir}/udev/rules.d/60-persistent-input.rules \
> >
> > ${rootlibexecdir}/udev/rules.d/60-persistent-storage.rules \
> > +
> > + ${rootlibexecdir}/udev/rules.d/60-persistent-storage-mtd.rules \
> >                 ${rootlibexecdir}/udev/rules.d/60-persistent-storage-tape.rules \
> >                 ${rootlibexecdir}/udev/rules.d/60-persistent-v4l.rules \
> >                 ${rootlibexecdir}/udev/rules.d/60-sensor.rules \
> > --
> > 2.34.1
> >
>
> >
> >
> >
>
>
> --
> Alexandre Belloni, co-owner and COO, Bootlin Embedded Linux and Kernel 
> engineering https://bootlin.com
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#192970): 
> https://lists.openembedded.org/g/openembedded-core/message/192970
> Mute This Topic: https://lists.openembedded.org/mt/103380516/1997914
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
> [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Alexandre Belloni Dec. 28, 2023, 9:14 p.m. UTC | #5
On 28/12/2023 03:00:08+0000, Chen, Qi wrote:
> I double checked it in my environment, setting INIT_MANAGER to "systemd" and then 'bitbake systemd' will not generate this warning. In this case ROOT_HOME's value is "/root".
> I checked https://autobuilder.yoctoproject.org/typhoon/#/builders/40/builds/8354, but I couldn't find the configuration items that set the init manager to systemd.
> Does the build use the variable 'INIT_MANAGER'? Does it set ROOT_HOME to "/home/root" somewhere?
> 

This is the config that is used:

MACHINE = "qemux86-64"
DISTRO = "poky"
SDKMACHINE = "x86_64"
PACKAGE_CLASSES = "package_rpm package_deb package_ipk"
DL_DIR = '/srv/autobuilder/autobuilder.yocto.io/current_sources'
SSTATE_DIR ?= '/srv/autobuilder/autobuilder.yocto.io/pub/sstate'
TEST_SUITES:append = ' systemd'
DISTRO_FEATURES:append = ' pam systemd usrmerge'
VIRTUAL-RUNTIME_init_manager = 'systemd'
DISTRO_FEATURES_BACKFILL_CONSIDERED = 'sysvinit'
DISTRO_FEATURES:remove = 'x11'
QEMU_USE_KVM = 'True'
INHERIT += 'report-error'
PREMIRRORS = ''
BB_GENERATE_MIRROR_TARBALLS = '1'
BB_NUMBER_THREADS = '16'
BB_NUMBER_PARSE_THREADS = '16'
PARALLEL_MAKE = '-j 16 -l 52'
BB_PRESSURE_MAX_CPU = '10000'
BB_PRESSURE_MAX_IO = '10000'
XZ_MEMLIMIT = '5%'
XZ_THREADS = '8'
ZSTD_THREADS = '8'
BB_TASK_NICE_LEVEL = '5'
BB_TASK_NICE_LEVEL:task-testimage = '0'
BB_TASK_IONICE_LEVEL = '2.7'
BB_TASK_IONICE_LEVEL:task-testimage = '2.1'
IMAGE_CLASSES += 'testimage'
TEST_QEMUBOOT_TIMEOUT = '1500'
SANITY_TESTED_DISTROS = ''
SDK_EXT_TYPE = 'minimal'
SDK_INCLUDE_TOOLCHAIN = '1'
ESDK_LOCAL_CONF_REMOVE:append = 'BB_HASHSERVE'
BB_DISKMON_DIRS = 'STOPTASKS,${TMPDIR},1G,100K STOPTASKS,${DL_DIR},1G STOPTASKS,${SSTATE_DIR},1G STOPTASKS,/tmp,100M,30K HALT,${TMPDIR},100M,1K HALT,${DL_DIR},100M HALT,${SSTATE_DIR},100M HALT,/tmp,10M,1K'
BB_HASHSERVE = 'hashserv.yocto.io:8686'
RUNQEMU_TMPFS_DIR = '/home/pokybuild/tmp'
BB_HEARTBEAT_EVENT = '60'
BB_LOG_HOST_STAT_ON_INTERVAL = '1'
BB_LOG_HOST_STAT_CMDS_INTERVAL = 'oe-time-dd-test.sh -c 100 -t 3'
BB_LOG_HOST_STAT_ON_FAILURE = '1'
BB_LOG_HOST_STAT_CMDS_FAILURE = 'oe-time-dd-test.sh -l'
SDK_TOOLCHAIN_LANGS += 'rust'
BB_SERVER_TIMEOUT = '60'

It is in auto.conf and it is displayed in the first lines of
https://autobuilder.yoctoproject.org/typhoon/#/builders/40/builds/8354/steps/14/logs/stdio

> Regards,
> Qi
> 
> -----Original Message-----
> From: Alexandre Belloni <alexandre.belloni@bootlin.com> 
> Sent: Wednesday, December 27, 2023 7:59 PM
> To: Chen, Qi <Qi.Chen@windriver.com>
> Cc: openembedded-core@lists.openembedded.org
> Subject: Re: [OE-core][PATCH 1/3] systemd: upgrade to 255.1
> 
> We hit the added warning on the autobuilders:
> 
> WARNING: systemd-1_255.1-r0 do_install: Using /home/root as root user's home directory is not fully supported by systemd
> 
> https://autobuilder.yoctoproject.org/typhoon/#/builders/40/builds/8354/steps/14/logs/warnings
> 
> On 27/12/2023 12:20:34+0800, Chen Qi via lists.openembedded.org wrote:
> > From: Chen Qi <Qi.Chen@windriver.com>
> > 
> > 1. Patch changes:
> > 
> > 0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
> > is removed because it has no real effect now. The /lib is now /usr/lib 
> > because 'usrmerge' is a required distro feature for systemd.
> > 
> > 0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch is 
> > refreshed for the new version to avoid patch-fuzz issue.
> > 
> > 2. root user's home directory now defaults to "/root":
> > 
> > The sysuers.d/basic.conf is still modified to respect the ROOT_HOME 
> > value, so if users set ROOT_HOME to "/home/root", the behavior is the 
> > same as before. However, this is only for backward compatibility. With 
> > this patch, The ROOT_HOME value is set to "/root" in init-manager-systemd.inc.
> > This is because systemd's source codes are hardcoding "/root", and 
> > other values are not officially supported. See the list below.
> > $ grep -rl '"/root"' src/ | grep -v 'src/test'
> > src/core/namespace.c
> > src/basic/user-util.c
> > src/nss-systemd/nss-systemd.c
> > src/nspawn/nspawn.c
> > src/firstboot/firstboot.c
> > src/shared/userdb.c
> > src/shared/user-record.c
> > $ grep -rl /root network/ factory/ sysctl.d/ sysusers.d/ rules.d/ 
> > tmpfiles.d/ units/ xorg/ tools/ sysusers.d/basic.conf.in 
> > tmpfiles.d/provision.conf units/emergency.service.in 
> > units/rescue.service.in tools/list-discoverable-partitions.py
> > Previously, the recipe was just substituting sysusers.d/basic.conf.in, 
> > which is not enough to be treated as 'fully support'. I deliberately 
> > put a warning message in do_install to warn users about non "/root" 
> > ROOT_HOME value. Don't remove it until all above places are handled.
> > 
> > 3. cgroupv2 is now the default.
> > cgroupv2 is the default for systemd for many years and it's the 
> > default for distros such as ubuntu and fedora. Let's also use it as the default.
> > 
> > Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> > ---
> >  .../distro/include/init-manager-systemd.inc   |  2 +
> >  meta/recipes-core/systemd/systemd.inc         |  4 +-
> >  ...tall-dependency-links-at-install-tim.patch | 22 +++---  
> > ...sysctl.d-binfmt.d-modules-load.d-to-.patch | 73 -------------------
> >  .../systemd/systemd/basic.conf.in             | 40 ----------
> >  .../{systemd_254.4.bb => systemd_255.1.bb}    | 16 ++--
> >  6 files changed, 25 insertions(+), 132 deletions(-)  delete mode 
> > 100644 
> > meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt
> > .d-modules-load.d-to-.patch  delete mode 100644 
> > meta/recipes-core/systemd/systemd/basic.conf.in
> >  rename meta/recipes-core/systemd/{systemd_254.4.bb => 
> > systemd_255.1.bb} (98%)
> > 
> > diff --git a/meta/conf/distro/include/init-manager-systemd.inc 
> > b/meta/conf/distro/include/init-manager-systemd.inc
> > index 595d1f2644..0a76647459 100644
> > --- a/meta/conf/distro/include/init-manager-systemd.inc
> > +++ b/meta/conf/distro/include/init-manager-systemd.inc
> > @@ -5,3 +5,5 @@ VIRTUAL-RUNTIME_init_manager ??= "systemd"
> >  VIRTUAL-RUNTIME_initscripts ??= "systemd-compat-units"
> >  VIRTUAL-RUNTIME_login_manager ??= "shadow-base"
> >  VIRTUAL-RUNTIME_dev_manager ??= "systemd"
> > +# systemd hardcodes /root in its source codes, other values are not 
> > +offically supported ROOT_HOME ?= "/root"
> > diff --git a/meta/recipes-core/systemd/systemd.inc 
> > b/meta/recipes-core/systemd/systemd.inc
> > index ccc3236457..1417e0150f 100644
> > --- a/meta/recipes-core/systemd/systemd.inc
> > +++ b/meta/recipes-core/systemd/systemd.inc
> > @@ -15,8 +15,8 @@ LICENSE:libsystemd = "LGPL-2.1-or-later"
> >  LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
> >                      file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
> >  
> > -SRCREV = "2e7504449a51fb38db9cd2da391c6434f82def51"
> > -SRCBRANCH = "v254-stable"
> > +SRCREV = "2018ccef6645ce00c784369a22dc4e98f6d7061d"
> > +SRCBRANCH = "v255-stable"
> >  SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=https;branch=${SRCBRANCH}"
> >  
> >  S = "${WORKDIR}/git"
> > diff --git 
> > a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependen
> > cy-links-at-install-tim.patch 
> > b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependen
> > cy-links-at-install-tim.patch
> > index 085f1e9052..be231cf6b2 100644
> > --- 
> > a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependen
> > cy-links-at-install-tim.patch
> > +++ b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-depe
> > +++ ndency-links-at-install-tim.patch
> > @@ -1,8 +1,8 @@
> > -From ca7d9a8d9c81702af9c599bb79706f12b1a465cf Mon Sep 17 00:00:00 
> > 2001
> > +From 29a58009a172e369ad7166e16dab2f4945c6b0d2 Mon Sep 17 00:00:00 
> > +2001
> >  From: Chen Qi <Qi.Chen@windriver.com>
> >  Date: Thu, 21 Feb 2019 16:23:24 +0800
> > -Subject: [PATCH] binfmt: Don't install dependency links at install 
> > time for
> > - the binfmt services
> > +Subject: [PATCH 1/2] binfmt: Don't install dependency links at 
> > +install time  for the binfmt services
> >  
> >  use [Install] blocks so that they get created when the service is 
> > enabled  like a traditional service.
> > @@ -25,10 +25,10 @@ Signed-off-by: Scott Murray <scott.murray@konsulko.com>
> >   3 files changed, 7 insertions(+), 2 deletions(-)
> >  
> >  diff --git a/units/meson.build b/units/meson.build -index 
> > c7939a10f8..219570ab19 100644
> > +index e7bfb7f838..1d5ec4b178 100644
> >  --- a/units/meson.build
> >  +++ b/units/meson.build
> > -@@ -149,7 +149,6 @@ units = [
> > +@@ -154,7 +154,6 @@ units = [
> >           {
> >             'file' : 'proc-sys-fs-binfmt_misc.automount',
> >             'conditions' : ['ENABLE_BINFMT'], @@ -36,7 +36,7 @@ index 
> > c7939a10f8..219570ab19 100644
> >           },
> >           {
> >             'file' : 'proc-sys-fs-binfmt_misc.mount', -@@ -246,7 
> > +245,6 @@ units = [
> > +@@ -251,7 +250,6 @@ units = [
> >           {
> >             'file' : 'systemd-binfmt.service.in',
> >             'conditions' : ['ENABLE_BINFMT'], @@ -45,7 +45,7 @@ index 
> > c7939a10f8..219570ab19 100644
> >           {
> >             'file' : 'systemd-bless-boot.service.in',  diff --git 
> > a/units/proc-sys-fs-binfmt_misc.automount 
> > b/units/proc-sys-fs-binfmt_misc.automount
> > -index 6b1bbdc91e..5ec5b8670a 100644
> > +index 5d212015a5..6c2900ca77 100644
> >  --- a/units/proc-sys-fs-binfmt_misc.automount
> >  +++ b/units/proc-sys-fs-binfmt_misc.automount
> >  @@ -22,3 +22,6 @@ Before=shutdown.target @@ -56,7 +56,7 @@ index 
> > 6b1bbdc91e..5ec5b8670a 100644  +[Install]  +WantedBy=sysinit.target  
> > diff --git a/units/systemd-binfmt.service.in 
> > b/units/systemd-binfmt.service.in -index b04412e037..63f116e4fa 100644
> > +index 6861c76674..531e9fbd90 100644
> >  --- a/units/systemd-binfmt.service.in  +++ 
> > b/units/systemd-binfmt.service.in  @@ -14,6 +14,7 @@ 
> > Documentation=https://docs.kernel.org/admin-guide/binfmt-misc.html
> > @@ -68,12 +68,12 @@ index b04412e037..63f116e4fa 100644
> >   After=proc-sys-fs-binfmt_misc.mount
> >   After=local-fs.target
> >  @@ -31,3 +32,6 @@ RemainAfterExit=yes
> > - ExecStart={{ROOTLIBEXECDIR}}/systemd-binfmt
> > - ExecStop={{ROOTLIBEXECDIR}}/systemd-binfmt --unregister
> > + ExecStart={{LIBEXECDIR}}/systemd-binfmt
> > + ExecStop={{LIBEXECDIR}}/systemd-binfmt --unregister
> >   TimeoutSec=90s
> >  +
> >  +[Install]
> >  +WantedBy=sysinit.target
> >  --
> > -2.39.2
> > +2.34.1
> >  
> > diff --git 
> > a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binf
> > mt.d-modules-load.d-to-.patch 
> > b/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binf
> > mt.d-modules-load.d-to-.patch
> > deleted file mode 100644
> > index 98914ae154..0000000000
> > --- 
> > a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binf
> > mt.d-modules-load.d-to-.patch
> > +++ /dev/null
> > @@ -1,73 +0,0 @@
> > -From f75f03ef6bc3554068e456bed227f333d5cb8c34 Mon Sep 17 00:00:00 
> > 2001
> > -From: Khem Raj <raj.khem@gmail.com>
> > -Date: Tue, 29 Sep 2020 18:01:41 -0700
> > -Subject: [PATCH] Move sysusers.d/sysctl.d/binfmt.d/modules-load.d to 
> > /usr
> > -
> > -These directories are moved to /lib since systemd v246, commit 
> > -4a56315a990b ("path: use ROOTPREFIX properly"), but in oe-core/yocto, 
> > -the old /usr/lib is still being used.
> > -
> > -Upstream-Status: Inappropriate (OE-specific)
> > -Signed-off-by: Khem Raj <raj.khem@gmail.com>
> > -Signed-off-by: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
> > ----
> > - src/core/systemd.pc.in           | 8 ++++----
> > - src/libsystemd/sd-path/sd-path.c | 8 ++++----
> > - 2 files changed, 8 insertions(+), 8 deletions(-)
> > -
> > -diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in -index 
> > 693433b34b..8368a3ff02 100644
> > ---- a/src/core/systemd.pc.in
> > -+++ b/src/core/systemd.pc.in
> > -@@ -67,16 +67,16 @@ tmpfilesdir=${tmpfiles_dir}
> > -
> > - user_tmpfiles_dir=${prefix}/share/user-tmpfiles.d
> > -
> > --sysusers_dir=${rootprefix}/lib/sysusers.d
> > -+sysusers_dir=${prefix}/lib/sysusers.d
> > - sysusersdir=${sysusers_dir}
> > -
> > --sysctl_dir=${rootprefix}/lib/sysctl.d
> > -+sysctl_dir=${prefix}/lib/sysctl.d
> > - sysctldir=${sysctl_dir}
> > -
> > --binfmt_dir=${rootprefix}/lib/binfmt.d
> > -+binfmt_dir=${prefix}/lib/binfmt.d
> > - binfmtdir=${binfmt_dir}
> > -
> > --modules_load_dir=${rootprefix}/lib/modules-load.d
> > -+modules_load_dir=${prefix}/lib/modules-load.d
> > - modulesloaddir=${modules_load_dir}
> > -
> > - catalog_dir=${prefix}/lib/systemd/catalog
> > -diff --git a/src/libsystemd/sd-path/sd-path.c 
> > b/src/libsystemd/sd-path/sd-path.c
> > -index 1af3a36d1d..def502b717 100644
> > ---- a/src/libsystemd/sd-path/sd-path.c
> > -+++ b/src/libsystemd/sd-path/sd-path.c
> > -@@ -365,19 +365,19 @@ static int get_path(uint64_t type, char **buffer, const char **ret) {
> > -                 return 0;
> > - 
> > -         case SD_PATH_SYSUSERS:
> > --                *ret = ROOTPREFIX_NOSLASH "/lib/sysusers.d";
> > -+                *ret = "/usr/lib/sysusers.d";
> > -                 return 0;
> > - 
> > -         case SD_PATH_SYSCTL:
> > --                *ret = ROOTPREFIX_NOSLASH "/lib/sysctl.d";
> > -+                *ret = "/usr/lib/sysctl.d";
> > -                 return 0;
> > - 
> > -         case SD_PATH_BINFMT:
> > --                *ret = ROOTPREFIX_NOSLASH "/lib/binfmt.d";
> > -+                *ret = "/usr/lib/binfmt.d";
> > -                 return 0;
> > - 
> > -         case SD_PATH_MODULES_LOAD:
> > --                *ret = ROOTPREFIX_NOSLASH "/lib/modules-load.d";
> > -+                *ret = "/usr/lib/modules-load.d";
> > -                 return 0;
> > - 
> > -         case SD_PATH_CATALOG:
> > ---
> > -2.39.2
> > -
> > diff --git a/meta/recipes-core/systemd/systemd/basic.conf.in 
> > b/meta/recipes-core/systemd/systemd/basic.conf.in
> > deleted file mode 100644
> > index fac288f7fa..0000000000
> > --- a/meta/recipes-core/systemd/systemd/basic.conf.in
> > +++ /dev/null
> > @@ -1,40 +0,0 @@
> > -#  This file is part of systemd.
> > -#
> > -#  systemd is free software; you can redistribute it and/or modify it 
> > -#  under the terms of the GNU Lesser General Public License as 
> > published by -#  the Free Software Foundation; either version 2.1 of 
> > the License, or -#  (at your option) any later version.
> > -
> > -# The superuser
> > -u root    0     "root" :ROOT_HOME:
> > -
> > -# The nobody user/group for NFS file systems
> > -g {{NOBODY_GROUP_NAME}} 65534       -            -
> > -u {{NOBODY_USER_NAME }} 65534:65534 "Nobody"     -
> > -
> > -# Administrator group: can *see* more than normal users
> > -g adm     {{ADM_GID    }}     -            -
> > -
> > -# Administrator group: can *do* more than normal users
> > -g wheel   {{WHEEL_GID  }}     -            -
> > -
> > -# Access to shared database of users on the system
> > -g utmp    {{UTMP_GID   }}     -            -
> > -
> > -# Physical and virtual hardware access groups
> > -g audio   {{AUDIO_GID  }}     -            -
> > -g cdrom   {{CDROM_GID  }}     -            -
> > -g dialout {{DIALOUT_GID}}     -            -
> > -g disk    {{DISK_GID   }}     -            -
> > -g input   {{INPUT_GID  }}     -            -
> > -g kmem    {{KMEM_GID   }}     -            -
> > -g kvm     {{KVM_GID    }}     -            -
> > -g lp      {{LP_GID     }}     -            -
> > -g render  {{RENDER_GID }}     -            -
> > -g sgx     {{SGX_GID    }}     -            -
> > -g tape    {{TAPE_GID   }}     -            -
> > -g tty     {{TTY_GID    }}     -            -
> > -g video   {{VIDEO_GID  }}     -            -
> > -
> > -# Default group for normal users
> > -g users   {{USERS_GID  }}     -            -
> > diff --git a/meta/recipes-core/systemd/systemd_254.4.bb 
> > b/meta/recipes-core/systemd/systemd_255.1.bb
> > similarity index 98%
> > rename from meta/recipes-core/systemd/systemd_254.4.bb
> > rename to meta/recipes-core/systemd/systemd_255.1.bb
> > index 0c12926bef..daa3a01fef 100644
> > --- a/meta/recipes-core/systemd/systemd_254.4.bb
> > +++ b/meta/recipes-core/systemd/systemd_255.1.bb
> > @@ -21,7 +21,6 @@ REQUIRED_DISTRO_FEATURES += "systemd"
> >  SRC_URI += " \
> >             file://touchscreen.rules \
> >             file://00-create-volatile.conf \
> > -           file://basic.conf.in \
> >             ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://org.freedesktop.hostname1_no_polkit.conf', '', d)} \
> >             ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://00-hostnamed-network-user.conf', '', d)} \
> >             file://init \
> > @@ -29,7 +28,6 @@ SRC_URI += " \
> >             file://systemd-pager.sh \
> >             file://0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
> >             file://0008-implment-systemd-sysv-install-for-OE.patch \
> > -           file://0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch \
> >             "
> >  
> >  # patches needed by musl
> > @@ -73,6 +71,7 @@ PACKAGECONFIG ??= " \
> >      ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '', 'link-udev-shared', d)} \
> >      backlight \
> >      binfmt \
> > +    cgroupv2 \
> >      gshadow \
> >      hibernate \
> >      hostnamed \
> > @@ -266,12 +265,16 @@ EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec 
> > \  # The 60 seconds is watchdog's default vaule.
> >  WATCHDOG_TIMEOUT ??= "60"
> >  
> > -do_configure:prepend() {
> > -  sed s@:ROOT_HOME:@${ROOT_HOME}@g ${WORKDIR}/basic.conf.in > 
> > ${S}/sysusers.d/basic.conf.in -}
> > -
> >  do_install() {
> >  	meson_do_install
> > +	# Change the root user's home directory in /lib/sysusers.d/basic.conf.
> > +	# This is done merely for backward compatibility with previous systemd recipes.
> > +	# systemd hardcodes root user's HOME to be "/root". Changing to use other values
> > +	# may have unexpected runtime behaviors.
> > +	if [ "${ROOT_HOME}" != "/root" ]; then
> > +		bbwarn "Using ${ROOT_HOME} as root user's home directory is not fully supported by systemd"
> > +		sed -i -e 's#/root#${ROOT_HOME}#g' ${D}${exec_prefix}/lib/sysusers.d/basic.conf
> > +	fi
> >  	install -d ${D}/${base_sbindir}
> >  	if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then
> >  		# Provided by a separate recipe
> > @@ -754,6 +757,7 @@ FILES:udev += "${base_sbindir}/udevd \
> >                 ${rootlibexecdir}/udev/rules.d/60-persistent-alsa.rules \
> >                 ${rootlibexecdir}/udev/rules.d/60-persistent-input.rules \
> >                 
> > ${rootlibexecdir}/udev/rules.d/60-persistent-storage.rules \
> > +               
> > + ${rootlibexecdir}/udev/rules.d/60-persistent-storage-mtd.rules \
> >                 ${rootlibexecdir}/udev/rules.d/60-persistent-storage-tape.rules \
> >                 ${rootlibexecdir}/udev/rules.d/60-persistent-v4l.rules \
> >                 ${rootlibexecdir}/udev/rules.d/60-sensor.rules \
> > --
> > 2.34.1
> > 
> 
> > 
> > -=-=-=-=-=-=-=-=-=-=-=-
> > Links: You receive all messages sent to this group.
> > View/Reply Online (#192923): https://lists.openembedded.org/g/openembedded-core/message/192923
> > Mute This Topic: https://lists.openembedded.org/mt/103380516/3617179
> > Group Owner: openembedded-core+owner@lists.openembedded.org
> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> > -=-=-=-=-=-=-=-=-=-=-=-
> > 
> 
> 
> -- 
> Alexandre Belloni, co-owner and COO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
ChenQi Dec. 29, 2023, 2:38 a.m. UTC | #6
On 12/29/23 05:14, Alexandre Belloni wrote:
> On 28/12/2023 03:00:08+0000, Chen, Qi wrote:
>> I double checked it in my environment, setting INIT_MANAGER to "systemd" and then 'bitbake systemd' will not generate this warning. In this case ROOT_HOME's value is "/root".
>> I checked https://autobuilder.yoctoproject.org/typhoon/#/builders/40/builds/8354, but I couldn't find the configuration items that set the init manager to systemd.
>> Does the build use the variable 'INIT_MANAGER'? Does it set ROOT_HOME to "/home/root" somewhere?
>>
> This is the config that is used:
>
> MACHINE = "qemux86-64"
> DISTRO = "poky"
> SDKMACHINE = "x86_64"
> PACKAGE_CLASSES = "package_rpm package_deb package_ipk"
> DL_DIR = '/srv/autobuilder/autobuilder.yocto.io/current_sources'
> SSTATE_DIR ?= '/srv/autobuilder/autobuilder.yocto.io/pub/sstate'

> TEST_SUITES:append = ' systemd'
> DISTRO_FEATURES:append = ' pam systemd usrmerge'
> VIRTUAL-RUNTIME_init_manager = 'systemd'
> DISTRO_FEATURES_BACKFILL_CONSIDERED = 'sysvinit'

OK, I see.

I'd suggest replacing the above 4 lines with a single line:

INIT_MANAGER = "systemd"

The INIT_MANAGER mechanism was added to make switching init managers easier.

Another choice is adding the following line to sync with the 
meta/conf/distro/include/init-manager-systemd.inc settings.

ROOT_HOME ?= "/root"

Regards,

Qi


> DISTRO_FEATURES:remove = 'x11'
> QEMU_USE_KVM = 'True'
> INHERIT += 'report-error'
> PREMIRRORS = ''
> BB_GENERATE_MIRROR_TARBALLS = '1'
> BB_NUMBER_THREADS = '16'
> BB_NUMBER_PARSE_THREADS = '16'
> PARALLEL_MAKE = '-j 16 -l 52'
> BB_PRESSURE_MAX_CPU = '10000'
> BB_PRESSURE_MAX_IO = '10000'
> XZ_MEMLIMIT = '5%'
> XZ_THREADS = '8'
> ZSTD_THREADS = '8'
> BB_TASK_NICE_LEVEL = '5'
> BB_TASK_NICE_LEVEL:task-testimage = '0'
> BB_TASK_IONICE_LEVEL = '2.7'
> BB_TASK_IONICE_LEVEL:task-testimage = '2.1'
> IMAGE_CLASSES += 'testimage'
> TEST_QEMUBOOT_TIMEOUT = '1500'
> SANITY_TESTED_DISTROS = ''
> SDK_EXT_TYPE = 'minimal'
> SDK_INCLUDE_TOOLCHAIN = '1'
> ESDK_LOCAL_CONF_REMOVE:append = 'BB_HASHSERVE'
> BB_DISKMON_DIRS = 'STOPTASKS,${TMPDIR},1G,100K STOPTASKS,${DL_DIR},1G STOPTASKS,${SSTATE_DIR},1G STOPTASKS,/tmp,100M,30K HALT,${TMPDIR},100M,1K HALT,${DL_DIR},100M HALT,${SSTATE_DIR},100M HALT,/tmp,10M,1K'
> BB_HASHSERVE = 'hashserv.yocto.io:8686'
> RUNQEMU_TMPFS_DIR = '/home/pokybuild/tmp'
> BB_HEARTBEAT_EVENT = '60'
> BB_LOG_HOST_STAT_ON_INTERVAL = '1'
> BB_LOG_HOST_STAT_CMDS_INTERVAL = 'oe-time-dd-test.sh -c 100 -t 3'
> BB_LOG_HOST_STAT_ON_FAILURE = '1'
> BB_LOG_HOST_STAT_CMDS_FAILURE = 'oe-time-dd-test.sh -l'
> SDK_TOOLCHAIN_LANGS += 'rust'
> BB_SERVER_TIMEOUT = '60'
>
> It is in auto.conf and it is displayed in the first lines of
> https://autobuilder.yoctoproject.org/typhoon/#/builders/40/builds/8354/steps/14/logs/stdio
>
>> Regards,
>> Qi
>>
>> -----Original Message-----
>> From: Alexandre Belloni <alexandre.belloni@bootlin.com>
>> Sent: Wednesday, December 27, 2023 7:59 PM
>> To: Chen, Qi <Qi.Chen@windriver.com>
>> Cc: openembedded-core@lists.openembedded.org
>> Subject: Re: [OE-core][PATCH 1/3] systemd: upgrade to 255.1
>>
>> We hit the added warning on the autobuilders:
>>
>> WARNING: systemd-1_255.1-r0 do_install: Using /home/root as root user's home directory is not fully supported by systemd
>>
>> https://autobuilder.yoctoproject.org/typhoon/#/builders/40/builds/8354/steps/14/logs/warnings
>>
>> On 27/12/2023 12:20:34+0800, Chen Qi via lists.openembedded.org wrote:
>>> From: Chen Qi <Qi.Chen@windriver.com>
>>>
>>> 1. Patch changes:
>>>
>>> 0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
>>> is removed because it has no real effect now. The /lib is now /usr/lib
>>> because 'usrmerge' is a required distro feature for systemd.
>>>
>>> 0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch is
>>> refreshed for the new version to avoid patch-fuzz issue.
>>>
>>> 2. root user's home directory now defaults to "/root":
>>>
>>> The sysuers.d/basic.conf is still modified to respect the ROOT_HOME
>>> value, so if users set ROOT_HOME to "/home/root", the behavior is the
>>> same as before. However, this is only for backward compatibility. With
>>> this patch, The ROOT_HOME value is set to "/root" in init-manager-systemd.inc.
>>> This is because systemd's source codes are hardcoding "/root", and
>>> other values are not officially supported. See the list below.
>>> $ grep -rl '"/root"' src/ | grep -v 'src/test'
>>> src/core/namespace.c
>>> src/basic/user-util.c
>>> src/nss-systemd/nss-systemd.c
>>> src/nspawn/nspawn.c
>>> src/firstboot/firstboot.c
>>> src/shared/userdb.c
>>> src/shared/user-record.c
>>> $ grep -rl /root network/ factory/ sysctl.d/ sysusers.d/ rules.d/
>>> tmpfiles.d/ units/ xorg/ tools/ sysusers.d/basic.conf.in
>>> tmpfiles.d/provision.conf units/emergency.service.in
>>> units/rescue.service.in tools/list-discoverable-partitions.py
>>> Previously, the recipe was just substituting sysusers.d/basic.conf.in,
>>> which is not enough to be treated as 'fully support'. I deliberately
>>> put a warning message in do_install to warn users about non "/root"
>>> ROOT_HOME value. Don't remove it until all above places are handled.
>>>
>>> 3. cgroupv2 is now the default.
>>> cgroupv2 is the default for systemd for many years and it's the
>>> default for distros such as ubuntu and fedora. Let's also use it as the default.
>>>
>>> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
>>> ---
>>>   .../distro/include/init-manager-systemd.inc   |  2 +
>>>   meta/recipes-core/systemd/systemd.inc         |  4 +-
>>>   ...tall-dependency-links-at-install-tim.patch | 22 +++---
>>> ...sysctl.d-binfmt.d-modules-load.d-to-.patch | 73 -------------------
>>>   .../systemd/systemd/basic.conf.in             | 40 ----------
>>>   .../{systemd_254.4.bb => systemd_255.1.bb}    | 16 ++--
>>>   6 files changed, 25 insertions(+), 132 deletions(-)  delete mode
>>> 100644
>>> meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt
>>> .d-modules-load.d-to-.patch  delete mode 100644
>>> meta/recipes-core/systemd/systemd/basic.conf.in
>>>   rename meta/recipes-core/systemd/{systemd_254.4.bb =>
>>> systemd_255.1.bb} (98%)
>>>
>>> diff --git a/meta/conf/distro/include/init-manager-systemd.inc
>>> b/meta/conf/distro/include/init-manager-systemd.inc
>>> index 595d1f2644..0a76647459 100644
>>> --- a/meta/conf/distro/include/init-manager-systemd.inc
>>> +++ b/meta/conf/distro/include/init-manager-systemd.inc
>>> @@ -5,3 +5,5 @@ VIRTUAL-RUNTIME_init_manager ??= "systemd"
>>>   VIRTUAL-RUNTIME_initscripts ??= "systemd-compat-units"
>>>   VIRTUAL-RUNTIME_login_manager ??= "shadow-base"
>>>   VIRTUAL-RUNTIME_dev_manager ??= "systemd"
>>> +# systemd hardcodes /root in its source codes, other values are not
>>> +offically supported ROOT_HOME ?= "/root"
>>> diff --git a/meta/recipes-core/systemd/systemd.inc
>>> b/meta/recipes-core/systemd/systemd.inc
>>> index ccc3236457..1417e0150f 100644
>>> --- a/meta/recipes-core/systemd/systemd.inc
>>> +++ b/meta/recipes-core/systemd/systemd.inc
>>> @@ -15,8 +15,8 @@ LICENSE:libsystemd = "LGPL-2.1-or-later"
>>>   LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
>>>                       file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
>>>   
>>> -SRCREV = "2e7504449a51fb38db9cd2da391c6434f82def51"
>>> -SRCBRANCH = "v254-stable"
>>> +SRCREV = "2018ccef6645ce00c784369a22dc4e98f6d7061d"
>>> +SRCBRANCH = "v255-stable"
>>>   SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=https;branch=${SRCBRANCH}"
>>>   
>>>   S = "${WORKDIR}/git"
>>> diff --git
>>> a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependen
>>> cy-links-at-install-tim.patch
>>> b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependen
>>> cy-links-at-install-tim.patch
>>> index 085f1e9052..be231cf6b2 100644
>>> ---
>>> a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependen
>>> cy-links-at-install-tim.patch
>>> +++ b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-depe
>>> +++ ndency-links-at-install-tim.patch
>>> @@ -1,8 +1,8 @@
>>> -From ca7d9a8d9c81702af9c599bb79706f12b1a465cf Mon Sep 17 00:00:00
>>> 2001
>>> +From 29a58009a172e369ad7166e16dab2f4945c6b0d2 Mon Sep 17 00:00:00
>>> +2001
>>>   From: Chen Qi <Qi.Chen@windriver.com>
>>>   Date: Thu, 21 Feb 2019 16:23:24 +0800
>>> -Subject: [PATCH] binfmt: Don't install dependency links at install
>>> time for
>>> - the binfmt services
>>> +Subject: [PATCH 1/2] binfmt: Don't install dependency links at
>>> +install time  for the binfmt services
>>>   
>>>   use [Install] blocks so that they get created when the service is
>>> enabled  like a traditional service.
>>> @@ -25,10 +25,10 @@ Signed-off-by: Scott Murray <scott.murray@konsulko.com>
>>>    3 files changed, 7 insertions(+), 2 deletions(-)
>>>   
>>>   diff --git a/units/meson.build b/units/meson.build -index
>>> c7939a10f8..219570ab19 100644
>>> +index e7bfb7f838..1d5ec4b178 100644
>>>   --- a/units/meson.build
>>>   +++ b/units/meson.build
>>> -@@ -149,7 +149,6 @@ units = [
>>> +@@ -154,7 +154,6 @@ units = [
>>>            {
>>>              'file' : 'proc-sys-fs-binfmt_misc.automount',
>>>              'conditions' : ['ENABLE_BINFMT'], @@ -36,7 +36,7 @@ index
>>> c7939a10f8..219570ab19 100644
>>>            },
>>>            {
>>>              'file' : 'proc-sys-fs-binfmt_misc.mount', -@@ -246,7
>>> +245,6 @@ units = [
>>> +@@ -251,7 +250,6 @@ units = [
>>>            {
>>>              'file' : 'systemd-binfmt.service.in',
>>>              'conditions' : ['ENABLE_BINFMT'], @@ -45,7 +45,7 @@ index
>>> c7939a10f8..219570ab19 100644
>>>            {
>>>              'file' : 'systemd-bless-boot.service.in',  diff --git
>>> a/units/proc-sys-fs-binfmt_misc.automount
>>> b/units/proc-sys-fs-binfmt_misc.automount
>>> -index 6b1bbdc91e..5ec5b8670a 100644
>>> +index 5d212015a5..6c2900ca77 100644
>>>   --- a/units/proc-sys-fs-binfmt_misc.automount
>>>   +++ b/units/proc-sys-fs-binfmt_misc.automount
>>>   @@ -22,3 +22,6 @@ Before=shutdown.target @@ -56,7 +56,7 @@ index
>>> 6b1bbdc91e..5ec5b8670a 100644  +[Install]  +WantedBy=sysinit.target
>>> diff --git a/units/systemd-binfmt.service.in
>>> b/units/systemd-binfmt.service.in -index b04412e037..63f116e4fa 100644
>>> +index 6861c76674..531e9fbd90 100644
>>>   --- a/units/systemd-binfmt.service.in  +++
>>> b/units/systemd-binfmt.service.in  @@ -14,6 +14,7 @@
>>> Documentation=https://docs.kernel.org/admin-guide/binfmt-misc.html
>>> @@ -68,12 +68,12 @@ index b04412e037..63f116e4fa 100644
>>>    After=proc-sys-fs-binfmt_misc.mount
>>>    After=local-fs.target
>>>   @@ -31,3 +32,6 @@ RemainAfterExit=yes
>>> - ExecStart={{ROOTLIBEXECDIR}}/systemd-binfmt
>>> - ExecStop={{ROOTLIBEXECDIR}}/systemd-binfmt --unregister
>>> + ExecStart={{LIBEXECDIR}}/systemd-binfmt
>>> + ExecStop={{LIBEXECDIR}}/systemd-binfmt --unregister
>>>    TimeoutSec=90s
>>>   +
>>>   +[Install]
>>>   +WantedBy=sysinit.target
>>>   --
>>> -2.39.2
>>> +2.34.1
>>>   
>>> diff --git
>>> a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binf
>>> mt.d-modules-load.d-to-.patch
>>> b/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binf
>>> mt.d-modules-load.d-to-.patch
>>> deleted file mode 100644
>>> index 98914ae154..0000000000
>>> ---
>>> a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binf
>>> mt.d-modules-load.d-to-.patch
>>> +++ /dev/null
>>> @@ -1,73 +0,0 @@
>>> -From f75f03ef6bc3554068e456bed227f333d5cb8c34 Mon Sep 17 00:00:00
>>> 2001
>>> -From: Khem Raj <raj.khem@gmail.com>
>>> -Date: Tue, 29 Sep 2020 18:01:41 -0700
>>> -Subject: [PATCH] Move sysusers.d/sysctl.d/binfmt.d/modules-load.d to
>>> /usr
>>> -
>>> -These directories are moved to /lib since systemd v246, commit
>>> -4a56315a990b ("path: use ROOTPREFIX properly"), but in oe-core/yocto,
>>> -the old /usr/lib is still being used.
>>> -
>>> -Upstream-Status: Inappropriate (OE-specific)
>>> -Signed-off-by: Khem Raj <raj.khem@gmail.com>
>>> -Signed-off-by: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
>>> ----
>>> - src/core/systemd.pc.in           | 8 ++++----
>>> - src/libsystemd/sd-path/sd-path.c | 8 ++++----
>>> - 2 files changed, 8 insertions(+), 8 deletions(-)
>>> -
>>> -diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in -index
>>> 693433b34b..8368a3ff02 100644
>>> ---- a/src/core/systemd.pc.in
>>> -+++ b/src/core/systemd.pc.in
>>> -@@ -67,16 +67,16 @@ tmpfilesdir=${tmpfiles_dir}
>>> -
>>> - user_tmpfiles_dir=${prefix}/share/user-tmpfiles.d
>>> -
>>> --sysusers_dir=${rootprefix}/lib/sysusers.d
>>> -+sysusers_dir=${prefix}/lib/sysusers.d
>>> - sysusersdir=${sysusers_dir}
>>> -
>>> --sysctl_dir=${rootprefix}/lib/sysctl.d
>>> -+sysctl_dir=${prefix}/lib/sysctl.d
>>> - sysctldir=${sysctl_dir}
>>> -
>>> --binfmt_dir=${rootprefix}/lib/binfmt.d
>>> -+binfmt_dir=${prefix}/lib/binfmt.d
>>> - binfmtdir=${binfmt_dir}
>>> -
>>> --modules_load_dir=${rootprefix}/lib/modules-load.d
>>> -+modules_load_dir=${prefix}/lib/modules-load.d
>>> - modulesloaddir=${modules_load_dir}
>>> -
>>> - catalog_dir=${prefix}/lib/systemd/catalog
>>> -diff --git a/src/libsystemd/sd-path/sd-path.c
>>> b/src/libsystemd/sd-path/sd-path.c
>>> -index 1af3a36d1d..def502b717 100644
>>> ---- a/src/libsystemd/sd-path/sd-path.c
>>> -+++ b/src/libsystemd/sd-path/sd-path.c
>>> -@@ -365,19 +365,19 @@ static int get_path(uint64_t type, char **buffer, const char **ret) {
>>> -                 return 0;
>>> -
>>> -         case SD_PATH_SYSUSERS:
>>> --                *ret = ROOTPREFIX_NOSLASH "/lib/sysusers.d";
>>> -+                *ret = "/usr/lib/sysusers.d";
>>> -                 return 0;
>>> -
>>> -         case SD_PATH_SYSCTL:
>>> --                *ret = ROOTPREFIX_NOSLASH "/lib/sysctl.d";
>>> -+                *ret = "/usr/lib/sysctl.d";
>>> -                 return 0;
>>> -
>>> -         case SD_PATH_BINFMT:
>>> --                *ret = ROOTPREFIX_NOSLASH "/lib/binfmt.d";
>>> -+                *ret = "/usr/lib/binfmt.d";
>>> -                 return 0;
>>> -
>>> -         case SD_PATH_MODULES_LOAD:
>>> --                *ret = ROOTPREFIX_NOSLASH "/lib/modules-load.d";
>>> -+                *ret = "/usr/lib/modules-load.d";
>>> -                 return 0;
>>> -
>>> -         case SD_PATH_CATALOG:
>>> ---
>>> -2.39.2
>>> -
>>> diff --git a/meta/recipes-core/systemd/systemd/basic.conf.in
>>> b/meta/recipes-core/systemd/systemd/basic.conf.in
>>> deleted file mode 100644
>>> index fac288f7fa..0000000000
>>> --- a/meta/recipes-core/systemd/systemd/basic.conf.in
>>> +++ /dev/null
>>> @@ -1,40 +0,0 @@
>>> -#  This file is part of systemd.
>>> -#
>>> -#  systemd is free software; you can redistribute it and/or modify it
>>> -#  under the terms of the GNU Lesser General Public License as
>>> published by -#  the Free Software Foundation; either version 2.1 of
>>> the License, or -#  (at your option) any later version.
>>> -
>>> -# The superuser
>>> -u root    0     "root" :ROOT_HOME:
>>> -
>>> -# The nobody user/group for NFS file systems
>>> -g {{NOBODY_GROUP_NAME}} 65534       -            -
>>> -u {{NOBODY_USER_NAME }} 65534:65534 "Nobody"     -
>>> -
>>> -# Administrator group: can *see* more than normal users
>>> -g adm     {{ADM_GID    }}     -            -
>>> -
>>> -# Administrator group: can *do* more than normal users
>>> -g wheel   {{WHEEL_GID  }}     -            -
>>> -
>>> -# Access to shared database of users on the system
>>> -g utmp    {{UTMP_GID   }}     -            -
>>> -
>>> -# Physical and virtual hardware access groups
>>> -g audio   {{AUDIO_GID  }}     -            -
>>> -g cdrom   {{CDROM_GID  }}     -            -
>>> -g dialout {{DIALOUT_GID}}     -            -
>>> -g disk    {{DISK_GID   }}     -            -
>>> -g input   {{INPUT_GID  }}     -            -
>>> -g kmem    {{KMEM_GID   }}     -            -
>>> -g kvm     {{KVM_GID    }}     -            -
>>> -g lp      {{LP_GID     }}     -            -
>>> -g render  {{RENDER_GID }}     -            -
>>> -g sgx     {{SGX_GID    }}     -            -
>>> -g tape    {{TAPE_GID   }}     -            -
>>> -g tty     {{TTY_GID    }}     -            -
>>> -g video   {{VIDEO_GID  }}     -            -
>>> -
>>> -# Default group for normal users
>>> -g users   {{USERS_GID  }}     -            -
>>> diff --git a/meta/recipes-core/systemd/systemd_254.4.bb
>>> b/meta/recipes-core/systemd/systemd_255.1.bb
>>> similarity index 98%
>>> rename from meta/recipes-core/systemd/systemd_254.4.bb
>>> rename to meta/recipes-core/systemd/systemd_255.1.bb
>>> index 0c12926bef..daa3a01fef 100644
>>> --- a/meta/recipes-core/systemd/systemd_254.4.bb
>>> +++ b/meta/recipes-core/systemd/systemd_255.1.bb
>>> @@ -21,7 +21,6 @@ REQUIRED_DISTRO_FEATURES += "systemd"
>>>   SRC_URI += " \
>>>              file://touchscreen.rules \
>>>              file://00-create-volatile.conf \
>>> -           file://basic.conf.in \
>>>              ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://org.freedesktop.hostname1_no_polkit.conf', '', d)} \
>>>              ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://00-hostnamed-network-user.conf', '', d)} \
>>>              file://init \
>>> @@ -29,7 +28,6 @@ SRC_URI += " \
>>>              file://systemd-pager.sh \
>>>              file://0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
>>>              file://0008-implment-systemd-sysv-install-for-OE.patch \
>>> -           file://0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch \
>>>              "
>>>   
>>>   # patches needed by musl
>>> @@ -73,6 +71,7 @@ PACKAGECONFIG ??= " \
>>>       ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '', 'link-udev-shared', d)} \
>>>       backlight \
>>>       binfmt \
>>> +    cgroupv2 \
>>>       gshadow \
>>>       hibernate \
>>>       hostnamed \
>>> @@ -266,12 +265,16 @@ EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec
>>> \  # The 60 seconds is watchdog's default vaule.
>>>   WATCHDOG_TIMEOUT ??= "60"
>>>   
>>> -do_configure:prepend() {
>>> -  sed s@:ROOT_HOME:@${ROOT_HOME}@g ${WORKDIR}/basic.conf.in >
>>> ${S}/sysusers.d/basic.conf.in -}
>>> -
>>>   do_install() {
>>>   	meson_do_install
>>> +	# Change the root user's home directory in /lib/sysusers.d/basic.conf.
>>> +	# This is done merely for backward compatibility with previous systemd recipes.
>>> +	# systemd hardcodes root user's HOME to be "/root". Changing to use other values
>>> +	# may have unexpected runtime behaviors.
>>> +	if [ "${ROOT_HOME}" != "/root" ]; then
>>> +		bbwarn "Using ${ROOT_HOME} as root user's home directory is not fully supported by systemd"
>>> +		sed -i -e 's#/root#${ROOT_HOME}#g' ${D}${exec_prefix}/lib/sysusers.d/basic.conf
>>> +	fi
>>>   	install -d ${D}/${base_sbindir}
>>>   	if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then
>>>   		# Provided by a separate recipe
>>> @@ -754,6 +757,7 @@ FILES:udev += "${base_sbindir}/udevd \
>>>                  ${rootlibexecdir}/udev/rules.d/60-persistent-alsa.rules \
>>>                  ${rootlibexecdir}/udev/rules.d/60-persistent-input.rules \
>>>                  
>>> ${rootlibexecdir}/udev/rules.d/60-persistent-storage.rules \
>>> +
>>> + ${rootlibexecdir}/udev/rules.d/60-persistent-storage-mtd.rules \
>>>                  ${rootlibexecdir}/udev/rules.d/60-persistent-storage-tape.rules \
>>>                  ${rootlibexecdir}/udev/rules.d/60-persistent-v4l.rules \
>>>                  ${rootlibexecdir}/udev/rules.d/60-sensor.rules \
>>> --
>>> 2.34.1
>>>
>>> -=-=-=-=-=-=-=-=-=-=-=-
>>> Links: You receive all messages sent to this group.
>>> View/Reply Online (#192923): https://lists.openembedded.org/g/openembedded-core/message/192923
>>> Mute This Topic: https://lists.openembedded.org/mt/103380516/3617179
>>> Group Owner: openembedded-core+owner@lists.openembedded.org
>>> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
>>> -=-=-=-=-=-=-=-=-=-=-=-
>>>
>>
>> -- 
>> Alexandre Belloni, co-owner and COO, Bootlin
>> Embedded Linux and Kernel engineering
>> https://bootlin.com
Alexander Kanavin Dec. 29, 2023, 8:03 a.m. UTC | #7
On Fri, 29 Dec 2023 at 03:38, Chen Qi via lists.openembedded.org
<Qi.Chen=windriver.com@lists.openembedded.org> wrote:
> > TEST_SUITES:append = ' systemd'
> > DISTRO_FEATURES:append = ' pam systemd usrmerge'
> > VIRTUAL-RUNTIME_init_manager = 'systemd'
> > DISTRO_FEATURES_BACKFILL_CONSIDERED = 'sysvinit'
>
> OK, I see.
>
> I'd suggest replacing the above 4 lines with a single line:
>
> INIT_MANAGER = "systemd"
>
> The INIT_MANAGER mechanism was added to make switching init managers easier.

I agree. The 4 lines are defined in two places here:
https://git.yoctoproject.org/yocto-autobuilder-helper/tree/config.json

Can you send a patch to replace them with INIT_MANAGER?

Alex
ChenQi Dec. 29, 2023, 10:48 a.m. UTC | #8
OK, I'll do it after New Year's Day.

Regards,
Qi


-----Original Message-----
From: Alexander Kanavin <alex.kanavin@gmail.com> 
Sent: Friday, December 29, 2023 4:04 PM
To: Chen, Qi <Qi.Chen@windriver.com>
Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>; openembedded-core@lists.openembedded.org
Subject: Re: [OE-core][PATCH 1/3] systemd: upgrade to 255.1

On Fri, 29 Dec 2023 at 03:38, Chen Qi via lists.openembedded.org <Qi.Chen=windriver.com@lists.openembedded.org> wrote:
> > TEST_SUITES:append = ' systemd'
> > DISTRO_FEATURES:append = ' pam systemd usrmerge'
> > VIRTUAL-RUNTIME_init_manager = 'systemd'
> > DISTRO_FEATURES_BACKFILL_CONSIDERED = 'sysvinit'
>
> OK, I see.
>
> I'd suggest replacing the above 4 lines with a single line:
>
> INIT_MANAGER = "systemd"
>
> The INIT_MANAGER mechanism was added to make switching init managers easier.

I agree. The 4 lines are defined in two places here:
https://git.yoctoproject.org/yocto-autobuilder-helper/tree/config.json

Can you send a patch to replace them with INIT_MANAGER?

Alex
Alexandre Belloni Jan. 5, 2024, 4:01 p.m. UTC | #9
Hello,

This fails with:

https://autobuilder.yoctoproject.org/typhoon/#/builders/106/builds/7361/steps/12/logs/warnings

WARNING: core-image-full-cmdline-1.0-r0 do_rootfs: User root has been defined as (root, 0, 0, root, /root, /bin/sh) but sysusers.d expects it as (root, 0, 0, Super User, /root, -)
WARNING: core-image-full-cmdline-1.0-r0 do_rootfs: User nobody has been defined as (nobody, 65534, 65534, nobody, /nonexistent, /usr/sbin/nologin) but sysusers.d expects it as (nobody, 65534, 65534, Kernel Overflow User, -, -)
WARNING: core-image-sato-1.0-r0 do_rootfs: User root has been defined as (root, 0, 0, root, /root, /bin/sh) but sysusers.d expects it as (root, 0, 0, Super User, /root, -)
WARNING: core-image-sato-1.0-r0 do_rootfs: User nobody has been defined as (nobody, 65534, 65534, nobody, /nonexistent, /usr/sbin/nologin) but sysusers.d expects it as (nobody, 65534, 65534, Kernel Overflow User, -, -)
WARNING: core-image-sato-sdk-1.0-r0 do_rootfs: User root has been defined as (root, 0, 0, root, /root, /bin/sh) but sysusers.d expects it as (root, 0, 0, Super User, /root, -)
WARNING: core-image-sato-sdk-1.0-r0 do_rootfs: User nobody has been defined as (nobody, 65534, 65534, nobody, /nonexistent, /usr/sbin/nologin) but sysusers.d expects it as (nobody, 65534, 65534, Kernel Overflow User, -, -)

On 27/12/2023 12:20:34+0800, Chen Qi via lists.openembedded.org wrote:
> From: Chen Qi <Qi.Chen@windriver.com>
> 
> 1. Patch changes:
> 
> 0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
> is removed because it has no real effect now. The /lib is now
> /usr/lib because 'usrmerge' is a required distro feature for systemd.
> 
> 0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch is
> refreshed for the new version to avoid patch-fuzz issue.
> 
> 2. root user's home directory now defaults to "/root":
> 
> The sysuers.d/basic.conf is still modified to respect the ROOT_HOME
> value, so if users set ROOT_HOME to "/home/root", the behavior is the
> same as before. However, this is only for backward compatibility. With
> this patch, The ROOT_HOME value is set to "/root" in init-manager-systemd.inc.
> This is because systemd's source codes are hardcoding "/root", and other
> values are not officially supported. See the list below.
> $ grep -rl '"/root"' src/ | grep -v 'src/test'
> src/core/namespace.c
> src/basic/user-util.c
> src/nss-systemd/nss-systemd.c
> src/nspawn/nspawn.c
> src/firstboot/firstboot.c
> src/shared/userdb.c
> src/shared/user-record.c
> $ grep -rl /root network/ factory/ sysctl.d/ sysusers.d/ rules.d/ tmpfiles.d/ units/ xorg/ tools/
> sysusers.d/basic.conf.in
> tmpfiles.d/provision.conf
> units/emergency.service.in
> units/rescue.service.in
> tools/list-discoverable-partitions.py
> Previously, the recipe was just substituting sysusers.d/basic.conf.in,
> which is not enough to be treated as 'fully support'. I deliberately put
> a warning message in do_install to warn users about non "/root" ROOT_HOME
> value. Don't remove it until all above places are handled.
> 
> 3. cgroupv2 is now the default.
> cgroupv2 is the default for systemd for many years and it's the default
> for distros such as ubuntu and fedora. Let's also use it as the default.
> 
> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> ---
>  .../distro/include/init-manager-systemd.inc   |  2 +
>  meta/recipes-core/systemd/systemd.inc         |  4 +-
>  ...tall-dependency-links-at-install-tim.patch | 22 +++---
>  ...sysctl.d-binfmt.d-modules-load.d-to-.patch | 73 -------------------
>  .../systemd/systemd/basic.conf.in             | 40 ----------
>  .../{systemd_254.4.bb => systemd_255.1.bb}    | 16 ++--
>  6 files changed, 25 insertions(+), 132 deletions(-)
>  delete mode 100644 meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
>  delete mode 100644 meta/recipes-core/systemd/systemd/basic.conf.in
>  rename meta/recipes-core/systemd/{systemd_254.4.bb => systemd_255.1.bb} (98%)
> 
> diff --git a/meta/conf/distro/include/init-manager-systemd.inc b/meta/conf/distro/include/init-manager-systemd.inc
> index 595d1f2644..0a76647459 100644
> --- a/meta/conf/distro/include/init-manager-systemd.inc
> +++ b/meta/conf/distro/include/init-manager-systemd.inc
> @@ -5,3 +5,5 @@ VIRTUAL-RUNTIME_init_manager ??= "systemd"
>  VIRTUAL-RUNTIME_initscripts ??= "systemd-compat-units"
>  VIRTUAL-RUNTIME_login_manager ??= "shadow-base"
>  VIRTUAL-RUNTIME_dev_manager ??= "systemd"
> +# systemd hardcodes /root in its source codes, other values are not offically supported
> +ROOT_HOME ?= "/root"
> diff --git a/meta/recipes-core/systemd/systemd.inc b/meta/recipes-core/systemd/systemd.inc
> index ccc3236457..1417e0150f 100644
> --- a/meta/recipes-core/systemd/systemd.inc
> +++ b/meta/recipes-core/systemd/systemd.inc
> @@ -15,8 +15,8 @@ LICENSE:libsystemd = "LGPL-2.1-or-later"
>  LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
>                      file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
>  
> -SRCREV = "2e7504449a51fb38db9cd2da391c6434f82def51"
> -SRCBRANCH = "v254-stable"
> +SRCREV = "2018ccef6645ce00c784369a22dc4e98f6d7061d"
> +SRCBRANCH = "v255-stable"
>  SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=https;branch=${SRCBRANCH}"
>  
>  S = "${WORKDIR}/git"
> diff --git a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
> index 085f1e9052..be231cf6b2 100644
> --- a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
> +++ b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
> @@ -1,8 +1,8 @@
> -From ca7d9a8d9c81702af9c599bb79706f12b1a465cf Mon Sep 17 00:00:00 2001
> +From 29a58009a172e369ad7166e16dab2f4945c6b0d2 Mon Sep 17 00:00:00 2001
>  From: Chen Qi <Qi.Chen@windriver.com>
>  Date: Thu, 21 Feb 2019 16:23:24 +0800
> -Subject: [PATCH] binfmt: Don't install dependency links at install time for
> - the binfmt services
> +Subject: [PATCH 1/2] binfmt: Don't install dependency links at install time
> + for the binfmt services
>  
>  use [Install] blocks so that they get created when the service is enabled
>  like a traditional service.
> @@ -25,10 +25,10 @@ Signed-off-by: Scott Murray <scott.murray@konsulko.com>
>   3 files changed, 7 insertions(+), 2 deletions(-)
>  
>  diff --git a/units/meson.build b/units/meson.build
> -index c7939a10f8..219570ab19 100644
> +index e7bfb7f838..1d5ec4b178 100644
>  --- a/units/meson.build
>  +++ b/units/meson.build
> -@@ -149,7 +149,6 @@ units = [
> +@@ -154,7 +154,6 @@ units = [
>           {
>             'file' : 'proc-sys-fs-binfmt_misc.automount',
>             'conditions' : ['ENABLE_BINFMT'],
> @@ -36,7 +36,7 @@ index c7939a10f8..219570ab19 100644
>           },
>           {
>             'file' : 'proc-sys-fs-binfmt_misc.mount',
> -@@ -246,7 +245,6 @@ units = [
> +@@ -251,7 +250,6 @@ units = [
>           {
>             'file' : 'systemd-binfmt.service.in',
>             'conditions' : ['ENABLE_BINFMT'],
> @@ -45,7 +45,7 @@ index c7939a10f8..219570ab19 100644
>           {
>             'file' : 'systemd-bless-boot.service.in',
>  diff --git a/units/proc-sys-fs-binfmt_misc.automount b/units/proc-sys-fs-binfmt_misc.automount
> -index 6b1bbdc91e..5ec5b8670a 100644
> +index 5d212015a5..6c2900ca77 100644
>  --- a/units/proc-sys-fs-binfmt_misc.automount
>  +++ b/units/proc-sys-fs-binfmt_misc.automount
>  @@ -22,3 +22,6 @@ Before=shutdown.target
> @@ -56,7 +56,7 @@ index 6b1bbdc91e..5ec5b8670a 100644
>  +[Install]
>  +WantedBy=sysinit.target
>  diff --git a/units/systemd-binfmt.service.in b/units/systemd-binfmt.service.in
> -index b04412e037..63f116e4fa 100644
> +index 6861c76674..531e9fbd90 100644
>  --- a/units/systemd-binfmt.service.in
>  +++ b/units/systemd-binfmt.service.in
>  @@ -14,6 +14,7 @@ Documentation=https://docs.kernel.org/admin-guide/binfmt-misc.html
> @@ -68,12 +68,12 @@ index b04412e037..63f116e4fa 100644
>   After=proc-sys-fs-binfmt_misc.mount
>   After=local-fs.target
>  @@ -31,3 +32,6 @@ RemainAfterExit=yes
> - ExecStart={{ROOTLIBEXECDIR}}/systemd-binfmt
> - ExecStop={{ROOTLIBEXECDIR}}/systemd-binfmt --unregister
> + ExecStart={{LIBEXECDIR}}/systemd-binfmt
> + ExecStop={{LIBEXECDIR}}/systemd-binfmt --unregister
>   TimeoutSec=90s
>  +
>  +[Install]
>  +WantedBy=sysinit.target
>  -- 
> -2.39.2
> +2.34.1
>  
> diff --git a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch b/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
> deleted file mode 100644
> index 98914ae154..0000000000
> --- a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
> +++ /dev/null
> @@ -1,73 +0,0 @@
> -From f75f03ef6bc3554068e456bed227f333d5cb8c34 Mon Sep 17 00:00:00 2001
> -From: Khem Raj <raj.khem@gmail.com>
> -Date: Tue, 29 Sep 2020 18:01:41 -0700
> -Subject: [PATCH] Move sysusers.d/sysctl.d/binfmt.d/modules-load.d to /usr
> -
> -These directories are moved to /lib since systemd v246, commit
> -4a56315a990b ("path: use ROOTPREFIX properly"), but in oe-core/yocto,
> -the old /usr/lib is still being used.
> -
> -Upstream-Status: Inappropriate (OE-specific)
> -Signed-off-by: Khem Raj <raj.khem@gmail.com>
> -Signed-off-by: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
> ----
> - src/core/systemd.pc.in           | 8 ++++----
> - src/libsystemd/sd-path/sd-path.c | 8 ++++----
> - 2 files changed, 8 insertions(+), 8 deletions(-)
> -
> -diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in
> -index 693433b34b..8368a3ff02 100644
> ---- a/src/core/systemd.pc.in
> -+++ b/src/core/systemd.pc.in
> -@@ -67,16 +67,16 @@ tmpfilesdir=${tmpfiles_dir}
> - 
> - user_tmpfiles_dir=${prefix}/share/user-tmpfiles.d
> - 
> --sysusers_dir=${rootprefix}/lib/sysusers.d
> -+sysusers_dir=${prefix}/lib/sysusers.d
> - sysusersdir=${sysusers_dir}
> - 
> --sysctl_dir=${rootprefix}/lib/sysctl.d
> -+sysctl_dir=${prefix}/lib/sysctl.d
> - sysctldir=${sysctl_dir}
> - 
> --binfmt_dir=${rootprefix}/lib/binfmt.d
> -+binfmt_dir=${prefix}/lib/binfmt.d
> - binfmtdir=${binfmt_dir}
> - 
> --modules_load_dir=${rootprefix}/lib/modules-load.d
> -+modules_load_dir=${prefix}/lib/modules-load.d
> - modulesloaddir=${modules_load_dir}
> - 
> - catalog_dir=${prefix}/lib/systemd/catalog
> -diff --git a/src/libsystemd/sd-path/sd-path.c b/src/libsystemd/sd-path/sd-path.c
> -index 1af3a36d1d..def502b717 100644
> ---- a/src/libsystemd/sd-path/sd-path.c
> -+++ b/src/libsystemd/sd-path/sd-path.c
> -@@ -365,19 +365,19 @@ static int get_path(uint64_t type, char **buffer, const char **ret) {
> -                 return 0;
> - 
> -         case SD_PATH_SYSUSERS:
> --                *ret = ROOTPREFIX_NOSLASH "/lib/sysusers.d";
> -+                *ret = "/usr/lib/sysusers.d";
> -                 return 0;
> - 
> -         case SD_PATH_SYSCTL:
> --                *ret = ROOTPREFIX_NOSLASH "/lib/sysctl.d";
> -+                *ret = "/usr/lib/sysctl.d";
> -                 return 0;
> - 
> -         case SD_PATH_BINFMT:
> --                *ret = ROOTPREFIX_NOSLASH "/lib/binfmt.d";
> -+                *ret = "/usr/lib/binfmt.d";
> -                 return 0;
> - 
> -         case SD_PATH_MODULES_LOAD:
> --                *ret = ROOTPREFIX_NOSLASH "/lib/modules-load.d";
> -+                *ret = "/usr/lib/modules-load.d";
> -                 return 0;
> - 
> -         case SD_PATH_CATALOG:
> --- 
> -2.39.2
> -
> diff --git a/meta/recipes-core/systemd/systemd/basic.conf.in b/meta/recipes-core/systemd/systemd/basic.conf.in
> deleted file mode 100644
> index fac288f7fa..0000000000
> --- a/meta/recipes-core/systemd/systemd/basic.conf.in
> +++ /dev/null
> @@ -1,40 +0,0 @@
> -#  This file is part of systemd.
> -#
> -#  systemd is free software; you can redistribute it and/or modify it
> -#  under the terms of the GNU Lesser General Public License as published by
> -#  the Free Software Foundation; either version 2.1 of the License, or
> -#  (at your option) any later version.
> -
> -# The superuser
> -u root    0     "root" :ROOT_HOME:
> -
> -# The nobody user/group for NFS file systems
> -g {{NOBODY_GROUP_NAME}} 65534       -            -
> -u {{NOBODY_USER_NAME }} 65534:65534 "Nobody"     -
> -
> -# Administrator group: can *see* more than normal users
> -g adm     {{ADM_GID    }}     -            -
> -
> -# Administrator group: can *do* more than normal users
> -g wheel   {{WHEEL_GID  }}     -            -
> -
> -# Access to shared database of users on the system
> -g utmp    {{UTMP_GID   }}     -            -
> -
> -# Physical and virtual hardware access groups
> -g audio   {{AUDIO_GID  }}     -            -
> -g cdrom   {{CDROM_GID  }}     -            -
> -g dialout {{DIALOUT_GID}}     -            -
> -g disk    {{DISK_GID   }}     -            -
> -g input   {{INPUT_GID  }}     -            -
> -g kmem    {{KMEM_GID   }}     -            -
> -g kvm     {{KVM_GID    }}     -            -
> -g lp      {{LP_GID     }}     -            -
> -g render  {{RENDER_GID }}     -            -
> -g sgx     {{SGX_GID    }}     -            -
> -g tape    {{TAPE_GID   }}     -            -
> -g tty     {{TTY_GID    }}     -            -
> -g video   {{VIDEO_GID  }}     -            -
> -
> -# Default group for normal users
> -g users   {{USERS_GID  }}     -            -
> diff --git a/meta/recipes-core/systemd/systemd_254.4.bb b/meta/recipes-core/systemd/systemd_255.1.bb
> similarity index 98%
> rename from meta/recipes-core/systemd/systemd_254.4.bb
> rename to meta/recipes-core/systemd/systemd_255.1.bb
> index 0c12926bef..daa3a01fef 100644
> --- a/meta/recipes-core/systemd/systemd_254.4.bb
> +++ b/meta/recipes-core/systemd/systemd_255.1.bb
> @@ -21,7 +21,6 @@ REQUIRED_DISTRO_FEATURES += "systemd"
>  SRC_URI += " \
>             file://touchscreen.rules \
>             file://00-create-volatile.conf \
> -           file://basic.conf.in \
>             ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://org.freedesktop.hostname1_no_polkit.conf', '', d)} \
>             ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://00-hostnamed-network-user.conf', '', d)} \
>             file://init \
> @@ -29,7 +28,6 @@ SRC_URI += " \
>             file://systemd-pager.sh \
>             file://0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
>             file://0008-implment-systemd-sysv-install-for-OE.patch \
> -           file://0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch \
>             "
>  
>  # patches needed by musl
> @@ -73,6 +71,7 @@ PACKAGECONFIG ??= " \
>      ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '', 'link-udev-shared', d)} \
>      backlight \
>      binfmt \
> +    cgroupv2 \
>      gshadow \
>      hibernate \
>      hostnamed \
> @@ -266,12 +265,16 @@ EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec \
>  # The 60 seconds is watchdog's default vaule.
>  WATCHDOG_TIMEOUT ??= "60"
>  
> -do_configure:prepend() {
> -  sed s@:ROOT_HOME:@${ROOT_HOME}@g ${WORKDIR}/basic.conf.in > ${S}/sysusers.d/basic.conf.in
> -}
> -
>  do_install() {
>  	meson_do_install
> +	# Change the root user's home directory in /lib/sysusers.d/basic.conf.
> +	# This is done merely for backward compatibility with previous systemd recipes.
> +	# systemd hardcodes root user's HOME to be "/root". Changing to use other values
> +	# may have unexpected runtime behaviors.
> +	if [ "${ROOT_HOME}" != "/root" ]; then
> +		bbwarn "Using ${ROOT_HOME} as root user's home directory is not fully supported by systemd"
> +		sed -i -e 's#/root#${ROOT_HOME}#g' ${D}${exec_prefix}/lib/sysusers.d/basic.conf
> +	fi
>  	install -d ${D}/${base_sbindir}
>  	if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then
>  		# Provided by a separate recipe
> @@ -754,6 +757,7 @@ FILES:udev += "${base_sbindir}/udevd \
>                 ${rootlibexecdir}/udev/rules.d/60-persistent-alsa.rules \
>                 ${rootlibexecdir}/udev/rules.d/60-persistent-input.rules \
>                 ${rootlibexecdir}/udev/rules.d/60-persistent-storage.rules \
> +               ${rootlibexecdir}/udev/rules.d/60-persistent-storage-mtd.rules \
>                 ${rootlibexecdir}/udev/rules.d/60-persistent-storage-tape.rules \
>                 ${rootlibexecdir}/udev/rules.d/60-persistent-v4l.rules \
>                 ${rootlibexecdir}/udev/rules.d/60-sensor.rules \
> -- 
> 2.34.1
> 

> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#192923): https://lists.openembedded.org/g/openembedded-core/message/192923
> Mute This Topic: https://lists.openembedded.org/mt/103380516/3617179
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
ChenQi Jan. 7, 2024, 2:05 p.m. UTC | #10
Another patch in this series fixes the warning:
rootfs-postcommands.bbclass: ignore comment mismatch in systemd_user_check

Is that patch also staged?

Regards,
Qi

-----Original Message-----
From: Alexandre Belloni <alexandre.belloni@bootlin.com> 
Sent: Saturday, January 6, 2024 12:02 AM
To: Chen, Qi <Qi.Chen@windriver.com>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [OE-core][PATCH 1/3] systemd: upgrade to 255.1

Hello,

This fails with:

https://autobuilder.yoctoproject.org/typhoon/#/builders/106/builds/7361/steps/12/logs/warnings

WARNING: core-image-full-cmdline-1.0-r0 do_rootfs: User root has been defined as (root, 0, 0, root, /root, /bin/sh) but sysusers.d expects it as (root, 0, 0, Super User, /root, -)
WARNING: core-image-full-cmdline-1.0-r0 do_rootfs: User nobody has been defined as (nobody, 65534, 65534, nobody, /nonexistent, /usr/sbin/nologin) but sysusers.d expects it as (nobody, 65534, 65534, Kernel Overflow User, -, -)
WARNING: core-image-sato-1.0-r0 do_rootfs: User root has been defined as (root, 0, 0, root, /root, /bin/sh) but sysusers.d expects it as (root, 0, 0, Super User, /root, -)
WARNING: core-image-sato-1.0-r0 do_rootfs: User nobody has been defined as (nobody, 65534, 65534, nobody, /nonexistent, /usr/sbin/nologin) but sysusers.d expects it as (nobody, 65534, 65534, Kernel Overflow User, -, -)
WARNING: core-image-sato-sdk-1.0-r0 do_rootfs: User root has been defined as (root, 0, 0, root, /root, /bin/sh) but sysusers.d expects it as (root, 0, 0, Super User, /root, -)
WARNING: core-image-sato-sdk-1.0-r0 do_rootfs: User nobody has been defined as (nobody, 65534, 65534, nobody, /nonexistent, /usr/sbin/nologin) but sysusers.d expects it as (nobody, 65534, 65534, Kernel Overflow User, -, -)

On 27/12/2023 12:20:34+0800, Chen Qi via lists.openembedded.org wrote:
> From: Chen Qi <Qi.Chen@windriver.com>
> 
> 1. Patch changes:
> 
> 0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
> is removed because it has no real effect now. The /lib is now /usr/lib 
> because 'usrmerge' is a required distro feature for systemd.
> 
> 0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch is 
> refreshed for the new version to avoid patch-fuzz issue.
> 
> 2. root user's home directory now defaults to "/root":
> 
> The sysuers.d/basic.conf is still modified to respect the ROOT_HOME 
> value, so if users set ROOT_HOME to "/home/root", the behavior is the 
> same as before. However, this is only for backward compatibility. With 
> this patch, The ROOT_HOME value is set to "/root" in init-manager-systemd.inc.
> This is because systemd's source codes are hardcoding "/root", and 
> other values are not officially supported. See the list below.
> $ grep -rl '"/root"' src/ | grep -v 'src/test'
> src/core/namespace.c
> src/basic/user-util.c
> src/nss-systemd/nss-systemd.c
> src/nspawn/nspawn.c
> src/firstboot/firstboot.c
> src/shared/userdb.c
> src/shared/user-record.c
> $ grep -rl /root network/ factory/ sysctl.d/ sysusers.d/ rules.d/ 
> tmpfiles.d/ units/ xorg/ tools/ sysusers.d/basic.conf.in 
> tmpfiles.d/provision.conf units/emergency.service.in 
> units/rescue.service.in tools/list-discoverable-partitions.py
> Previously, the recipe was just substituting sysusers.d/basic.conf.in, 
> which is not enough to be treated as 'fully support'. I deliberately 
> put a warning message in do_install to warn users about non "/root" 
> ROOT_HOME value. Don't remove it until all above places are handled.
> 
> 3. cgroupv2 is now the default.
> cgroupv2 is the default for systemd for many years and it's the 
> default for distros such as ubuntu and fedora. Let's also use it as the default.
> 
> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> ---
>  .../distro/include/init-manager-systemd.inc   |  2 +
>  meta/recipes-core/systemd/systemd.inc         |  4 +-
>  ...tall-dependency-links-at-install-tim.patch | 22 +++---  
> ...sysctl.d-binfmt.d-modules-load.d-to-.patch | 73 -------------------
>  .../systemd/systemd/basic.conf.in             | 40 ----------
>  .../{systemd_254.4.bb => systemd_255.1.bb}    | 16 ++--
>  6 files changed, 25 insertions(+), 132 deletions(-)  delete mode 
> 100644 
> meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt
> .d-modules-load.d-to-.patch  delete mode 100644 
> meta/recipes-core/systemd/systemd/basic.conf.in
>  rename meta/recipes-core/systemd/{systemd_254.4.bb => 
> systemd_255.1.bb} (98%)
> 
> diff --git a/meta/conf/distro/include/init-manager-systemd.inc 
> b/meta/conf/distro/include/init-manager-systemd.inc
> index 595d1f2644..0a76647459 100644
> --- a/meta/conf/distro/include/init-manager-systemd.inc
> +++ b/meta/conf/distro/include/init-manager-systemd.inc
> @@ -5,3 +5,5 @@ VIRTUAL-RUNTIME_init_manager ??= "systemd"
>  VIRTUAL-RUNTIME_initscripts ??= "systemd-compat-units"
>  VIRTUAL-RUNTIME_login_manager ??= "shadow-base"
>  VIRTUAL-RUNTIME_dev_manager ??= "systemd"
> +# systemd hardcodes /root in its source codes, other values are not 
> +offically supported ROOT_HOME ?= "/root"
> diff --git a/meta/recipes-core/systemd/systemd.inc 
> b/meta/recipes-core/systemd/systemd.inc
> index ccc3236457..1417e0150f 100644
> --- a/meta/recipes-core/systemd/systemd.inc
> +++ b/meta/recipes-core/systemd/systemd.inc
> @@ -15,8 +15,8 @@ LICENSE:libsystemd = "LGPL-2.1-or-later"
>  LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
>                      file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
>  
> -SRCREV = "2e7504449a51fb38db9cd2da391c6434f82def51"
> -SRCBRANCH = "v254-stable"
> +SRCREV = "2018ccef6645ce00c784369a22dc4e98f6d7061d"
> +SRCBRANCH = "v255-stable"
>  SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=https;branch=${SRCBRANCH}"
>  
>  S = "${WORKDIR}/git"
> diff --git 
> a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependen
> cy-links-at-install-tim.patch 
> b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependen
> cy-links-at-install-tim.patch
> index 085f1e9052..be231cf6b2 100644
> --- 
> a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependen
> cy-links-at-install-tim.patch
> +++ b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-depe
> +++ ndency-links-at-install-tim.patch
> @@ -1,8 +1,8 @@
> -From ca7d9a8d9c81702af9c599bb79706f12b1a465cf Mon Sep 17 00:00:00 
> 2001
> +From 29a58009a172e369ad7166e16dab2f4945c6b0d2 Mon Sep 17 00:00:00 
> +2001
>  From: Chen Qi <Qi.Chen@windriver.com>
>  Date: Thu, 21 Feb 2019 16:23:24 +0800
> -Subject: [PATCH] binfmt: Don't install dependency links at install 
> time for
> - the binfmt services
> +Subject: [PATCH 1/2] binfmt: Don't install dependency links at 
> +install time  for the binfmt services
>  
>  use [Install] blocks so that they get created when the service is 
> enabled  like a traditional service.
> @@ -25,10 +25,10 @@ Signed-off-by: Scott Murray <scott.murray@konsulko.com>
>   3 files changed, 7 insertions(+), 2 deletions(-)
>  
>  diff --git a/units/meson.build b/units/meson.build -index 
> c7939a10f8..219570ab19 100644
> +index e7bfb7f838..1d5ec4b178 100644
>  --- a/units/meson.build
>  +++ b/units/meson.build
> -@@ -149,7 +149,6 @@ units = [
> +@@ -154,7 +154,6 @@ units = [
>           {
>             'file' : 'proc-sys-fs-binfmt_misc.automount',
>             'conditions' : ['ENABLE_BINFMT'], @@ -36,7 +36,7 @@ index 
> c7939a10f8..219570ab19 100644
>           },
>           {
>             'file' : 'proc-sys-fs-binfmt_misc.mount', -@@ -246,7 
> +245,6 @@ units = [
> +@@ -251,7 +250,6 @@ units = [
>           {
>             'file' : 'systemd-binfmt.service.in',
>             'conditions' : ['ENABLE_BINFMT'], @@ -45,7 +45,7 @@ index 
> c7939a10f8..219570ab19 100644
>           {
>             'file' : 'systemd-bless-boot.service.in',  diff --git 
> a/units/proc-sys-fs-binfmt_misc.automount 
> b/units/proc-sys-fs-binfmt_misc.automount
> -index 6b1bbdc91e..5ec5b8670a 100644
> +index 5d212015a5..6c2900ca77 100644
>  --- a/units/proc-sys-fs-binfmt_misc.automount
>  +++ b/units/proc-sys-fs-binfmt_misc.automount
>  @@ -22,3 +22,6 @@ Before=shutdown.target @@ -56,7 +56,7 @@ index 
> 6b1bbdc91e..5ec5b8670a 100644  +[Install]  +WantedBy=sysinit.target  
> diff --git a/units/systemd-binfmt.service.in 
> b/units/systemd-binfmt.service.in -index b04412e037..63f116e4fa 100644
> +index 6861c76674..531e9fbd90 100644
>  --- a/units/systemd-binfmt.service.in  +++ 
> b/units/systemd-binfmt.service.in  @@ -14,6 +14,7 @@ 
> Documentation=https://docs.kernel.org/admin-guide/binfmt-misc.html
> @@ -68,12 +68,12 @@ index b04412e037..63f116e4fa 100644
>   After=proc-sys-fs-binfmt_misc.mount
>   After=local-fs.target
>  @@ -31,3 +32,6 @@ RemainAfterExit=yes
> - ExecStart={{ROOTLIBEXECDIR}}/systemd-binfmt
> - ExecStop={{ROOTLIBEXECDIR}}/systemd-binfmt --unregister
> + ExecStart={{LIBEXECDIR}}/systemd-binfmt
> + ExecStop={{LIBEXECDIR}}/systemd-binfmt --unregister
>   TimeoutSec=90s
>  +
>  +[Install]
>  +WantedBy=sysinit.target
>  --
> -2.39.2
> +2.34.1
>  
> diff --git 
> a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binf
> mt.d-modules-load.d-to-.patch 
> b/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binf
> mt.d-modules-load.d-to-.patch
> deleted file mode 100644
> index 98914ae154..0000000000
> --- 
> a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binf
> mt.d-modules-load.d-to-.patch
> +++ /dev/null
> @@ -1,73 +0,0 @@
> -From f75f03ef6bc3554068e456bed227f333d5cb8c34 Mon Sep 17 00:00:00 
> 2001
> -From: Khem Raj <raj.khem@gmail.com>
> -Date: Tue, 29 Sep 2020 18:01:41 -0700
> -Subject: [PATCH] Move sysusers.d/sysctl.d/binfmt.d/modules-load.d to 
> /usr
> -
> -These directories are moved to /lib since systemd v246, commit 
> -4a56315a990b ("path: use ROOTPREFIX properly"), but in oe-core/yocto, 
> -the old /usr/lib is still being used.
> -
> -Upstream-Status: Inappropriate (OE-specific)
> -Signed-off-by: Khem Raj <raj.khem@gmail.com>
> -Signed-off-by: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
> ----
> - src/core/systemd.pc.in           | 8 ++++----
> - src/libsystemd/sd-path/sd-path.c | 8 ++++----
> - 2 files changed, 8 insertions(+), 8 deletions(-)
> -
> -diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in -index 
> 693433b34b..8368a3ff02 100644
> ---- a/src/core/systemd.pc.in
> -+++ b/src/core/systemd.pc.in
> -@@ -67,16 +67,16 @@ tmpfilesdir=${tmpfiles_dir}
> -
> - user_tmpfiles_dir=${prefix}/share/user-tmpfiles.d
> -
> --sysusers_dir=${rootprefix}/lib/sysusers.d
> -+sysusers_dir=${prefix}/lib/sysusers.d
> - sysusersdir=${sysusers_dir}
> -
> --sysctl_dir=${rootprefix}/lib/sysctl.d
> -+sysctl_dir=${prefix}/lib/sysctl.d
> - sysctldir=${sysctl_dir}
> -
> --binfmt_dir=${rootprefix}/lib/binfmt.d
> -+binfmt_dir=${prefix}/lib/binfmt.d
> - binfmtdir=${binfmt_dir}
> -
> --modules_load_dir=${rootprefix}/lib/modules-load.d
> -+modules_load_dir=${prefix}/lib/modules-load.d
> - modulesloaddir=${modules_load_dir}
> -
> - catalog_dir=${prefix}/lib/systemd/catalog
> -diff --git a/src/libsystemd/sd-path/sd-path.c 
> b/src/libsystemd/sd-path/sd-path.c
> -index 1af3a36d1d..def502b717 100644
> ---- a/src/libsystemd/sd-path/sd-path.c
> -+++ b/src/libsystemd/sd-path/sd-path.c
> -@@ -365,19 +365,19 @@ static int get_path(uint64_t type, char **buffer, const char **ret) {
> -                 return 0;
> - 
> -         case SD_PATH_SYSUSERS:
> --                *ret = ROOTPREFIX_NOSLASH "/lib/sysusers.d";
> -+                *ret = "/usr/lib/sysusers.d";
> -                 return 0;
> - 
> -         case SD_PATH_SYSCTL:
> --                *ret = ROOTPREFIX_NOSLASH "/lib/sysctl.d";
> -+                *ret = "/usr/lib/sysctl.d";
> -                 return 0;
> - 
> -         case SD_PATH_BINFMT:
> --                *ret = ROOTPREFIX_NOSLASH "/lib/binfmt.d";
> -+                *ret = "/usr/lib/binfmt.d";
> -                 return 0;
> - 
> -         case SD_PATH_MODULES_LOAD:
> --                *ret = ROOTPREFIX_NOSLASH "/lib/modules-load.d";
> -+                *ret = "/usr/lib/modules-load.d";
> -                 return 0;
> - 
> -         case SD_PATH_CATALOG:
> ---
> -2.39.2
> -
> diff --git a/meta/recipes-core/systemd/systemd/basic.conf.in 
> b/meta/recipes-core/systemd/systemd/basic.conf.in
> deleted file mode 100644
> index fac288f7fa..0000000000
> --- a/meta/recipes-core/systemd/systemd/basic.conf.in
> +++ /dev/null
> @@ -1,40 +0,0 @@
> -#  This file is part of systemd.
> -#
> -#  systemd is free software; you can redistribute it and/or modify it 
> -#  under the terms of the GNU Lesser General Public License as 
> published by -#  the Free Software Foundation; either version 2.1 of 
> the License, or -#  (at your option) any later version.
> -
> -# The superuser
> -u root    0     "root" :ROOT_HOME:
> -
> -# The nobody user/group for NFS file systems
> -g {{NOBODY_GROUP_NAME}} 65534       -            -
> -u {{NOBODY_USER_NAME }} 65534:65534 "Nobody"     -
> -
> -# Administrator group: can *see* more than normal users
> -g adm     {{ADM_GID    }}     -            -
> -
> -# Administrator group: can *do* more than normal users
> -g wheel   {{WHEEL_GID  }}     -            -
> -
> -# Access to shared database of users on the system
> -g utmp    {{UTMP_GID   }}     -            -
> -
> -# Physical and virtual hardware access groups
> -g audio   {{AUDIO_GID  }}     -            -
> -g cdrom   {{CDROM_GID  }}     -            -
> -g dialout {{DIALOUT_GID}}     -            -
> -g disk    {{DISK_GID   }}     -            -
> -g input   {{INPUT_GID  }}     -            -
> -g kmem    {{KMEM_GID   }}     -            -
> -g kvm     {{KVM_GID    }}     -            -
> -g lp      {{LP_GID     }}     -            -
> -g render  {{RENDER_GID }}     -            -
> -g sgx     {{SGX_GID    }}     -            -
> -g tape    {{TAPE_GID   }}     -            -
> -g tty     {{TTY_GID    }}     -            -
> -g video   {{VIDEO_GID  }}     -            -
> -
> -# Default group for normal users
> -g users   {{USERS_GID  }}     -            -
> diff --git a/meta/recipes-core/systemd/systemd_254.4.bb 
> b/meta/recipes-core/systemd/systemd_255.1.bb
> similarity index 98%
> rename from meta/recipes-core/systemd/systemd_254.4.bb
> rename to meta/recipes-core/systemd/systemd_255.1.bb
> index 0c12926bef..daa3a01fef 100644
> --- a/meta/recipes-core/systemd/systemd_254.4.bb
> +++ b/meta/recipes-core/systemd/systemd_255.1.bb
> @@ -21,7 +21,6 @@ REQUIRED_DISTRO_FEATURES += "systemd"
>  SRC_URI += " \
>             file://touchscreen.rules \
>             file://00-create-volatile.conf \
> -           file://basic.conf.in \
>             ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://org.freedesktop.hostname1_no_polkit.conf', '', d)} \
>             ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://00-hostnamed-network-user.conf', '', d)} \
>             file://init \
> @@ -29,7 +28,6 @@ SRC_URI += " \
>             file://systemd-pager.sh \
>             file://0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
>             file://0008-implment-systemd-sysv-install-for-OE.patch \
> -           file://0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch \
>             "
>  
>  # patches needed by musl
> @@ -73,6 +71,7 @@ PACKAGECONFIG ??= " \
>      ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '', 'link-udev-shared', d)} \
>      backlight \
>      binfmt \
> +    cgroupv2 \
>      gshadow \
>      hibernate \
>      hostnamed \
> @@ -266,12 +265,16 @@ EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec 
> \  # The 60 seconds is watchdog's default vaule.
>  WATCHDOG_TIMEOUT ??= "60"
>  
> -do_configure:prepend() {
> -  sed s@:ROOT_HOME:@${ROOT_HOME}@g ${WORKDIR}/basic.conf.in > 
> ${S}/sysusers.d/basic.conf.in -}
> -
>  do_install() {
>  	meson_do_install
> +	# Change the root user's home directory in /lib/sysusers.d/basic.conf.
> +	# This is done merely for backward compatibility with previous systemd recipes.
> +	# systemd hardcodes root user's HOME to be "/root". Changing to use other values
> +	# may have unexpected runtime behaviors.
> +	if [ "${ROOT_HOME}" != "/root" ]; then
> +		bbwarn "Using ${ROOT_HOME} as root user's home directory is not fully supported by systemd"
> +		sed -i -e 's#/root#${ROOT_HOME}#g' ${D}${exec_prefix}/lib/sysusers.d/basic.conf
> +	fi
>  	install -d ${D}/${base_sbindir}
>  	if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then
>  		# Provided by a separate recipe
> @@ -754,6 +757,7 @@ FILES:udev += "${base_sbindir}/udevd \
>                 ${rootlibexecdir}/udev/rules.d/60-persistent-alsa.rules \
>                 ${rootlibexecdir}/udev/rules.d/60-persistent-input.rules \
>                 
> ${rootlibexecdir}/udev/rules.d/60-persistent-storage.rules \
> +               
> + ${rootlibexecdir}/udev/rules.d/60-persistent-storage-mtd.rules \
>                 ${rootlibexecdir}/udev/rules.d/60-persistent-storage-tape.rules \
>                 ${rootlibexecdir}/udev/rules.d/60-persistent-v4l.rules \
>                 ${rootlibexecdir}/udev/rules.d/60-sensor.rules \
> --
> 2.34.1
> 

> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#192923): https://lists.openembedded.org/g/openembedded-core/message/192923
> Mute This Topic: https://lists.openembedded.org/mt/103380516/3617179
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Alexandre Belloni Jan. 9, 2024, 7:47 a.m. UTC | #11
I got this today:

https://autobuilder.yoctoproject.org/typhoon/#/builders/72/builds/8420/steps/25/logs/stdio

WARNING: systemd-1_255.1-r0 do_install: Using /home/root as root user's home directory is not fully supported by systemd

On 07/01/2024 14:05:35+0000, Chen Qi via lists.openembedded.org wrote:
> Another patch in this series fixes the warning:
> rootfs-postcommands.bbclass: ignore comment mismatch in systemd_user_check
> 
> Is that patch also staged?
> 
> Regards,
> Qi
> 
> -----Original Message-----
> From: Alexandre Belloni <alexandre.belloni@bootlin.com> 
> Sent: Saturday, January 6, 2024 12:02 AM
> To: Chen, Qi <Qi.Chen@windriver.com>
> Cc: openembedded-core@lists.openembedded.org
> Subject: Re: [OE-core][PATCH 1/3] systemd: upgrade to 255.1
> 
> Hello,
> 
> This fails with:
> 
> https://autobuilder.yoctoproject.org/typhoon/#/builders/106/builds/7361/steps/12/logs/warnings
> 
> WARNING: core-image-full-cmdline-1.0-r0 do_rootfs: User root has been defined as (root, 0, 0, root, /root, /bin/sh) but sysusers.d expects it as (root, 0, 0, Super User, /root, -)
> WARNING: core-image-full-cmdline-1.0-r0 do_rootfs: User nobody has been defined as (nobody, 65534, 65534, nobody, /nonexistent, /usr/sbin/nologin) but sysusers.d expects it as (nobody, 65534, 65534, Kernel Overflow User, -, -)
> WARNING: core-image-sato-1.0-r0 do_rootfs: User root has been defined as (root, 0, 0, root, /root, /bin/sh) but sysusers.d expects it as (root, 0, 0, Super User, /root, -)
> WARNING: core-image-sato-1.0-r0 do_rootfs: User nobody has been defined as (nobody, 65534, 65534, nobody, /nonexistent, /usr/sbin/nologin) but sysusers.d expects it as (nobody, 65534, 65534, Kernel Overflow User, -, -)
> WARNING: core-image-sato-sdk-1.0-r0 do_rootfs: User root has been defined as (root, 0, 0, root, /root, /bin/sh) but sysusers.d expects it as (root, 0, 0, Super User, /root, -)
> WARNING: core-image-sato-sdk-1.0-r0 do_rootfs: User nobody has been defined as (nobody, 65534, 65534, nobody, /nonexistent, /usr/sbin/nologin) but sysusers.d expects it as (nobody, 65534, 65534, Kernel Overflow User, -, -)
> 
> On 27/12/2023 12:20:34+0800, Chen Qi via lists.openembedded.org wrote:
> > From: Chen Qi <Qi.Chen@windriver.com>
> > 
> > 1. Patch changes:
> > 
> > 0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
> > is removed because it has no real effect now. The /lib is now /usr/lib 
> > because 'usrmerge' is a required distro feature for systemd.
> > 
> > 0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch is 
> > refreshed for the new version to avoid patch-fuzz issue.
> > 
> > 2. root user's home directory now defaults to "/root":
> > 
> > The sysuers.d/basic.conf is still modified to respect the ROOT_HOME 
> > value, so if users set ROOT_HOME to "/home/root", the behavior is the 
> > same as before. However, this is only for backward compatibility. With 
> > this patch, The ROOT_HOME value is set to "/root" in init-manager-systemd.inc.
> > This is because systemd's source codes are hardcoding "/root", and 
> > other values are not officially supported. See the list below.
> > $ grep -rl '"/root"' src/ | grep -v 'src/test'
> > src/core/namespace.c
> > src/basic/user-util.c
> > src/nss-systemd/nss-systemd.c
> > src/nspawn/nspawn.c
> > src/firstboot/firstboot.c
> > src/shared/userdb.c
> > src/shared/user-record.c
> > $ grep -rl /root network/ factory/ sysctl.d/ sysusers.d/ rules.d/ 
> > tmpfiles.d/ units/ xorg/ tools/ sysusers.d/basic.conf.in 
> > tmpfiles.d/provision.conf units/emergency.service.in 
> > units/rescue.service.in tools/list-discoverable-partitions.py
> > Previously, the recipe was just substituting sysusers.d/basic.conf.in, 
> > which is not enough to be treated as 'fully support'. I deliberately 
> > put a warning message in do_install to warn users about non "/root" 
> > ROOT_HOME value. Don't remove it until all above places are handled.
> > 
> > 3. cgroupv2 is now the default.
> > cgroupv2 is the default for systemd for many years and it's the 
> > default for distros such as ubuntu and fedora. Let's also use it as the default.
> > 
> > Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> > ---
> >  .../distro/include/init-manager-systemd.inc   |  2 +
> >  meta/recipes-core/systemd/systemd.inc         |  4 +-
> >  ...tall-dependency-links-at-install-tim.patch | 22 +++---  
> > ...sysctl.d-binfmt.d-modules-load.d-to-.patch | 73 -------------------
> >  .../systemd/systemd/basic.conf.in             | 40 ----------
> >  .../{systemd_254.4.bb => systemd_255.1.bb}    | 16 ++--
> >  6 files changed, 25 insertions(+), 132 deletions(-)  delete mode 
> > 100644 
> > meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt
> > .d-modules-load.d-to-.patch  delete mode 100644 
> > meta/recipes-core/systemd/systemd/basic.conf.in
> >  rename meta/recipes-core/systemd/{systemd_254.4.bb => 
> > systemd_255.1.bb} (98%)
> > 
> > diff --git a/meta/conf/distro/include/init-manager-systemd.inc 
> > b/meta/conf/distro/include/init-manager-systemd.inc
> > index 595d1f2644..0a76647459 100644
> > --- a/meta/conf/distro/include/init-manager-systemd.inc
> > +++ b/meta/conf/distro/include/init-manager-systemd.inc
> > @@ -5,3 +5,5 @@ VIRTUAL-RUNTIME_init_manager ??= "systemd"
> >  VIRTUAL-RUNTIME_initscripts ??= "systemd-compat-units"
> >  VIRTUAL-RUNTIME_login_manager ??= "shadow-base"
> >  VIRTUAL-RUNTIME_dev_manager ??= "systemd"
> > +# systemd hardcodes /root in its source codes, other values are not 
> > +offically supported ROOT_HOME ?= "/root"
> > diff --git a/meta/recipes-core/systemd/systemd.inc 
> > b/meta/recipes-core/systemd/systemd.inc
> > index ccc3236457..1417e0150f 100644
> > --- a/meta/recipes-core/systemd/systemd.inc
> > +++ b/meta/recipes-core/systemd/systemd.inc
> > @@ -15,8 +15,8 @@ LICENSE:libsystemd = "LGPL-2.1-or-later"
> >  LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
> >                      file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
> >  
> > -SRCREV = "2e7504449a51fb38db9cd2da391c6434f82def51"
> > -SRCBRANCH = "v254-stable"
> > +SRCREV = "2018ccef6645ce00c784369a22dc4e98f6d7061d"
> > +SRCBRANCH = "v255-stable"
> >  SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=https;branch=${SRCBRANCH}"
> >  
> >  S = "${WORKDIR}/git"
> > diff --git 
> > a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependen
> > cy-links-at-install-tim.patch 
> > b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependen
> > cy-links-at-install-tim.patch
> > index 085f1e9052..be231cf6b2 100644
> > --- 
> > a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependen
> > cy-links-at-install-tim.patch
> > +++ b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-depe
> > +++ ndency-links-at-install-tim.patch
> > @@ -1,8 +1,8 @@
> > -From ca7d9a8d9c81702af9c599bb79706f12b1a465cf Mon Sep 17 00:00:00 
> > 2001
> > +From 29a58009a172e369ad7166e16dab2f4945c6b0d2 Mon Sep 17 00:00:00 
> > +2001
> >  From: Chen Qi <Qi.Chen@windriver.com>
> >  Date: Thu, 21 Feb 2019 16:23:24 +0800
> > -Subject: [PATCH] binfmt: Don't install dependency links at install 
> > time for
> > - the binfmt services
> > +Subject: [PATCH 1/2] binfmt: Don't install dependency links at 
> > +install time  for the binfmt services
> >  
> >  use [Install] blocks so that they get created when the service is 
> > enabled  like a traditional service.
> > @@ -25,10 +25,10 @@ Signed-off-by: Scott Murray <scott.murray@konsulko.com>
> >   3 files changed, 7 insertions(+), 2 deletions(-)
> >  
> >  diff --git a/units/meson.build b/units/meson.build -index 
> > c7939a10f8..219570ab19 100644
> > +index e7bfb7f838..1d5ec4b178 100644
> >  --- a/units/meson.build
> >  +++ b/units/meson.build
> > -@@ -149,7 +149,6 @@ units = [
> > +@@ -154,7 +154,6 @@ units = [
> >           {
> >             'file' : 'proc-sys-fs-binfmt_misc.automount',
> >             'conditions' : ['ENABLE_BINFMT'], @@ -36,7 +36,7 @@ index 
> > c7939a10f8..219570ab19 100644
> >           },
> >           {
> >             'file' : 'proc-sys-fs-binfmt_misc.mount', -@@ -246,7 
> > +245,6 @@ units = [
> > +@@ -251,7 +250,6 @@ units = [
> >           {
> >             'file' : 'systemd-binfmt.service.in',
> >             'conditions' : ['ENABLE_BINFMT'], @@ -45,7 +45,7 @@ index 
> > c7939a10f8..219570ab19 100644
> >           {
> >             'file' : 'systemd-bless-boot.service.in',  diff --git 
> > a/units/proc-sys-fs-binfmt_misc.automount 
> > b/units/proc-sys-fs-binfmt_misc.automount
> > -index 6b1bbdc91e..5ec5b8670a 100644
> > +index 5d212015a5..6c2900ca77 100644
> >  --- a/units/proc-sys-fs-binfmt_misc.automount
> >  +++ b/units/proc-sys-fs-binfmt_misc.automount
> >  @@ -22,3 +22,6 @@ Before=shutdown.target @@ -56,7 +56,7 @@ index 
> > 6b1bbdc91e..5ec5b8670a 100644  +[Install]  +WantedBy=sysinit.target  
> > diff --git a/units/systemd-binfmt.service.in 
> > b/units/systemd-binfmt.service.in -index b04412e037..63f116e4fa 100644
> > +index 6861c76674..531e9fbd90 100644
> >  --- a/units/systemd-binfmt.service.in  +++ 
> > b/units/systemd-binfmt.service.in  @@ -14,6 +14,7 @@ 
> > Documentation=https://docs.kernel.org/admin-guide/binfmt-misc.html
> > @@ -68,12 +68,12 @@ index b04412e037..63f116e4fa 100644
> >   After=proc-sys-fs-binfmt_misc.mount
> >   After=local-fs.target
> >  @@ -31,3 +32,6 @@ RemainAfterExit=yes
> > - ExecStart={{ROOTLIBEXECDIR}}/systemd-binfmt
> > - ExecStop={{ROOTLIBEXECDIR}}/systemd-binfmt --unregister
> > + ExecStart={{LIBEXECDIR}}/systemd-binfmt
> > + ExecStop={{LIBEXECDIR}}/systemd-binfmt --unregister
> >   TimeoutSec=90s
> >  +
> >  +[Install]
> >  +WantedBy=sysinit.target
> >  --
> > -2.39.2
> > +2.34.1
> >  
> > diff --git 
> > a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binf
> > mt.d-modules-load.d-to-.patch 
> > b/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binf
> > mt.d-modules-load.d-to-.patch
> > deleted file mode 100644
> > index 98914ae154..0000000000
> > --- 
> > a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binf
> > mt.d-modules-load.d-to-.patch
> > +++ /dev/null
> > @@ -1,73 +0,0 @@
> > -From f75f03ef6bc3554068e456bed227f333d5cb8c34 Mon Sep 17 00:00:00 
> > 2001
> > -From: Khem Raj <raj.khem@gmail.com>
> > -Date: Tue, 29 Sep 2020 18:01:41 -0700
> > -Subject: [PATCH] Move sysusers.d/sysctl.d/binfmt.d/modules-load.d to 
> > /usr
> > -
> > -These directories are moved to /lib since systemd v246, commit 
> > -4a56315a990b ("path: use ROOTPREFIX properly"), but in oe-core/yocto, 
> > -the old /usr/lib is still being used.
> > -
> > -Upstream-Status: Inappropriate (OE-specific)
> > -Signed-off-by: Khem Raj <raj.khem@gmail.com>
> > -Signed-off-by: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
> > ----
> > - src/core/systemd.pc.in           | 8 ++++----
> > - src/libsystemd/sd-path/sd-path.c | 8 ++++----
> > - 2 files changed, 8 insertions(+), 8 deletions(-)
> > -
> > -diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in -index 
> > 693433b34b..8368a3ff02 100644
> > ---- a/src/core/systemd.pc.in
> > -+++ b/src/core/systemd.pc.in
> > -@@ -67,16 +67,16 @@ tmpfilesdir=${tmpfiles_dir}
> > -
> > - user_tmpfiles_dir=${prefix}/share/user-tmpfiles.d
> > -
> > --sysusers_dir=${rootprefix}/lib/sysusers.d
> > -+sysusers_dir=${prefix}/lib/sysusers.d
> > - sysusersdir=${sysusers_dir}
> > -
> > --sysctl_dir=${rootprefix}/lib/sysctl.d
> > -+sysctl_dir=${prefix}/lib/sysctl.d
> > - sysctldir=${sysctl_dir}
> > -
> > --binfmt_dir=${rootprefix}/lib/binfmt.d
> > -+binfmt_dir=${prefix}/lib/binfmt.d
> > - binfmtdir=${binfmt_dir}
> > -
> > --modules_load_dir=${rootprefix}/lib/modules-load.d
> > -+modules_load_dir=${prefix}/lib/modules-load.d
> > - modulesloaddir=${modules_load_dir}
> > -
> > - catalog_dir=${prefix}/lib/systemd/catalog
> > -diff --git a/src/libsystemd/sd-path/sd-path.c 
> > b/src/libsystemd/sd-path/sd-path.c
> > -index 1af3a36d1d..def502b717 100644
> > ---- a/src/libsystemd/sd-path/sd-path.c
> > -+++ b/src/libsystemd/sd-path/sd-path.c
> > -@@ -365,19 +365,19 @@ static int get_path(uint64_t type, char **buffer, const char **ret) {
> > -                 return 0;
> > - 
> > -         case SD_PATH_SYSUSERS:
> > --                *ret = ROOTPREFIX_NOSLASH "/lib/sysusers.d";
> > -+                *ret = "/usr/lib/sysusers.d";
> > -                 return 0;
> > - 
> > -         case SD_PATH_SYSCTL:
> > --                *ret = ROOTPREFIX_NOSLASH "/lib/sysctl.d";
> > -+                *ret = "/usr/lib/sysctl.d";
> > -                 return 0;
> > - 
> > -         case SD_PATH_BINFMT:
> > --                *ret = ROOTPREFIX_NOSLASH "/lib/binfmt.d";
> > -+                *ret = "/usr/lib/binfmt.d";
> > -                 return 0;
> > - 
> > -         case SD_PATH_MODULES_LOAD:
> > --                *ret = ROOTPREFIX_NOSLASH "/lib/modules-load.d";
> > -+                *ret = "/usr/lib/modules-load.d";
> > -                 return 0;
> > - 
> > -         case SD_PATH_CATALOG:
> > ---
> > -2.39.2
> > -
> > diff --git a/meta/recipes-core/systemd/systemd/basic.conf.in 
> > b/meta/recipes-core/systemd/systemd/basic.conf.in
> > deleted file mode 100644
> > index fac288f7fa..0000000000
> > --- a/meta/recipes-core/systemd/systemd/basic.conf.in
> > +++ /dev/null
> > @@ -1,40 +0,0 @@
> > -#  This file is part of systemd.
> > -#
> > -#  systemd is free software; you can redistribute it and/or modify it 
> > -#  under the terms of the GNU Lesser General Public License as 
> > published by -#  the Free Software Foundation; either version 2.1 of 
> > the License, or -#  (at your option) any later version.
> > -
> > -# The superuser
> > -u root    0     "root" :ROOT_HOME:
> > -
> > -# The nobody user/group for NFS file systems
> > -g {{NOBODY_GROUP_NAME}} 65534       -            -
> > -u {{NOBODY_USER_NAME }} 65534:65534 "Nobody"     -
> > -
> > -# Administrator group: can *see* more than normal users
> > -g adm     {{ADM_GID    }}     -            -
> > -
> > -# Administrator group: can *do* more than normal users
> > -g wheel   {{WHEEL_GID  }}     -            -
> > -
> > -# Access to shared database of users on the system
> > -g utmp    {{UTMP_GID   }}     -            -
> > -
> > -# Physical and virtual hardware access groups
> > -g audio   {{AUDIO_GID  }}     -            -
> > -g cdrom   {{CDROM_GID  }}     -            -
> > -g dialout {{DIALOUT_GID}}     -            -
> > -g disk    {{DISK_GID   }}     -            -
> > -g input   {{INPUT_GID  }}     -            -
> > -g kmem    {{KMEM_GID   }}     -            -
> > -g kvm     {{KVM_GID    }}     -            -
> > -g lp      {{LP_GID     }}     -            -
> > -g render  {{RENDER_GID }}     -            -
> > -g sgx     {{SGX_GID    }}     -            -
> > -g tape    {{TAPE_GID   }}     -            -
> > -g tty     {{TTY_GID    }}     -            -
> > -g video   {{VIDEO_GID  }}     -            -
> > -
> > -# Default group for normal users
> > -g users   {{USERS_GID  }}     -            -
> > diff --git a/meta/recipes-core/systemd/systemd_254.4.bb 
> > b/meta/recipes-core/systemd/systemd_255.1.bb
> > similarity index 98%
> > rename from meta/recipes-core/systemd/systemd_254.4.bb
> > rename to meta/recipes-core/systemd/systemd_255.1.bb
> > index 0c12926bef..daa3a01fef 100644
> > --- a/meta/recipes-core/systemd/systemd_254.4.bb
> > +++ b/meta/recipes-core/systemd/systemd_255.1.bb
> > @@ -21,7 +21,6 @@ REQUIRED_DISTRO_FEATURES += "systemd"
> >  SRC_URI += " \
> >             file://touchscreen.rules \
> >             file://00-create-volatile.conf \
> > -           file://basic.conf.in \
> >             ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://org.freedesktop.hostname1_no_polkit.conf', '', d)} \
> >             ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://00-hostnamed-network-user.conf', '', d)} \
> >             file://init \
> > @@ -29,7 +28,6 @@ SRC_URI += " \
> >             file://systemd-pager.sh \
> >             file://0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
> >             file://0008-implment-systemd-sysv-install-for-OE.patch \
> > -           file://0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch \
> >             "
> >  
> >  # patches needed by musl
> > @@ -73,6 +71,7 @@ PACKAGECONFIG ??= " \
> >      ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '', 'link-udev-shared', d)} \
> >      backlight \
> >      binfmt \
> > +    cgroupv2 \
> >      gshadow \
> >      hibernate \
> >      hostnamed \
> > @@ -266,12 +265,16 @@ EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec 
> > \  # The 60 seconds is watchdog's default vaule.
> >  WATCHDOG_TIMEOUT ??= "60"
> >  
> > -do_configure:prepend() {
> > -  sed s@:ROOT_HOME:@${ROOT_HOME}@g ${WORKDIR}/basic.conf.in > 
> > ${S}/sysusers.d/basic.conf.in -}
> > -
> >  do_install() {
> >  	meson_do_install
> > +	# Change the root user's home directory in /lib/sysusers.d/basic.conf.
> > +	# This is done merely for backward compatibility with previous systemd recipes.
> > +	# systemd hardcodes root user's HOME to be "/root". Changing to use other values
> > +	# may have unexpected runtime behaviors.
> > +	if [ "${ROOT_HOME}" != "/root" ]; then
> > +		bbwarn "Using ${ROOT_HOME} as root user's home directory is not fully supported by systemd"
> > +		sed -i -e 's#/root#${ROOT_HOME}#g' ${D}${exec_prefix}/lib/sysusers.d/basic.conf
> > +	fi
> >  	install -d ${D}/${base_sbindir}
> >  	if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then
> >  		# Provided by a separate recipe
> > @@ -754,6 +757,7 @@ FILES:udev += "${base_sbindir}/udevd \
> >                 ${rootlibexecdir}/udev/rules.d/60-persistent-alsa.rules \
> >                 ${rootlibexecdir}/udev/rules.d/60-persistent-input.rules \
> >                 
> > ${rootlibexecdir}/udev/rules.d/60-persistent-storage.rules \
> > +               
> > + ${rootlibexecdir}/udev/rules.d/60-persistent-storage-mtd.rules \
> >                 ${rootlibexecdir}/udev/rules.d/60-persistent-storage-tape.rules \
> >                 ${rootlibexecdir}/udev/rules.d/60-persistent-v4l.rules \
> >                 ${rootlibexecdir}/udev/rules.d/60-sensor.rules \
> > --
> > 2.34.1
> > 
> 
> > 
> > 
> > 
> 
> 
> -- 
> Alexandre Belloni, co-owner and COO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com

> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#193387): https://lists.openembedded.org/g/openembedded-core/message/193387
> Mute This Topic: https://lists.openembedded.org/mt/103380516/3617179
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
ChenQi Jan. 9, 2024, 8:14 a.m. UTC | #12
I just sent out a patch for the yocto-autobuilder-helper repo to use '/root' as the ROOT_HOME's value in case of 'sysvinit with systemd'.

Regards,
Qi

-----Original Message-----
From: Alexandre Belloni <alexandre.belloni@bootlin.com> 
Sent: Tuesday, January 9, 2024 3:47 PM
To: Chen, Qi <Qi.Chen@windriver.com>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [OE-core][PATCH 1/3] systemd: upgrade to 255.1

I got this today:

https://autobuilder.yoctoproject.org/typhoon/#/builders/72/builds/8420/steps/25/logs/stdio

WARNING: systemd-1_255.1-r0 do_install: Using /home/root as root user's home directory is not fully supported by systemd

On 07/01/2024 14:05:35+0000, Chen Qi via lists.openembedded.org wrote:
> Another patch in this series fixes the warning:
> rootfs-postcommands.bbclass: ignore comment mismatch in 
> systemd_user_check
> 
> Is that patch also staged?
> 
> Regards,
> Qi
> 
> -----Original Message-----
> From: Alexandre Belloni <alexandre.belloni@bootlin.com>
> Sent: Saturday, January 6, 2024 12:02 AM
> To: Chen, Qi <Qi.Chen@windriver.com>
> Cc: openembedded-core@lists.openembedded.org
> Subject: Re: [OE-core][PATCH 1/3] systemd: upgrade to 255.1
> 
> Hello,
> 
> This fails with:
> 
> https://autobuilder.yoctoproject.org/typhoon/#/builders/106/builds/736
> 1/steps/12/logs/warnings
> 
> WARNING: core-image-full-cmdline-1.0-r0 do_rootfs: User root has been 
> defined as (root, 0, 0, root, /root, /bin/sh) but sysusers.d expects 
> it as (root, 0, 0, Super User, /root, -)
> WARNING: core-image-full-cmdline-1.0-r0 do_rootfs: User nobody has 
> been defined as (nobody, 65534, 65534, nobody, /nonexistent, 
> /usr/sbin/nologin) but sysusers.d expects it as (nobody, 65534, 65534, 
> Kernel Overflow User, -, -)
> WARNING: core-image-sato-1.0-r0 do_rootfs: User root has been defined 
> as (root, 0, 0, root, /root, /bin/sh) but sysusers.d expects it as 
> (root, 0, 0, Super User, /root, -)
> WARNING: core-image-sato-1.0-r0 do_rootfs: User nobody has been 
> defined as (nobody, 65534, 65534, nobody, /nonexistent, 
> /usr/sbin/nologin) but sysusers.d expects it as (nobody, 65534, 65534, 
> Kernel Overflow User, -, -)
> WARNING: core-image-sato-sdk-1.0-r0 do_rootfs: User root has been 
> defined as (root, 0, 0, root, /root, /bin/sh) but sysusers.d expects 
> it as (root, 0, 0, Super User, /root, -)
> WARNING: core-image-sato-sdk-1.0-r0 do_rootfs: User nobody has been 
> defined as (nobody, 65534, 65534, nobody, /nonexistent, 
> /usr/sbin/nologin) but sysusers.d expects it as (nobody, 65534, 65534, 
> Kernel Overflow User, -, -)
> 
> On 27/12/2023 12:20:34+0800, Chen Qi via lists.openembedded.org wrote:
> > From: Chen Qi <Qi.Chen@windriver.com>
> > 
> > 1. Patch changes:
> > 
> > 0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
> > is removed because it has no real effect now. The /lib is now 
> > /usr/lib because 'usrmerge' is a required distro feature for systemd.
> > 
> > 0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch is 
> > refreshed for the new version to avoid patch-fuzz issue.
> > 
> > 2. root user's home directory now defaults to "/root":
> > 
> > The sysuers.d/basic.conf is still modified to respect the ROOT_HOME 
> > value, so if users set ROOT_HOME to "/home/root", the behavior is 
> > the same as before. However, this is only for backward 
> > compatibility. With this patch, The ROOT_HOME value is set to "/root" in init-manager-systemd.inc.
> > This is because systemd's source codes are hardcoding "/root", and 
> > other values are not officially supported. See the list below.
> > $ grep -rl '"/root"' src/ | grep -v 'src/test'
> > src/core/namespace.c
> > src/basic/user-util.c
> > src/nss-systemd/nss-systemd.c
> > src/nspawn/nspawn.c
> > src/firstboot/firstboot.c
> > src/shared/userdb.c
> > src/shared/user-record.c
> > $ grep -rl /root network/ factory/ sysctl.d/ sysusers.d/ rules.d/ 
> > tmpfiles.d/ units/ xorg/ tools/ sysusers.d/basic.conf.in 
> > tmpfiles.d/provision.conf units/emergency.service.in 
> > units/rescue.service.in tools/list-discoverable-partitions.py
> > Previously, the recipe was just substituting 
> > sysusers.d/basic.conf.in, which is not enough to be treated as 
> > 'fully support'. I deliberately put a warning message in do_install to warn users about non "/root"
> > ROOT_HOME value. Don't remove it until all above places are handled.
> > 
> > 3. cgroupv2 is now the default.
> > cgroupv2 is the default for systemd for many years and it's the 
> > default for distros such as ubuntu and fedora. Let's also use it as the default.
> > 
> > Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> > ---
> >  .../distro/include/init-manager-systemd.inc   |  2 +
> >  meta/recipes-core/systemd/systemd.inc         |  4 +-
> >  ...tall-dependency-links-at-install-tim.patch | 22 +++--- 
> > ...sysctl.d-binfmt.d-modules-load.d-to-.patch | 73 -------------------
> >  .../systemd/systemd/basic.conf.in             | 40 ----------
> >  .../{systemd_254.4.bb => systemd_255.1.bb}    | 16 ++--
> >  6 files changed, 25 insertions(+), 132 deletions(-)  delete mode
> > 100644
> > meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binf
> > mt .d-modules-load.d-to-.patch  delete mode 100644 
> > meta/recipes-core/systemd/systemd/basic.conf.in
> >  rename meta/recipes-core/systemd/{systemd_254.4.bb => 
> > systemd_255.1.bb} (98%)
> > 
> > diff --git a/meta/conf/distro/include/init-manager-systemd.inc
> > b/meta/conf/distro/include/init-manager-systemd.inc
> > index 595d1f2644..0a76647459 100644
> > --- a/meta/conf/distro/include/init-manager-systemd.inc
> > +++ b/meta/conf/distro/include/init-manager-systemd.inc
> > @@ -5,3 +5,5 @@ VIRTUAL-RUNTIME_init_manager ??= "systemd"
> >  VIRTUAL-RUNTIME_initscripts ??= "systemd-compat-units"
> >  VIRTUAL-RUNTIME_login_manager ??= "shadow-base"
> >  VIRTUAL-RUNTIME_dev_manager ??= "systemd"
> > +# systemd hardcodes /root in its source codes, other values are not 
> > +offically supported ROOT_HOME ?= "/root"
> > diff --git a/meta/recipes-core/systemd/systemd.inc
> > b/meta/recipes-core/systemd/systemd.inc
> > index ccc3236457..1417e0150f 100644
> > --- a/meta/recipes-core/systemd/systemd.inc
> > +++ b/meta/recipes-core/systemd/systemd.inc
> > @@ -15,8 +15,8 @@ LICENSE:libsystemd = "LGPL-2.1-or-later"
> >  LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
> >                      file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
> >  
> > -SRCREV = "2e7504449a51fb38db9cd2da391c6434f82def51"
> > -SRCBRANCH = "v254-stable"
> > +SRCREV = "2018ccef6645ce00c784369a22dc4e98f6d7061d"
> > +SRCBRANCH = "v255-stable"
> >  SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=https;branch=${SRCBRANCH}"
> >  
> >  S = "${WORKDIR}/git"
> > diff --git
> > a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-depend
> > en
> > cy-links-at-install-tim.patch
> > b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-depend
> > en
> > cy-links-at-install-tim.patch
> > index 085f1e9052..be231cf6b2 100644
> > ---
> > a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-depend
> > en
> > cy-links-at-install-tim.patch
> > +++ b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-de
> > +++ pe ndency-links-at-install-tim.patch
> > @@ -1,8 +1,8 @@
> > -From ca7d9a8d9c81702af9c599bb79706f12b1a465cf Mon Sep 17 00:00:00
> > 2001
> > +From 29a58009a172e369ad7166e16dab2f4945c6b0d2 Mon Sep 17 00:00:00
> > +2001
> >  From: Chen Qi <Qi.Chen@windriver.com>
> >  Date: Thu, 21 Feb 2019 16:23:24 +0800
> > -Subject: [PATCH] binfmt: Don't install dependency links at install 
> > time for
> > - the binfmt services
> > +Subject: [PATCH 1/2] binfmt: Don't install dependency links at 
> > +install time  for the binfmt services
> >  
> >  use [Install] blocks so that they get created when the service is 
> > enabled  like a traditional service.
> > @@ -25,10 +25,10 @@ Signed-off-by: Scott Murray <scott.murray@konsulko.com>
> >   3 files changed, 7 insertions(+), 2 deletions(-)
> >  
> >  diff --git a/units/meson.build b/units/meson.build -index
> > c7939a10f8..219570ab19 100644
> > +index e7bfb7f838..1d5ec4b178 100644
> >  --- a/units/meson.build
> >  +++ b/units/meson.build
> > -@@ -149,7 +149,6 @@ units = [
> > +@@ -154,7 +154,6 @@ units = [
> >           {
> >             'file' : 'proc-sys-fs-binfmt_misc.automount',
> >             'conditions' : ['ENABLE_BINFMT'], @@ -36,7 +36,7 @@ 
> > index
> > c7939a10f8..219570ab19 100644
> >           },
> >           {
> >             'file' : 'proc-sys-fs-binfmt_misc.mount', -@@ -246,7
> > +245,6 @@ units = [
> > +@@ -251,7 +250,6 @@ units = [
> >           {
> >             'file' : 'systemd-binfmt.service.in',
> >             'conditions' : ['ENABLE_BINFMT'], @@ -45,7 +45,7 @@ 
> > index
> > c7939a10f8..219570ab19 100644
> >           {
> >             'file' : 'systemd-bless-boot.service.in',  diff --git 
> > a/units/proc-sys-fs-binfmt_misc.automount
> > b/units/proc-sys-fs-binfmt_misc.automount
> > -index 6b1bbdc91e..5ec5b8670a 100644
> > +index 5d212015a5..6c2900ca77 100644
> >  --- a/units/proc-sys-fs-binfmt_misc.automount
> >  +++ b/units/proc-sys-fs-binfmt_misc.automount
> >  @@ -22,3 +22,6 @@ Before=shutdown.target @@ -56,7 +56,7 @@ index 
> > 6b1bbdc91e..5ec5b8670a 100644  +[Install]  +WantedBy=sysinit.target 
> > diff --git a/units/systemd-binfmt.service.in 
> > b/units/systemd-binfmt.service.in -index b04412e037..63f116e4fa 
> > 100644
> > +index 6861c76674..531e9fbd90 100644
> >  --- a/units/systemd-binfmt.service.in  +++ 
> > b/units/systemd-binfmt.service.in  @@ -14,6 +14,7 @@ 
> > Documentation=https://docs.kernel.org/admin-guide/binfmt-misc.html
> > @@ -68,12 +68,12 @@ index b04412e037..63f116e4fa 100644
> >   After=proc-sys-fs-binfmt_misc.mount
> >   After=local-fs.target
> >  @@ -31,3 +32,6 @@ RemainAfterExit=yes
> > - ExecStart={{ROOTLIBEXECDIR}}/systemd-binfmt
> > - ExecStop={{ROOTLIBEXECDIR}}/systemd-binfmt --unregister
> > + ExecStart={{LIBEXECDIR}}/systemd-binfmt
> > + ExecStop={{LIBEXECDIR}}/systemd-binfmt --unregister
> >   TimeoutSec=90s
> >  +
> >  +[Install]
> >  +WantedBy=sysinit.target
> >  --
> > -2.39.2
> > +2.34.1
> >  
> > diff --git
> > a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-bi
> > nf
> > mt.d-modules-load.d-to-.patch
> > b/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-bi
> > nf
> > mt.d-modules-load.d-to-.patch
> > deleted file mode 100644
> > index 98914ae154..0000000000
> > ---
> > a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-bi
> > nf
> > mt.d-modules-load.d-to-.patch
> > +++ /dev/null
> > @@ -1,73 +0,0 @@
> > -From f75f03ef6bc3554068e456bed227f333d5cb8c34 Mon Sep 17 00:00:00
> > 2001
> > -From: Khem Raj <raj.khem@gmail.com>
> > -Date: Tue, 29 Sep 2020 18:01:41 -0700
> > -Subject: [PATCH] Move sysusers.d/sysctl.d/binfmt.d/modules-load.d 
> > to /usr
> > -
> > -These directories are moved to /lib since systemd v246, commit 
> > -4a56315a990b ("path: use ROOTPREFIX properly"), but in 
> > oe-core/yocto, -the old /usr/lib is still being used.
> > -
> > -Upstream-Status: Inappropriate (OE-specific)
> > -Signed-off-by: Khem Raj <raj.khem@gmail.com>
> > -Signed-off-by: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
> > ----
> > - src/core/systemd.pc.in           | 8 ++++----
> > - src/libsystemd/sd-path/sd-path.c | 8 ++++----
> > - 2 files changed, 8 insertions(+), 8 deletions(-)
> > -
> > -diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in -index
> > 693433b34b..8368a3ff02 100644
> > ---- a/src/core/systemd.pc.in
> > -+++ b/src/core/systemd.pc.in
> > -@@ -67,16 +67,16 @@ tmpfilesdir=${tmpfiles_dir}
> > -
> > - user_tmpfiles_dir=${prefix}/share/user-tmpfiles.d
> > -
> > --sysusers_dir=${rootprefix}/lib/sysusers.d
> > -+sysusers_dir=${prefix}/lib/sysusers.d
> > - sysusersdir=${sysusers_dir}
> > -
> > --sysctl_dir=${rootprefix}/lib/sysctl.d
> > -+sysctl_dir=${prefix}/lib/sysctl.d
> > - sysctldir=${sysctl_dir}
> > -
> > --binfmt_dir=${rootprefix}/lib/binfmt.d
> > -+binfmt_dir=${prefix}/lib/binfmt.d
> > - binfmtdir=${binfmt_dir}
> > -
> > --modules_load_dir=${rootprefix}/lib/modules-load.d
> > -+modules_load_dir=${prefix}/lib/modules-load.d
> > - modulesloaddir=${modules_load_dir}
> > -
> > - catalog_dir=${prefix}/lib/systemd/catalog
> > -diff --git a/src/libsystemd/sd-path/sd-path.c
> > b/src/libsystemd/sd-path/sd-path.c
> > -index 1af3a36d1d..def502b717 100644
> > ---- a/src/libsystemd/sd-path/sd-path.c
> > -+++ b/src/libsystemd/sd-path/sd-path.c
> > -@@ -365,19 +365,19 @@ static int get_path(uint64_t type, char **buffer, const char **ret) {
> > -                 return 0;
> > - 
> > -         case SD_PATH_SYSUSERS:
> > --                *ret = ROOTPREFIX_NOSLASH "/lib/sysusers.d";
> > -+                *ret = "/usr/lib/sysusers.d";
> > -                 return 0;
> > - 
> > -         case SD_PATH_SYSCTL:
> > --                *ret = ROOTPREFIX_NOSLASH "/lib/sysctl.d";
> > -+                *ret = "/usr/lib/sysctl.d";
> > -                 return 0;
> > - 
> > -         case SD_PATH_BINFMT:
> > --                *ret = ROOTPREFIX_NOSLASH "/lib/binfmt.d";
> > -+                *ret = "/usr/lib/binfmt.d";
> > -                 return 0;
> > - 
> > -         case SD_PATH_MODULES_LOAD:
> > --                *ret = ROOTPREFIX_NOSLASH "/lib/modules-load.d";
> > -+                *ret = "/usr/lib/modules-load.d";
> > -                 return 0;
> > - 
> > -         case SD_PATH_CATALOG:
> > ---
> > -2.39.2
> > -
> > diff --git a/meta/recipes-core/systemd/systemd/basic.conf.in
> > b/meta/recipes-core/systemd/systemd/basic.conf.in
> > deleted file mode 100644
> > index fac288f7fa..0000000000
> > --- a/meta/recipes-core/systemd/systemd/basic.conf.in
> > +++ /dev/null
> > @@ -1,40 +0,0 @@
> > -#  This file is part of systemd.
> > -#
> > -#  systemd is free software; you can redistribute it and/or modify 
> > it -#  under the terms of the GNU Lesser General Public License as 
> > published by -#  the Free Software Foundation; either version 2.1 of 
> > the License, or -#  (at your option) any later version.
> > -
> > -# The superuser
> > -u root    0     "root" :ROOT_HOME:
> > -
> > -# The nobody user/group for NFS file systems
> > -g {{NOBODY_GROUP_NAME}} 65534       -            -
> > -u {{NOBODY_USER_NAME }} 65534:65534 "Nobody"     -
> > -
> > -# Administrator group: can *see* more than normal users
> > -g adm     {{ADM_GID    }}     -            -
> > -
> > -# Administrator group: can *do* more than normal users
> > -g wheel   {{WHEEL_GID  }}     -            -
> > -
> > -# Access to shared database of users on the system
> > -g utmp    {{UTMP_GID   }}     -            -
> > -
> > -# Physical and virtual hardware access groups
> > -g audio   {{AUDIO_GID  }}     -            -
> > -g cdrom   {{CDROM_GID  }}     -            -
> > -g dialout {{DIALOUT_GID}}     -            -
> > -g disk    {{DISK_GID   }}     -            -
> > -g input   {{INPUT_GID  }}     -            -
> > -g kmem    {{KMEM_GID   }}     -            -
> > -g kvm     {{KVM_GID    }}     -            -
> > -g lp      {{LP_GID     }}     -            -
> > -g render  {{RENDER_GID }}     -            -
> > -g sgx     {{SGX_GID    }}     -            -
> > -g tape    {{TAPE_GID   }}     -            -
> > -g tty     {{TTY_GID    }}     -            -
> > -g video   {{VIDEO_GID  }}     -            -
> > -
> > -# Default group for normal users
> > -g users   {{USERS_GID  }}     -            -
> > diff --git a/meta/recipes-core/systemd/systemd_254.4.bb
> > b/meta/recipes-core/systemd/systemd_255.1.bb
> > similarity index 98%
> > rename from meta/recipes-core/systemd/systemd_254.4.bb
> > rename to meta/recipes-core/systemd/systemd_255.1.bb
> > index 0c12926bef..daa3a01fef 100644
> > --- a/meta/recipes-core/systemd/systemd_254.4.bb
> > +++ b/meta/recipes-core/systemd/systemd_255.1.bb
> > @@ -21,7 +21,6 @@ REQUIRED_DISTRO_FEATURES += "systemd"
> >  SRC_URI += " \
> >             file://touchscreen.rules \
> >             file://00-create-volatile.conf \
> > -           file://basic.conf.in \
> >             ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://org.freedesktop.hostname1_no_polkit.conf', '', d)} \
> >             ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://00-hostnamed-network-user.conf', '', d)} \
> >             file://init \
> > @@ -29,7 +28,6 @@ SRC_URI += " \
> >             file://systemd-pager.sh \
> >             file://0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
> >             file://0008-implment-systemd-sysv-install-for-OE.patch \
> > -           file://0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch \
> >             "
> >  
> >  # patches needed by musl
> > @@ -73,6 +71,7 @@ PACKAGECONFIG ??= " \
> >      ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '', 'link-udev-shared', d)} \
> >      backlight \
> >      binfmt \
> > +    cgroupv2 \
> >      gshadow \
> >      hibernate \
> >      hostnamed \
> > @@ -266,12 +265,16 @@ EXTRA_OEMESON += 
> > "-Dkexec-path=${sbindir}/kexec \  # The 60 seconds is watchdog's default vaule.
> >  WATCHDOG_TIMEOUT ??= "60"
> >  
> > -do_configure:prepend() {
> > -  sed s@:ROOT_HOME:@${ROOT_HOME}@g ${WORKDIR}/basic.conf.in > 
> > ${S}/sysusers.d/basic.conf.in -}
> > -
> >  do_install() {
> >  	meson_do_install
> > +	# Change the root user's home directory in /lib/sysusers.d/basic.conf.
> > +	# This is done merely for backward compatibility with previous systemd recipes.
> > +	# systemd hardcodes root user's HOME to be "/root". Changing to use other values
> > +	# may have unexpected runtime behaviors.
> > +	if [ "${ROOT_HOME}" != "/root" ]; then
> > +		bbwarn "Using ${ROOT_HOME} as root user's home directory is not fully supported by systemd"
> > +		sed -i -e 's#/root#${ROOT_HOME}#g' ${D}${exec_prefix}/lib/sysusers.d/basic.conf
> > +	fi
> >  	install -d ${D}/${base_sbindir}
> >  	if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then
> >  		# Provided by a separate recipe
> > @@ -754,6 +757,7 @@ FILES:udev += "${base_sbindir}/udevd \
> >                 ${rootlibexecdir}/udev/rules.d/60-persistent-alsa.rules \
> >                 
> > ${rootlibexecdir}/udev/rules.d/60-persistent-input.rules \
> >                 
> > ${rootlibexecdir}/udev/rules.d/60-persistent-storage.rules \
> > +               
> > + ${rootlibexecdir}/udev/rules.d/60-persistent-storage-mtd.rules \
> >                 ${rootlibexecdir}/udev/rules.d/60-persistent-storage-tape.rules \
> >                 ${rootlibexecdir}/udev/rules.d/60-persistent-v4l.rules \
> >                 ${rootlibexecdir}/udev/rules.d/60-sensor.rules \
> > --
> > 2.34.1
> > 
> 
> > 
> > 
> > 
> 
> 
> --
> Alexandre Belloni, co-owner and COO, Bootlin Embedded Linux and Kernel 
> engineering https://bootlin.com

> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#193387): 
> https://lists.openembedded.org/g/openembedded-core/message/193387
> Mute This Topic: https://lists.openembedded.org/mt/103380516/3617179
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
> [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
> 


--
Alexandre Belloni, co-owner and COO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
ChenQi Jan. 19, 2024, 3:09 a.m. UTC | #13
What's the status of this patch series?
Is there any issue or concern that I missed?

Regards,
Qi

On 12/27/23 12:20, Chen Qi via lists.openembedded.org wrote:
> From: Chen Qi <Qi.Chen@windriver.com>
>
> 1. Patch changes:
>
> 0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
> is removed because it has no real effect now. The /lib is now
> /usr/lib because 'usrmerge' is a required distro feature for systemd.
>
> 0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch is
> refreshed for the new version to avoid patch-fuzz issue.
>
> 2. root user's home directory now defaults to "/root":
>
> The sysuers.d/basic.conf is still modified to respect the ROOT_HOME
> value, so if users set ROOT_HOME to "/home/root", the behavior is the
> same as before. However, this is only for backward compatibility. With
> this patch, The ROOT_HOME value is set to "/root" in init-manager-systemd.inc.
> This is because systemd's source codes are hardcoding "/root", and other
> values are not officially supported. See the list below.
> $ grep -rl '"/root"' src/ | grep -v 'src/test'
> src/core/namespace.c
> src/basic/user-util.c
> src/nss-systemd/nss-systemd.c
> src/nspawn/nspawn.c
> src/firstboot/firstboot.c
> src/shared/userdb.c
> src/shared/user-record.c
> $ grep -rl /root network/ factory/ sysctl.d/ sysusers.d/ rules.d/ tmpfiles.d/ units/ xorg/ tools/
> sysusers.d/basic.conf.in
> tmpfiles.d/provision.conf
> units/emergency.service.in
> units/rescue.service.in
> tools/list-discoverable-partitions.py
> Previously, the recipe was just substituting sysusers.d/basic.conf.in,
> which is not enough to be treated as 'fully support'. I deliberately put
> a warning message in do_install to warn users about non "/root" ROOT_HOME
> value. Don't remove it until all above places are handled.
>
> 3. cgroupv2 is now the default.
> cgroupv2 is the default for systemd for many years and it's the default
> for distros such as ubuntu and fedora. Let's also use it as the default.
>
> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> ---
>   .../distro/include/init-manager-systemd.inc   |  2 +
>   meta/recipes-core/systemd/systemd.inc         |  4 +-
>   ...tall-dependency-links-at-install-tim.patch | 22 +++---
>   ...sysctl.d-binfmt.d-modules-load.d-to-.patch | 73 -------------------
>   .../systemd/systemd/basic.conf.in             | 40 ----------
>   .../{systemd_254.4.bb => systemd_255.1.bb}    | 16 ++--
>   6 files changed, 25 insertions(+), 132 deletions(-)
>   delete mode 100644 meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
>   delete mode 100644 meta/recipes-core/systemd/systemd/basic.conf.in
>   rename meta/recipes-core/systemd/{systemd_254.4.bb => systemd_255.1.bb} (98%)
>
> diff --git a/meta/conf/distro/include/init-manager-systemd.inc b/meta/conf/distro/include/init-manager-systemd.inc
> index 595d1f2644..0a76647459 100644
> --- a/meta/conf/distro/include/init-manager-systemd.inc
> +++ b/meta/conf/distro/include/init-manager-systemd.inc
> @@ -5,3 +5,5 @@ VIRTUAL-RUNTIME_init_manager ??= "systemd"
>   VIRTUAL-RUNTIME_initscripts ??= "systemd-compat-units"
>   VIRTUAL-RUNTIME_login_manager ??= "shadow-base"
>   VIRTUAL-RUNTIME_dev_manager ??= "systemd"
> +# systemd hardcodes /root in its source codes, other values are not offically supported
> +ROOT_HOME ?= "/root"
> diff --git a/meta/recipes-core/systemd/systemd.inc b/meta/recipes-core/systemd/systemd.inc
> index ccc3236457..1417e0150f 100644
> --- a/meta/recipes-core/systemd/systemd.inc
> +++ b/meta/recipes-core/systemd/systemd.inc
> @@ -15,8 +15,8 @@ LICENSE:libsystemd = "LGPL-2.1-or-later"
>   LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
>                       file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
>   
> -SRCREV = "2e7504449a51fb38db9cd2da391c6434f82def51"
> -SRCBRANCH = "v254-stable"
> +SRCREV = "2018ccef6645ce00c784369a22dc4e98f6d7061d"
> +SRCBRANCH = "v255-stable"
>   SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=https;branch=${SRCBRANCH}"
>   
>   S = "${WORKDIR}/git"
> diff --git a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
> index 085f1e9052..be231cf6b2 100644
> --- a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
> +++ b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
> @@ -1,8 +1,8 @@
> -From ca7d9a8d9c81702af9c599bb79706f12b1a465cf Mon Sep 17 00:00:00 2001
> +From 29a58009a172e369ad7166e16dab2f4945c6b0d2 Mon Sep 17 00:00:00 2001
>   From: Chen Qi <Qi.Chen@windriver.com>
>   Date: Thu, 21 Feb 2019 16:23:24 +0800
> -Subject: [PATCH] binfmt: Don't install dependency links at install time for
> - the binfmt services
> +Subject: [PATCH 1/2] binfmt: Don't install dependency links at install time
> + for the binfmt services
>   
>   use [Install] blocks so that they get created when the service is enabled
>   like a traditional service.
> @@ -25,10 +25,10 @@ Signed-off-by: Scott Murray <scott.murray@konsulko.com>
>    3 files changed, 7 insertions(+), 2 deletions(-)
>   
>   diff --git a/units/meson.build b/units/meson.build
> -index c7939a10f8..219570ab19 100644
> +index e7bfb7f838..1d5ec4b178 100644
>   --- a/units/meson.build
>   +++ b/units/meson.build
> -@@ -149,7 +149,6 @@ units = [
> +@@ -154,7 +154,6 @@ units = [
>            {
>              'file' : 'proc-sys-fs-binfmt_misc.automount',
>              'conditions' : ['ENABLE_BINFMT'],
> @@ -36,7 +36,7 @@ index c7939a10f8..219570ab19 100644
>            },
>            {
>              'file' : 'proc-sys-fs-binfmt_misc.mount',
> -@@ -246,7 +245,6 @@ units = [
> +@@ -251,7 +250,6 @@ units = [
>            {
>              'file' : 'systemd-binfmt.service.in',
>              'conditions' : ['ENABLE_BINFMT'],
> @@ -45,7 +45,7 @@ index c7939a10f8..219570ab19 100644
>            {
>              'file' : 'systemd-bless-boot.service.in',
>   diff --git a/units/proc-sys-fs-binfmt_misc.automount b/units/proc-sys-fs-binfmt_misc.automount
> -index 6b1bbdc91e..5ec5b8670a 100644
> +index 5d212015a5..6c2900ca77 100644
>   --- a/units/proc-sys-fs-binfmt_misc.automount
>   +++ b/units/proc-sys-fs-binfmt_misc.automount
>   @@ -22,3 +22,6 @@ Before=shutdown.target
> @@ -56,7 +56,7 @@ index 6b1bbdc91e..5ec5b8670a 100644
>   +[Install]
>   +WantedBy=sysinit.target
>   diff --git a/units/systemd-binfmt.service.in b/units/systemd-binfmt.service.in
> -index b04412e037..63f116e4fa 100644
> +index 6861c76674..531e9fbd90 100644
>   --- a/units/systemd-binfmt.service.in
>   +++ b/units/systemd-binfmt.service.in
>   @@ -14,6 +14,7 @@ Documentation=https://docs.kernel.org/admin-guide/binfmt-misc.html
> @@ -68,12 +68,12 @@ index b04412e037..63f116e4fa 100644
>    After=proc-sys-fs-binfmt_misc.mount
>    After=local-fs.target
>   @@ -31,3 +32,6 @@ RemainAfterExit=yes
> - ExecStart={{ROOTLIBEXECDIR}}/systemd-binfmt
> - ExecStop={{ROOTLIBEXECDIR}}/systemd-binfmt --unregister
> + ExecStart={{LIBEXECDIR}}/systemd-binfmt
> + ExecStop={{LIBEXECDIR}}/systemd-binfmt --unregister
>    TimeoutSec=90s
>   +
>   +[Install]
>   +WantedBy=sysinit.target
>   --
> -2.39.2
> +2.34.1
>   
> diff --git a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch b/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
> deleted file mode 100644
> index 98914ae154..0000000000
> --- a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
> +++ /dev/null
> @@ -1,73 +0,0 @@
> -From f75f03ef6bc3554068e456bed227f333d5cb8c34 Mon Sep 17 00:00:00 2001
> -From: Khem Raj <raj.khem@gmail.com>
> -Date: Tue, 29 Sep 2020 18:01:41 -0700
> -Subject: [PATCH] Move sysusers.d/sysctl.d/binfmt.d/modules-load.d to /usr
> -
> -These directories are moved to /lib since systemd v246, commit
> -4a56315a990b ("path: use ROOTPREFIX properly"), but in oe-core/yocto,
> -the old /usr/lib is still being used.
> -
> -Upstream-Status: Inappropriate (OE-specific)
> -Signed-off-by: Khem Raj <raj.khem@gmail.com>
> -Signed-off-by: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
> ----
> - src/core/systemd.pc.in           | 8 ++++----
> - src/libsystemd/sd-path/sd-path.c | 8 ++++----
> - 2 files changed, 8 insertions(+), 8 deletions(-)
> -
> -diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in
> -index 693433b34b..8368a3ff02 100644
> ---- a/src/core/systemd.pc.in
> -+++ b/src/core/systemd.pc.in
> -@@ -67,16 +67,16 @@ tmpfilesdir=${tmpfiles_dir}
> -
> - user_tmpfiles_dir=${prefix}/share/user-tmpfiles.d
> -
> --sysusers_dir=${rootprefix}/lib/sysusers.d
> -+sysusers_dir=${prefix}/lib/sysusers.d
> - sysusersdir=${sysusers_dir}
> -
> --sysctl_dir=${rootprefix}/lib/sysctl.d
> -+sysctl_dir=${prefix}/lib/sysctl.d
> - sysctldir=${sysctl_dir}
> -
> --binfmt_dir=${rootprefix}/lib/binfmt.d
> -+binfmt_dir=${prefix}/lib/binfmt.d
> - binfmtdir=${binfmt_dir}
> -
> --modules_load_dir=${rootprefix}/lib/modules-load.d
> -+modules_load_dir=${prefix}/lib/modules-load.d
> - modulesloaddir=${modules_load_dir}
> -
> - catalog_dir=${prefix}/lib/systemd/catalog
> -diff --git a/src/libsystemd/sd-path/sd-path.c b/src/libsystemd/sd-path/sd-path.c
> -index 1af3a36d1d..def502b717 100644
> ---- a/src/libsystemd/sd-path/sd-path.c
> -+++ b/src/libsystemd/sd-path/sd-path.c
> -@@ -365,19 +365,19 @@ static int get_path(uint64_t type, char **buffer, const char **ret) {
> -                 return 0;
> -
> -         case SD_PATH_SYSUSERS:
> --                *ret = ROOTPREFIX_NOSLASH "/lib/sysusers.d";
> -+                *ret = "/usr/lib/sysusers.d";
> -                 return 0;
> -
> -         case SD_PATH_SYSCTL:
> --                *ret = ROOTPREFIX_NOSLASH "/lib/sysctl.d";
> -+                *ret = "/usr/lib/sysctl.d";
> -                 return 0;
> -
> -         case SD_PATH_BINFMT:
> --                *ret = ROOTPREFIX_NOSLASH "/lib/binfmt.d";
> -+                *ret = "/usr/lib/binfmt.d";
> -                 return 0;
> -
> -         case SD_PATH_MODULES_LOAD:
> --                *ret = ROOTPREFIX_NOSLASH "/lib/modules-load.d";
> -+                *ret = "/usr/lib/modules-load.d";
> -                 return 0;
> -
> -         case SD_PATH_CATALOG:
> ---
> -2.39.2
> -
> diff --git a/meta/recipes-core/systemd/systemd/basic.conf.in b/meta/recipes-core/systemd/systemd/basic.conf.in
> deleted file mode 100644
> index fac288f7fa..0000000000
> --- a/meta/recipes-core/systemd/systemd/basic.conf.in
> +++ /dev/null
> @@ -1,40 +0,0 @@
> -#  This file is part of systemd.
> -#
> -#  systemd is free software; you can redistribute it and/or modify it
> -#  under the terms of the GNU Lesser General Public License as published by
> -#  the Free Software Foundation; either version 2.1 of the License, or
> -#  (at your option) any later version.
> -
> -# The superuser
> -u root    0     "root" :ROOT_HOME:
> -
> -# The nobody user/group for NFS file systems
> -g {{NOBODY_GROUP_NAME}} 65534       -            -
> -u {{NOBODY_USER_NAME }} 65534:65534 "Nobody"     -
> -
> -# Administrator group: can *see* more than normal users
> -g adm     {{ADM_GID    }}     -            -
> -
> -# Administrator group: can *do* more than normal users
> -g wheel   {{WHEEL_GID  }}     -            -
> -
> -# Access to shared database of users on the system
> -g utmp    {{UTMP_GID   }}     -            -
> -
> -# Physical and virtual hardware access groups
> -g audio   {{AUDIO_GID  }}     -            -
> -g cdrom   {{CDROM_GID  }}     -            -
> -g dialout {{DIALOUT_GID}}     -            -
> -g disk    {{DISK_GID   }}     -            -
> -g input   {{INPUT_GID  }}     -            -
> -g kmem    {{KMEM_GID   }}     -            -
> -g kvm     {{KVM_GID    }}     -            -
> -g lp      {{LP_GID     }}     -            -
> -g render  {{RENDER_GID }}     -            -
> -g sgx     {{SGX_GID    }}     -            -
> -g tape    {{TAPE_GID   }}     -            -
> -g tty     {{TTY_GID    }}     -            -
> -g video   {{VIDEO_GID  }}     -            -
> -
> -# Default group for normal users
> -g users   {{USERS_GID  }}     -            -
> diff --git a/meta/recipes-core/systemd/systemd_254.4.bb b/meta/recipes-core/systemd/systemd_255.1.bb
> similarity index 98%
> rename from meta/recipes-core/systemd/systemd_254.4.bb
> rename to meta/recipes-core/systemd/systemd_255.1.bb
> index 0c12926bef..daa3a01fef 100644
> --- a/meta/recipes-core/systemd/systemd_254.4.bb
> +++ b/meta/recipes-core/systemd/systemd_255.1.bb
> @@ -21,7 +21,6 @@ REQUIRED_DISTRO_FEATURES += "systemd"
>   SRC_URI += " \
>              file://touchscreen.rules \
>              file://00-create-volatile.conf \
> -           file://basic.conf.in \
>              ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://org.freedesktop.hostname1_no_polkit.conf', '', d)} \
>              ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://00-hostnamed-network-user.conf', '', d)} \
>              file://init \
> @@ -29,7 +28,6 @@ SRC_URI += " \
>              file://systemd-pager.sh \
>              file://0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
>              file://0008-implment-systemd-sysv-install-for-OE.patch \
> -           file://0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch \
>              "
>   
>   # patches needed by musl
> @@ -73,6 +71,7 @@ PACKAGECONFIG ??= " \
>       ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '', 'link-udev-shared', d)} \
>       backlight \
>       binfmt \
> +    cgroupv2 \
>       gshadow \
>       hibernate \
>       hostnamed \
> @@ -266,12 +265,16 @@ EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec \
>   # The 60 seconds is watchdog's default vaule.
>   WATCHDOG_TIMEOUT ??= "60"
>   
> -do_configure:prepend() {
> -  sed s@:ROOT_HOME:@${ROOT_HOME}@g ${WORKDIR}/basic.conf.in > ${S}/sysusers.d/basic.conf.in
> -}
> -
>   do_install() {
>   	meson_do_install
> +	# Change the root user's home directory in /lib/sysusers.d/basic.conf.
> +	# This is done merely for backward compatibility with previous systemd recipes.
> +	# systemd hardcodes root user's HOME to be "/root". Changing to use other values
> +	# may have unexpected runtime behaviors.
> +	if [ "${ROOT_HOME}" != "/root" ]; then
> +		bbwarn "Using ${ROOT_HOME} as root user's home directory is not fully supported by systemd"
> +		sed -i -e 's#/root#${ROOT_HOME}#g' ${D}${exec_prefix}/lib/sysusers.d/basic.conf
> +	fi
>   	install -d ${D}/${base_sbindir}
>   	if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then
>   		# Provided by a separate recipe
> @@ -754,6 +757,7 @@ FILES:udev += "${base_sbindir}/udevd \
>                  ${rootlibexecdir}/udev/rules.d/60-persistent-alsa.rules \
>                  ${rootlibexecdir}/udev/rules.d/60-persistent-input.rules \
>                  ${rootlibexecdir}/udev/rules.d/60-persistent-storage.rules \
> +               ${rootlibexecdir}/udev/rules.d/60-persistent-storage-mtd.rules \
>                  ${rootlibexecdir}/udev/rules.d/60-persistent-storage-tape.rules \
>                  ${rootlibexecdir}/udev/rules.d/60-persistent-v4l.rules \
>                  ${rootlibexecdir}/udev/rules.d/60-sensor.rules \
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#192923): https://lists.openembedded.org/g/openembedded-core/message/192923
> Mute This Topic: https://lists.openembedded.org/mt/103380516/7304865
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [Qi.Chen@eng.windriver.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Alexandre Belloni Jan. 19, 2024, 6:13 p.m. UTC | #14
On 19/01/2024 11:09:20+0800, Chen Qi via lists.openembedded.org wrote:
> What's the status of this patch series?
> Is there any issue or concern that I missed?

I'm glad you asked, I got this today:

https://autobuilder.yoctoproject.org/typhoon/#/builders/72/builds/8466/steps/26/logs/warnings

> 
> Regards,
> Qi
> 
> On 12/27/23 12:20, Chen Qi via lists.openembedded.org wrote:
> > From: Chen Qi <Qi.Chen@windriver.com>
> > 
> > 1. Patch changes:
> > 
> > 0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
> > is removed because it has no real effect now. The /lib is now
> > /usr/lib because 'usrmerge' is a required distro feature for systemd.
> > 
> > 0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch is
> > refreshed for the new version to avoid patch-fuzz issue.
> > 
> > 2. root user's home directory now defaults to "/root":
> > 
> > The sysuers.d/basic.conf is still modified to respect the ROOT_HOME
> > value, so if users set ROOT_HOME to "/home/root", the behavior is the
> > same as before. However, this is only for backward compatibility. With
> > this patch, The ROOT_HOME value is set to "/root" in init-manager-systemd.inc.
> > This is because systemd's source codes are hardcoding "/root", and other
> > values are not officially supported. See the list below.
> > $ grep -rl '"/root"' src/ | grep -v 'src/test'
> > src/core/namespace.c
> > src/basic/user-util.c
> > src/nss-systemd/nss-systemd.c
> > src/nspawn/nspawn.c
> > src/firstboot/firstboot.c
> > src/shared/userdb.c
> > src/shared/user-record.c
> > $ grep -rl /root network/ factory/ sysctl.d/ sysusers.d/ rules.d/ tmpfiles.d/ units/ xorg/ tools/
> > sysusers.d/basic.conf.in
> > tmpfiles.d/provision.conf
> > units/emergency.service.in
> > units/rescue.service.in
> > tools/list-discoverable-partitions.py
> > Previously, the recipe was just substituting sysusers.d/basic.conf.in,
> > which is not enough to be treated as 'fully support'. I deliberately put
> > a warning message in do_install to warn users about non "/root" ROOT_HOME
> > value. Don't remove it until all above places are handled.
> > 
> > 3. cgroupv2 is now the default.
> > cgroupv2 is the default for systemd for many years and it's the default
> > for distros such as ubuntu and fedora. Let's also use it as the default.
> > 
> > Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> > ---
> >   .../distro/include/init-manager-systemd.inc   |  2 +
> >   meta/recipes-core/systemd/systemd.inc         |  4 +-
> >   ...tall-dependency-links-at-install-tim.patch | 22 +++---
> >   ...sysctl.d-binfmt.d-modules-load.d-to-.patch | 73 -------------------
> >   .../systemd/systemd/basic.conf.in             | 40 ----------
> >   .../{systemd_254.4.bb => systemd_255.1.bb}    | 16 ++--
> >   6 files changed, 25 insertions(+), 132 deletions(-)
> >   delete mode 100644 meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
> >   delete mode 100644 meta/recipes-core/systemd/systemd/basic.conf.in
> >   rename meta/recipes-core/systemd/{systemd_254.4.bb => systemd_255.1.bb} (98%)
> > 
> > diff --git a/meta/conf/distro/include/init-manager-systemd.inc b/meta/conf/distro/include/init-manager-systemd.inc
> > index 595d1f2644..0a76647459 100644
> > --- a/meta/conf/distro/include/init-manager-systemd.inc
> > +++ b/meta/conf/distro/include/init-manager-systemd.inc
> > @@ -5,3 +5,5 @@ VIRTUAL-RUNTIME_init_manager ??= "systemd"
> >   VIRTUAL-RUNTIME_initscripts ??= "systemd-compat-units"
> >   VIRTUAL-RUNTIME_login_manager ??= "shadow-base"
> >   VIRTUAL-RUNTIME_dev_manager ??= "systemd"
> > +# systemd hardcodes /root in its source codes, other values are not offically supported
> > +ROOT_HOME ?= "/root"
> > diff --git a/meta/recipes-core/systemd/systemd.inc b/meta/recipes-core/systemd/systemd.inc
> > index ccc3236457..1417e0150f 100644
> > --- a/meta/recipes-core/systemd/systemd.inc
> > +++ b/meta/recipes-core/systemd/systemd.inc
> > @@ -15,8 +15,8 @@ LICENSE:libsystemd = "LGPL-2.1-or-later"
> >   LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
> >                       file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
> > -SRCREV = "2e7504449a51fb38db9cd2da391c6434f82def51"
> > -SRCBRANCH = "v254-stable"
> > +SRCREV = "2018ccef6645ce00c784369a22dc4e98f6d7061d"
> > +SRCBRANCH = "v255-stable"
> >   SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=https;branch=${SRCBRANCH}"
> >   S = "${WORKDIR}/git"
> > diff --git a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
> > index 085f1e9052..be231cf6b2 100644
> > --- a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
> > +++ b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
> > @@ -1,8 +1,8 @@
> > -From ca7d9a8d9c81702af9c599bb79706f12b1a465cf Mon Sep 17 00:00:00 2001
> > +From 29a58009a172e369ad7166e16dab2f4945c6b0d2 Mon Sep 17 00:00:00 2001
> >   From: Chen Qi <Qi.Chen@windriver.com>
> >   Date: Thu, 21 Feb 2019 16:23:24 +0800
> > -Subject: [PATCH] binfmt: Don't install dependency links at install time for
> > - the binfmt services
> > +Subject: [PATCH 1/2] binfmt: Don't install dependency links at install time
> > + for the binfmt services
> >   use [Install] blocks so that they get created when the service is enabled
> >   like a traditional service.
> > @@ -25,10 +25,10 @@ Signed-off-by: Scott Murray <scott.murray@konsulko.com>
> >    3 files changed, 7 insertions(+), 2 deletions(-)
> >   diff --git a/units/meson.build b/units/meson.build
> > -index c7939a10f8..219570ab19 100644
> > +index e7bfb7f838..1d5ec4b178 100644
> >   --- a/units/meson.build
> >   +++ b/units/meson.build
> > -@@ -149,7 +149,6 @@ units = [
> > +@@ -154,7 +154,6 @@ units = [
> >            {
> >              'file' : 'proc-sys-fs-binfmt_misc.automount',
> >              'conditions' : ['ENABLE_BINFMT'],
> > @@ -36,7 +36,7 @@ index c7939a10f8..219570ab19 100644
> >            },
> >            {
> >              'file' : 'proc-sys-fs-binfmt_misc.mount',
> > -@@ -246,7 +245,6 @@ units = [
> > +@@ -251,7 +250,6 @@ units = [
> >            {
> >              'file' : 'systemd-binfmt.service.in',
> >              'conditions' : ['ENABLE_BINFMT'],
> > @@ -45,7 +45,7 @@ index c7939a10f8..219570ab19 100644
> >            {
> >              'file' : 'systemd-bless-boot.service.in',
> >   diff --git a/units/proc-sys-fs-binfmt_misc.automount b/units/proc-sys-fs-binfmt_misc.automount
> > -index 6b1bbdc91e..5ec5b8670a 100644
> > +index 5d212015a5..6c2900ca77 100644
> >   --- a/units/proc-sys-fs-binfmt_misc.automount
> >   +++ b/units/proc-sys-fs-binfmt_misc.automount
> >   @@ -22,3 +22,6 @@ Before=shutdown.target
> > @@ -56,7 +56,7 @@ index 6b1bbdc91e..5ec5b8670a 100644
> >   +[Install]
> >   +WantedBy=sysinit.target
> >   diff --git a/units/systemd-binfmt.service.in b/units/systemd-binfmt.service.in
> > -index b04412e037..63f116e4fa 100644
> > +index 6861c76674..531e9fbd90 100644
> >   --- a/units/systemd-binfmt.service.in
> >   +++ b/units/systemd-binfmt.service.in
> >   @@ -14,6 +14,7 @@ Documentation=https://docs.kernel.org/admin-guide/binfmt-misc.html
> > @@ -68,12 +68,12 @@ index b04412e037..63f116e4fa 100644
> >    After=proc-sys-fs-binfmt_misc.mount
> >    After=local-fs.target
> >   @@ -31,3 +32,6 @@ RemainAfterExit=yes
> > - ExecStart={{ROOTLIBEXECDIR}}/systemd-binfmt
> > - ExecStop={{ROOTLIBEXECDIR}}/systemd-binfmt --unregister
> > + ExecStart={{LIBEXECDIR}}/systemd-binfmt
> > + ExecStop={{LIBEXECDIR}}/systemd-binfmt --unregister
> >    TimeoutSec=90s
> >   +
> >   +[Install]
> >   +WantedBy=sysinit.target
> >   --
> > -2.39.2
> > +2.34.1
> > diff --git a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch b/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
> > deleted file mode 100644
> > index 98914ae154..0000000000
> > --- a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
> > +++ /dev/null
> > @@ -1,73 +0,0 @@
> > -From f75f03ef6bc3554068e456bed227f333d5cb8c34 Mon Sep 17 00:00:00 2001
> > -From: Khem Raj <raj.khem@gmail.com>
> > -Date: Tue, 29 Sep 2020 18:01:41 -0700
> > -Subject: [PATCH] Move sysusers.d/sysctl.d/binfmt.d/modules-load.d to /usr
> > -
> > -These directories are moved to /lib since systemd v246, commit
> > -4a56315a990b ("path: use ROOTPREFIX properly"), but in oe-core/yocto,
> > -the old /usr/lib is still being used.
> > -
> > -Upstream-Status: Inappropriate (OE-specific)
> > -Signed-off-by: Khem Raj <raj.khem@gmail.com>
> > -Signed-off-by: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
> > ----
> > - src/core/systemd.pc.in           | 8 ++++----
> > - src/libsystemd/sd-path/sd-path.c | 8 ++++----
> > - 2 files changed, 8 insertions(+), 8 deletions(-)
> > -
> > -diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in
> > -index 693433b34b..8368a3ff02 100644
> > ---- a/src/core/systemd.pc.in
> > -+++ b/src/core/systemd.pc.in
> > -@@ -67,16 +67,16 @@ tmpfilesdir=${tmpfiles_dir}
> > -
> > - user_tmpfiles_dir=${prefix}/share/user-tmpfiles.d
> > -
> > --sysusers_dir=${rootprefix}/lib/sysusers.d
> > -+sysusers_dir=${prefix}/lib/sysusers.d
> > - sysusersdir=${sysusers_dir}
> > -
> > --sysctl_dir=${rootprefix}/lib/sysctl.d
> > -+sysctl_dir=${prefix}/lib/sysctl.d
> > - sysctldir=${sysctl_dir}
> > -
> > --binfmt_dir=${rootprefix}/lib/binfmt.d
> > -+binfmt_dir=${prefix}/lib/binfmt.d
> > - binfmtdir=${binfmt_dir}
> > -
> > --modules_load_dir=${rootprefix}/lib/modules-load.d
> > -+modules_load_dir=${prefix}/lib/modules-load.d
> > - modulesloaddir=${modules_load_dir}
> > -
> > - catalog_dir=${prefix}/lib/systemd/catalog
> > -diff --git a/src/libsystemd/sd-path/sd-path.c b/src/libsystemd/sd-path/sd-path.c
> > -index 1af3a36d1d..def502b717 100644
> > ---- a/src/libsystemd/sd-path/sd-path.c
> > -+++ b/src/libsystemd/sd-path/sd-path.c
> > -@@ -365,19 +365,19 @@ static int get_path(uint64_t type, char **buffer, const char **ret) {
> > -                 return 0;
> > -
> > -         case SD_PATH_SYSUSERS:
> > --                *ret = ROOTPREFIX_NOSLASH "/lib/sysusers.d";
> > -+                *ret = "/usr/lib/sysusers.d";
> > -                 return 0;
> > -
> > -         case SD_PATH_SYSCTL:
> > --                *ret = ROOTPREFIX_NOSLASH "/lib/sysctl.d";
> > -+                *ret = "/usr/lib/sysctl.d";
> > -                 return 0;
> > -
> > -         case SD_PATH_BINFMT:
> > --                *ret = ROOTPREFIX_NOSLASH "/lib/binfmt.d";
> > -+                *ret = "/usr/lib/binfmt.d";
> > -                 return 0;
> > -
> > -         case SD_PATH_MODULES_LOAD:
> > --                *ret = ROOTPREFIX_NOSLASH "/lib/modules-load.d";
> > -+                *ret = "/usr/lib/modules-load.d";
> > -                 return 0;
> > -
> > -         case SD_PATH_CATALOG:
> > ---
> > -2.39.2
> > -
> > diff --git a/meta/recipes-core/systemd/systemd/basic.conf.in b/meta/recipes-core/systemd/systemd/basic.conf.in
> > deleted file mode 100644
> > index fac288f7fa..0000000000
> > --- a/meta/recipes-core/systemd/systemd/basic.conf.in
> > +++ /dev/null
> > @@ -1,40 +0,0 @@
> > -#  This file is part of systemd.
> > -#
> > -#  systemd is free software; you can redistribute it and/or modify it
> > -#  under the terms of the GNU Lesser General Public License as published by
> > -#  the Free Software Foundation; either version 2.1 of the License, or
> > -#  (at your option) any later version.
> > -
> > -# The superuser
> > -u root    0     "root" :ROOT_HOME:
> > -
> > -# The nobody user/group for NFS file systems
> > -g {{NOBODY_GROUP_NAME}} 65534       -            -
> > -u {{NOBODY_USER_NAME }} 65534:65534 "Nobody"     -
> > -
> > -# Administrator group: can *see* more than normal users
> > -g adm     {{ADM_GID    }}     -            -
> > -
> > -# Administrator group: can *do* more than normal users
> > -g wheel   {{WHEEL_GID  }}     -            -
> > -
> > -# Access to shared database of users on the system
> > -g utmp    {{UTMP_GID   }}     -            -
> > -
> > -# Physical and virtual hardware access groups
> > -g audio   {{AUDIO_GID  }}     -            -
> > -g cdrom   {{CDROM_GID  }}     -            -
> > -g dialout {{DIALOUT_GID}}     -            -
> > -g disk    {{DISK_GID   }}     -            -
> > -g input   {{INPUT_GID  }}     -            -
> > -g kmem    {{KMEM_GID   }}     -            -
> > -g kvm     {{KVM_GID    }}     -            -
> > -g lp      {{LP_GID     }}     -            -
> > -g render  {{RENDER_GID }}     -            -
> > -g sgx     {{SGX_GID    }}     -            -
> > -g tape    {{TAPE_GID   }}     -            -
> > -g tty     {{TTY_GID    }}     -            -
> > -g video   {{VIDEO_GID  }}     -            -
> > -
> > -# Default group for normal users
> > -g users   {{USERS_GID  }}     -            -
> > diff --git a/meta/recipes-core/systemd/systemd_254.4.bb b/meta/recipes-core/systemd/systemd_255.1.bb
> > similarity index 98%
> > rename from meta/recipes-core/systemd/systemd_254.4.bb
> > rename to meta/recipes-core/systemd/systemd_255.1.bb
> > index 0c12926bef..daa3a01fef 100644
> > --- a/meta/recipes-core/systemd/systemd_254.4.bb
> > +++ b/meta/recipes-core/systemd/systemd_255.1.bb
> > @@ -21,7 +21,6 @@ REQUIRED_DISTRO_FEATURES += "systemd"
> >   SRC_URI += " \
> >              file://touchscreen.rules \
> >              file://00-create-volatile.conf \
> > -           file://basic.conf.in \
> >              ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://org.freedesktop.hostname1_no_polkit.conf', '', d)} \
> >              ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://00-hostnamed-network-user.conf', '', d)} \
> >              file://init \
> > @@ -29,7 +28,6 @@ SRC_URI += " \
> >              file://systemd-pager.sh \
> >              file://0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
> >              file://0008-implment-systemd-sysv-install-for-OE.patch \
> > -           file://0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch \
> >              "
> >   # patches needed by musl
> > @@ -73,6 +71,7 @@ PACKAGECONFIG ??= " \
> >       ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '', 'link-udev-shared', d)} \
> >       backlight \
> >       binfmt \
> > +    cgroupv2 \
> >       gshadow \
> >       hibernate \
> >       hostnamed \
> > @@ -266,12 +265,16 @@ EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec \
> >   # The 60 seconds is watchdog's default vaule.
> >   WATCHDOG_TIMEOUT ??= "60"
> > -do_configure:prepend() {
> > -  sed s@:ROOT_HOME:@${ROOT_HOME}@g ${WORKDIR}/basic.conf.in > ${S}/sysusers.d/basic.conf.in
> > -}
> > -
> >   do_install() {
> >   	meson_do_install
> > +	# Change the root user's home directory in /lib/sysusers.d/basic.conf.
> > +	# This is done merely for backward compatibility with previous systemd recipes.
> > +	# systemd hardcodes root user's HOME to be "/root". Changing to use other values
> > +	# may have unexpected runtime behaviors.
> > +	if [ "${ROOT_HOME}" != "/root" ]; then
> > +		bbwarn "Using ${ROOT_HOME} as root user's home directory is not fully supported by systemd"
> > +		sed -i -e 's#/root#${ROOT_HOME}#g' ${D}${exec_prefix}/lib/sysusers.d/basic.conf
> > +	fi
> >   	install -d ${D}/${base_sbindir}
> >   	if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then
> >   		# Provided by a separate recipe
> > @@ -754,6 +757,7 @@ FILES:udev += "${base_sbindir}/udevd \
> >                  ${rootlibexecdir}/udev/rules.d/60-persistent-alsa.rules \
> >                  ${rootlibexecdir}/udev/rules.d/60-persistent-input.rules \
> >                  ${rootlibexecdir}/udev/rules.d/60-persistent-storage.rules \
> > +               ${rootlibexecdir}/udev/rules.d/60-persistent-storage-mtd.rules \
> >                  ${rootlibexecdir}/udev/rules.d/60-persistent-storage-tape.rules \
> >                  ${rootlibexecdir}/udev/rules.d/60-persistent-v4l.rules \
> >                  ${rootlibexecdir}/udev/rules.d/60-sensor.rules \
> > 
> > 
> > 
> 

> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#194007): https://lists.openembedded.org/g/openembedded-core/message/194007
> Mute This Topic: https://lists.openembedded.org/mt/103380516/3617179
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Alexandre Belloni Jan. 19, 2024, 6:14 p.m. UTC | #15
On 19/01/2024 19:13:25+0100, Alexandre Belloni wrote:
> On 19/01/2024 11:09:20+0800, Chen Qi via lists.openembedded.org wrote:
> > What's the status of this patch series?
> > Is there any issue or concern that I missed?
> 
> I'm glad you asked, I got this today:
> 
> https://autobuilder.yoctoproject.org/typhoon/#/builders/72/builds/8466/steps/26/logs/warnings

and I know you sent a patch for this but it didn't make it yet.

> 
> > 
> > Regards,
> > Qi
> > 
> > On 12/27/23 12:20, Chen Qi via lists.openembedded.org wrote:
> > > From: Chen Qi <Qi.Chen@windriver.com>
> > > 
> > > 1. Patch changes:
> > > 
> > > 0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
> > > is removed because it has no real effect now. The /lib is now
> > > /usr/lib because 'usrmerge' is a required distro feature for systemd.
> > > 
> > > 0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch is
> > > refreshed for the new version to avoid patch-fuzz issue.
> > > 
> > > 2. root user's home directory now defaults to "/root":
> > > 
> > > The sysuers.d/basic.conf is still modified to respect the ROOT_HOME
> > > value, so if users set ROOT_HOME to "/home/root", the behavior is the
> > > same as before. However, this is only for backward compatibility. With
> > > this patch, The ROOT_HOME value is set to "/root" in init-manager-systemd.inc.
> > > This is because systemd's source codes are hardcoding "/root", and other
> > > values are not officially supported. See the list below.
> > > $ grep -rl '"/root"' src/ | grep -v 'src/test'
> > > src/core/namespace.c
> > > src/basic/user-util.c
> > > src/nss-systemd/nss-systemd.c
> > > src/nspawn/nspawn.c
> > > src/firstboot/firstboot.c
> > > src/shared/userdb.c
> > > src/shared/user-record.c
> > > $ grep -rl /root network/ factory/ sysctl.d/ sysusers.d/ rules.d/ tmpfiles.d/ units/ xorg/ tools/
> > > sysusers.d/basic.conf.in
> > > tmpfiles.d/provision.conf
> > > units/emergency.service.in
> > > units/rescue.service.in
> > > tools/list-discoverable-partitions.py
> > > Previously, the recipe was just substituting sysusers.d/basic.conf.in,
> > > which is not enough to be treated as 'fully support'. I deliberately put
> > > a warning message in do_install to warn users about non "/root" ROOT_HOME
> > > value. Don't remove it until all above places are handled.
> > > 
> > > 3. cgroupv2 is now the default.
> > > cgroupv2 is the default for systemd for many years and it's the default
> > > for distros such as ubuntu and fedora. Let's also use it as the default.
> > > 
> > > Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> > > ---
> > >   .../distro/include/init-manager-systemd.inc   |  2 +
> > >   meta/recipes-core/systemd/systemd.inc         |  4 +-
> > >   ...tall-dependency-links-at-install-tim.patch | 22 +++---
> > >   ...sysctl.d-binfmt.d-modules-load.d-to-.patch | 73 -------------------
> > >   .../systemd/systemd/basic.conf.in             | 40 ----------
> > >   .../{systemd_254.4.bb => systemd_255.1.bb}    | 16 ++--
> > >   6 files changed, 25 insertions(+), 132 deletions(-)
> > >   delete mode 100644 meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
> > >   delete mode 100644 meta/recipes-core/systemd/systemd/basic.conf.in
> > >   rename meta/recipes-core/systemd/{systemd_254.4.bb => systemd_255.1.bb} (98%)
> > > 
> > > diff --git a/meta/conf/distro/include/init-manager-systemd.inc b/meta/conf/distro/include/init-manager-systemd.inc
> > > index 595d1f2644..0a76647459 100644
> > > --- a/meta/conf/distro/include/init-manager-systemd.inc
> > > +++ b/meta/conf/distro/include/init-manager-systemd.inc
> > > @@ -5,3 +5,5 @@ VIRTUAL-RUNTIME_init_manager ??= "systemd"
> > >   VIRTUAL-RUNTIME_initscripts ??= "systemd-compat-units"
> > >   VIRTUAL-RUNTIME_login_manager ??= "shadow-base"
> > >   VIRTUAL-RUNTIME_dev_manager ??= "systemd"
> > > +# systemd hardcodes /root in its source codes, other values are not offically supported
> > > +ROOT_HOME ?= "/root"
> > > diff --git a/meta/recipes-core/systemd/systemd.inc b/meta/recipes-core/systemd/systemd.inc
> > > index ccc3236457..1417e0150f 100644
> > > --- a/meta/recipes-core/systemd/systemd.inc
> > > +++ b/meta/recipes-core/systemd/systemd.inc
> > > @@ -15,8 +15,8 @@ LICENSE:libsystemd = "LGPL-2.1-or-later"
> > >   LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
> > >                       file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
> > > -SRCREV = "2e7504449a51fb38db9cd2da391c6434f82def51"
> > > -SRCBRANCH = "v254-stable"
> > > +SRCREV = "2018ccef6645ce00c784369a22dc4e98f6d7061d"
> > > +SRCBRANCH = "v255-stable"
> > >   SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=https;branch=${SRCBRANCH}"
> > >   S = "${WORKDIR}/git"
> > > diff --git a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
> > > index 085f1e9052..be231cf6b2 100644
> > > --- a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
> > > +++ b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
> > > @@ -1,8 +1,8 @@
> > > -From ca7d9a8d9c81702af9c599bb79706f12b1a465cf Mon Sep 17 00:00:00 2001
> > > +From 29a58009a172e369ad7166e16dab2f4945c6b0d2 Mon Sep 17 00:00:00 2001
> > >   From: Chen Qi <Qi.Chen@windriver.com>
> > >   Date: Thu, 21 Feb 2019 16:23:24 +0800
> > > -Subject: [PATCH] binfmt: Don't install dependency links at install time for
> > > - the binfmt services
> > > +Subject: [PATCH 1/2] binfmt: Don't install dependency links at install time
> > > + for the binfmt services
> > >   use [Install] blocks so that they get created when the service is enabled
> > >   like a traditional service.
> > > @@ -25,10 +25,10 @@ Signed-off-by: Scott Murray <scott.murray@konsulko.com>
> > >    3 files changed, 7 insertions(+), 2 deletions(-)
> > >   diff --git a/units/meson.build b/units/meson.build
> > > -index c7939a10f8..219570ab19 100644
> > > +index e7bfb7f838..1d5ec4b178 100644
> > >   --- a/units/meson.build
> > >   +++ b/units/meson.build
> > > -@@ -149,7 +149,6 @@ units = [
> > > +@@ -154,7 +154,6 @@ units = [
> > >            {
> > >              'file' : 'proc-sys-fs-binfmt_misc.automount',
> > >              'conditions' : ['ENABLE_BINFMT'],
> > > @@ -36,7 +36,7 @@ index c7939a10f8..219570ab19 100644
> > >            },
> > >            {
> > >              'file' : 'proc-sys-fs-binfmt_misc.mount',
> > > -@@ -246,7 +245,6 @@ units = [
> > > +@@ -251,7 +250,6 @@ units = [
> > >            {
> > >              'file' : 'systemd-binfmt.service.in',
> > >              'conditions' : ['ENABLE_BINFMT'],
> > > @@ -45,7 +45,7 @@ index c7939a10f8..219570ab19 100644
> > >            {
> > >              'file' : 'systemd-bless-boot.service.in',
> > >   diff --git a/units/proc-sys-fs-binfmt_misc.automount b/units/proc-sys-fs-binfmt_misc.automount
> > > -index 6b1bbdc91e..5ec5b8670a 100644
> > > +index 5d212015a5..6c2900ca77 100644
> > >   --- a/units/proc-sys-fs-binfmt_misc.automount
> > >   +++ b/units/proc-sys-fs-binfmt_misc.automount
> > >   @@ -22,3 +22,6 @@ Before=shutdown.target
> > > @@ -56,7 +56,7 @@ index 6b1bbdc91e..5ec5b8670a 100644
> > >   +[Install]
> > >   +WantedBy=sysinit.target
> > >   diff --git a/units/systemd-binfmt.service.in b/units/systemd-binfmt.service.in
> > > -index b04412e037..63f116e4fa 100644
> > > +index 6861c76674..531e9fbd90 100644
> > >   --- a/units/systemd-binfmt.service.in
> > >   +++ b/units/systemd-binfmt.service.in
> > >   @@ -14,6 +14,7 @@ Documentation=https://docs.kernel.org/admin-guide/binfmt-misc.html
> > > @@ -68,12 +68,12 @@ index b04412e037..63f116e4fa 100644
> > >    After=proc-sys-fs-binfmt_misc.mount
> > >    After=local-fs.target
> > >   @@ -31,3 +32,6 @@ RemainAfterExit=yes
> > > - ExecStart={{ROOTLIBEXECDIR}}/systemd-binfmt
> > > - ExecStop={{ROOTLIBEXECDIR}}/systemd-binfmt --unregister
> > > + ExecStart={{LIBEXECDIR}}/systemd-binfmt
> > > + ExecStop={{LIBEXECDIR}}/systemd-binfmt --unregister
> > >    TimeoutSec=90s
> > >   +
> > >   +[Install]
> > >   +WantedBy=sysinit.target
> > >   --
> > > -2.39.2
> > > +2.34.1
> > > diff --git a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch b/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
> > > deleted file mode 100644
> > > index 98914ae154..0000000000
> > > --- a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
> > > +++ /dev/null
> > > @@ -1,73 +0,0 @@
> > > -From f75f03ef6bc3554068e456bed227f333d5cb8c34 Mon Sep 17 00:00:00 2001
> > > -From: Khem Raj <raj.khem@gmail.com>
> > > -Date: Tue, 29 Sep 2020 18:01:41 -0700
> > > -Subject: [PATCH] Move sysusers.d/sysctl.d/binfmt.d/modules-load.d to /usr
> > > -
> > > -These directories are moved to /lib since systemd v246, commit
> > > -4a56315a990b ("path: use ROOTPREFIX properly"), but in oe-core/yocto,
> > > -the old /usr/lib is still being used.
> > > -
> > > -Upstream-Status: Inappropriate (OE-specific)
> > > -Signed-off-by: Khem Raj <raj.khem@gmail.com>
> > > -Signed-off-by: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
> > > ----
> > > - src/core/systemd.pc.in           | 8 ++++----
> > > - src/libsystemd/sd-path/sd-path.c | 8 ++++----
> > > - 2 files changed, 8 insertions(+), 8 deletions(-)
> > > -
> > > -diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in
> > > -index 693433b34b..8368a3ff02 100644
> > > ---- a/src/core/systemd.pc.in
> > > -+++ b/src/core/systemd.pc.in
> > > -@@ -67,16 +67,16 @@ tmpfilesdir=${tmpfiles_dir}
> > > -
> > > - user_tmpfiles_dir=${prefix}/share/user-tmpfiles.d
> > > -
> > > --sysusers_dir=${rootprefix}/lib/sysusers.d
> > > -+sysusers_dir=${prefix}/lib/sysusers.d
> > > - sysusersdir=${sysusers_dir}
> > > -
> > > --sysctl_dir=${rootprefix}/lib/sysctl.d
> > > -+sysctl_dir=${prefix}/lib/sysctl.d
> > > - sysctldir=${sysctl_dir}
> > > -
> > > --binfmt_dir=${rootprefix}/lib/binfmt.d
> > > -+binfmt_dir=${prefix}/lib/binfmt.d
> > > - binfmtdir=${binfmt_dir}
> > > -
> > > --modules_load_dir=${rootprefix}/lib/modules-load.d
> > > -+modules_load_dir=${prefix}/lib/modules-load.d
> > > - modulesloaddir=${modules_load_dir}
> > > -
> > > - catalog_dir=${prefix}/lib/systemd/catalog
> > > -diff --git a/src/libsystemd/sd-path/sd-path.c b/src/libsystemd/sd-path/sd-path.c
> > > -index 1af3a36d1d..def502b717 100644
> > > ---- a/src/libsystemd/sd-path/sd-path.c
> > > -+++ b/src/libsystemd/sd-path/sd-path.c
> > > -@@ -365,19 +365,19 @@ static int get_path(uint64_t type, char **buffer, const char **ret) {
> > > -                 return 0;
> > > -
> > > -         case SD_PATH_SYSUSERS:
> > > --                *ret = ROOTPREFIX_NOSLASH "/lib/sysusers.d";
> > > -+                *ret = "/usr/lib/sysusers.d";
> > > -                 return 0;
> > > -
> > > -         case SD_PATH_SYSCTL:
> > > --                *ret = ROOTPREFIX_NOSLASH "/lib/sysctl.d";
> > > -+                *ret = "/usr/lib/sysctl.d";
> > > -                 return 0;
> > > -
> > > -         case SD_PATH_BINFMT:
> > > --                *ret = ROOTPREFIX_NOSLASH "/lib/binfmt.d";
> > > -+                *ret = "/usr/lib/binfmt.d";
> > > -                 return 0;
> > > -
> > > -         case SD_PATH_MODULES_LOAD:
> > > --                *ret = ROOTPREFIX_NOSLASH "/lib/modules-load.d";
> > > -+                *ret = "/usr/lib/modules-load.d";
> > > -                 return 0;
> > > -
> > > -         case SD_PATH_CATALOG:
> > > ---
> > > -2.39.2
> > > -
> > > diff --git a/meta/recipes-core/systemd/systemd/basic.conf.in b/meta/recipes-core/systemd/systemd/basic.conf.in
> > > deleted file mode 100644
> > > index fac288f7fa..0000000000
> > > --- a/meta/recipes-core/systemd/systemd/basic.conf.in
> > > +++ /dev/null
> > > @@ -1,40 +0,0 @@
> > > -#  This file is part of systemd.
> > > -#
> > > -#  systemd is free software; you can redistribute it and/or modify it
> > > -#  under the terms of the GNU Lesser General Public License as published by
> > > -#  the Free Software Foundation; either version 2.1 of the License, or
> > > -#  (at your option) any later version.
> > > -
> > > -# The superuser
> > > -u root    0     "root" :ROOT_HOME:
> > > -
> > > -# The nobody user/group for NFS file systems
> > > -g {{NOBODY_GROUP_NAME}} 65534       -            -
> > > -u {{NOBODY_USER_NAME }} 65534:65534 "Nobody"     -
> > > -
> > > -# Administrator group: can *see* more than normal users
> > > -g adm     {{ADM_GID    }}     -            -
> > > -
> > > -# Administrator group: can *do* more than normal users
> > > -g wheel   {{WHEEL_GID  }}     -            -
> > > -
> > > -# Access to shared database of users on the system
> > > -g utmp    {{UTMP_GID   }}     -            -
> > > -
> > > -# Physical and virtual hardware access groups
> > > -g audio   {{AUDIO_GID  }}     -            -
> > > -g cdrom   {{CDROM_GID  }}     -            -
> > > -g dialout {{DIALOUT_GID}}     -            -
> > > -g disk    {{DISK_GID   }}     -            -
> > > -g input   {{INPUT_GID  }}     -            -
> > > -g kmem    {{KMEM_GID   }}     -            -
> > > -g kvm     {{KVM_GID    }}     -            -
> > > -g lp      {{LP_GID     }}     -            -
> > > -g render  {{RENDER_GID }}     -            -
> > > -g sgx     {{SGX_GID    }}     -            -
> > > -g tape    {{TAPE_GID   }}     -            -
> > > -g tty     {{TTY_GID    }}     -            -
> > > -g video   {{VIDEO_GID  }}     -            -
> > > -
> > > -# Default group for normal users
> > > -g users   {{USERS_GID  }}     -            -
> > > diff --git a/meta/recipes-core/systemd/systemd_254.4.bb b/meta/recipes-core/systemd/systemd_255.1.bb
> > > similarity index 98%
> > > rename from meta/recipes-core/systemd/systemd_254.4.bb
> > > rename to meta/recipes-core/systemd/systemd_255.1.bb
> > > index 0c12926bef..daa3a01fef 100644
> > > --- a/meta/recipes-core/systemd/systemd_254.4.bb
> > > +++ b/meta/recipes-core/systemd/systemd_255.1.bb
> > > @@ -21,7 +21,6 @@ REQUIRED_DISTRO_FEATURES += "systemd"
> > >   SRC_URI += " \
> > >              file://touchscreen.rules \
> > >              file://00-create-volatile.conf \
> > > -           file://basic.conf.in \
> > >              ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://org.freedesktop.hostname1_no_polkit.conf', '', d)} \
> > >              ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://00-hostnamed-network-user.conf', '', d)} \
> > >              file://init \
> > > @@ -29,7 +28,6 @@ SRC_URI += " \
> > >              file://systemd-pager.sh \
> > >              file://0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
> > >              file://0008-implment-systemd-sysv-install-for-OE.patch \
> > > -           file://0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch \
> > >              "
> > >   # patches needed by musl
> > > @@ -73,6 +71,7 @@ PACKAGECONFIG ??= " \
> > >       ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '', 'link-udev-shared', d)} \
> > >       backlight \
> > >       binfmt \
> > > +    cgroupv2 \
> > >       gshadow \
> > >       hibernate \
> > >       hostnamed \
> > > @@ -266,12 +265,16 @@ EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec \
> > >   # The 60 seconds is watchdog's default vaule.
> > >   WATCHDOG_TIMEOUT ??= "60"
> > > -do_configure:prepend() {
> > > -  sed s@:ROOT_HOME:@${ROOT_HOME}@g ${WORKDIR}/basic.conf.in > ${S}/sysusers.d/basic.conf.in
> > > -}
> > > -
> > >   do_install() {
> > >   	meson_do_install
> > > +	# Change the root user's home directory in /lib/sysusers.d/basic.conf.
> > > +	# This is done merely for backward compatibility with previous systemd recipes.
> > > +	# systemd hardcodes root user's HOME to be "/root". Changing to use other values
> > > +	# may have unexpected runtime behaviors.
> > > +	if [ "${ROOT_HOME}" != "/root" ]; then
> > > +		bbwarn "Using ${ROOT_HOME} as root user's home directory is not fully supported by systemd"
> > > +		sed -i -e 's#/root#${ROOT_HOME}#g' ${D}${exec_prefix}/lib/sysusers.d/basic.conf
> > > +	fi
> > >   	install -d ${D}/${base_sbindir}
> > >   	if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then
> > >   		# Provided by a separate recipe
> > > @@ -754,6 +757,7 @@ FILES:udev += "${base_sbindir}/udevd \
> > >                  ${rootlibexecdir}/udev/rules.d/60-persistent-alsa.rules \
> > >                  ${rootlibexecdir}/udev/rules.d/60-persistent-input.rules \
> > >                  ${rootlibexecdir}/udev/rules.d/60-persistent-storage.rules \
> > > +               ${rootlibexecdir}/udev/rules.d/60-persistent-storage-mtd.rules \
> > >                  ${rootlibexecdir}/udev/rules.d/60-persistent-storage-tape.rules \
> > >                  ${rootlibexecdir}/udev/rules.d/60-persistent-v4l.rules \
> > >                  ${rootlibexecdir}/udev/rules.d/60-sensor.rules \
> > > 
> > > 
> > > 
> > 
> 
> > 
> > -=-=-=-=-=-=-=-=-=-=-=-
> > Links: You receive all messages sent to this group.
> > View/Reply Online (#194007): https://lists.openembedded.org/g/openembedded-core/message/194007
> > Mute This Topic: https://lists.openembedded.org/mt/103380516/3617179
> > Group Owner: openembedded-core+owner@lists.openembedded.org
> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> > -=-=-=-=-=-=-=-=-=-=-=-
> > 
> 
> 
> -- 
> Alexandre Belloni, co-owner and COO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
ChenQi Jan. 22, 2024, 4:38 a.m. UTC | #16
On 1/20/24 02:14, Alexandre Belloni wrote:
> On 19/01/2024 19:13:25+0100, Alexandre Belloni wrote:
>> On 19/01/2024 11:09:20+0800, Chen Qi via lists.openembedded.org wrote:
>>> What's the status of this patch series?
>>> Is there any issue or concern that I missed?
>> I'm glad you asked, I got this today:
>>
>> https://autobuilder.yoctoproject.org/typhoon/#/builders/72/builds/8466/steps/26/logs/warnings
> and I know you sent a patch for this but it didn't make it yet.

I just double checked with the following settings from the "Sysvinit 
with systemd" entry in config.json, there's no warning.

DISTRO_FEATURES:append = ' systemd usrmerge'
ROOT_HOME = '/root'
VIRTUAL-RUNTIME_init_manager = 'sysvinit'

So I further checked the build's settings. 
https://autobuilder.yoctoproject.org/typhoon/#/builders/72/builds/8466

In the second step, "Fetch yocto-autobuilder-helper", I can see the 
following logs:

HEAD is now at ebb7e65 config.json: Fix syntax errors

So the build is not using the latest repo. The latest commit is:

97bb07f (HEAD -> master, origin/master, origin/HEAD) config.json: set 
ROOT_HOME to /root for sysvinit with systemd

Regards,

Qi


>
>>> Regards,
>>> Qi
>>>
>>> On 12/27/23 12:20, Chen Qi via lists.openembedded.org wrote:
>>>> From: Chen Qi<Qi.Chen@windriver.com>
>>>>
>>>> 1. Patch changes:
>>>>
>>>> 0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
>>>> is removed because it has no real effect now. The /lib is now
>>>> /usr/lib because 'usrmerge' is a required distro feature for systemd.
>>>>
>>>> 0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch is
>>>> refreshed for the new version to avoid patch-fuzz issue.
>>>>
>>>> 2. root user's home directory now defaults to "/root":
>>>>
>>>> The sysuers.d/basic.conf is still modified to respect the ROOT_HOME
>>>> value, so if users set ROOT_HOME to "/home/root", the behavior is the
>>>> same as before. However, this is only for backward compatibility. With
>>>> this patch, The ROOT_HOME value is set to "/root" in init-manager-systemd.inc.
>>>> This is because systemd's source codes are hardcoding "/root", and other
>>>> values are not officially supported. See the list below.
>>>> $ grep -rl '"/root"' src/ | grep -v 'src/test'
>>>> src/core/namespace.c
>>>> src/basic/user-util.c
>>>> src/nss-systemd/nss-systemd.c
>>>> src/nspawn/nspawn.c
>>>> src/firstboot/firstboot.c
>>>> src/shared/userdb.c
>>>> src/shared/user-record.c
>>>> $ grep -rl /root network/ factory/ sysctl.d/ sysusers.d/ rules.d/ tmpfiles.d/ units/ xorg/ tools/
>>>> sysusers.d/basic.conf.in
>>>> tmpfiles.d/provision.conf
>>>> units/emergency.service.in
>>>> units/rescue.service.in
>>>> tools/list-discoverable-partitions.py
>>>> Previously, the recipe was just substituting sysusers.d/basic.conf.in,
>>>> which is not enough to be treated as 'fully support'. I deliberately put
>>>> a warning message in do_install to warn users about non "/root" ROOT_HOME
>>>> value. Don't remove it until all above places are handled.
>>>>
>>>> 3. cgroupv2 is now the default.
>>>> cgroupv2 is the default for systemd for many years and it's the default
>>>> for distros such as ubuntu and fedora. Let's also use it as the default.
>>>>
>>>> Signed-off-by: Chen Qi<Qi.Chen@windriver.com>
>>>> ---
>>>>    .../distro/include/init-manager-systemd.inc   |  2 +
>>>>    meta/recipes-core/systemd/systemd.inc         |  4 +-
>>>>    ...tall-dependency-links-at-install-tim.patch | 22 +++---
>>>>    ...sysctl.d-binfmt.d-modules-load.d-to-.patch | 73 -------------------
>>>>    .../systemd/systemd/basic.conf.in             | 40 ----------
>>>>    .../{systemd_254.4.bb => systemd_255.1.bb}    | 16 ++--
>>>>    6 files changed, 25 insertions(+), 132 deletions(-)
>>>>    delete mode 100644 meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
>>>>    delete mode 100644 meta/recipes-core/systemd/systemd/basic.conf.in
>>>>    rename meta/recipes-core/systemd/{systemd_254.4.bb => systemd_255.1.bb} (98%)
>>>>
>>>> diff --git a/meta/conf/distro/include/init-manager-systemd.inc b/meta/conf/distro/include/init-manager-systemd.inc
>>>> index 595d1f2644..0a76647459 100644
>>>> --- a/meta/conf/distro/include/init-manager-systemd.inc
>>>> +++ b/meta/conf/distro/include/init-manager-systemd.inc
>>>> @@ -5,3 +5,5 @@ VIRTUAL-RUNTIME_init_manager ??= "systemd"
>>>>    VIRTUAL-RUNTIME_initscripts ??= "systemd-compat-units"
>>>>    VIRTUAL-RUNTIME_login_manager ??= "shadow-base"
>>>>    VIRTUAL-RUNTIME_dev_manager ??= "systemd"
>>>> +# systemd hardcodes /root in its source codes, other values are not offically supported
>>>> +ROOT_HOME ?= "/root"
>>>> diff --git a/meta/recipes-core/systemd/systemd.inc b/meta/recipes-core/systemd/systemd.inc
>>>> index ccc3236457..1417e0150f 100644
>>>> --- a/meta/recipes-core/systemd/systemd.inc
>>>> +++ b/meta/recipes-core/systemd/systemd.inc
>>>> @@ -15,8 +15,8 @@ LICENSE:libsystemd = "LGPL-2.1-or-later"
>>>>    LIC_FILES_CHKSUM ="file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \ 
>>>> file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
>>>> -SRCREV = "2e7504449a51fb38db9cd2da391c6434f82def51"
>>>> -SRCBRANCH = "v254-stable"
>>>> +SRCREV = "2018ccef6645ce00c784369a22dc4e98f6d7061d"
>>>> +SRCBRANCH = "v255-stable"
>>>>    SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=https;branch=${SRCBRANCH}"
>>>>    S = "${WORKDIR}/git"
>>>> diff --git a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
>>>> index 085f1e9052..be231cf6b2 100644
>>>> --- a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
>>>> +++ b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
>>>> @@ -1,8 +1,8 @@
>>>> -From ca7d9a8d9c81702af9c599bb79706f12b1a465cf Mon Sep 17 00:00:00 2001
>>>> +From 29a58009a172e369ad7166e16dab2f4945c6b0d2 Mon Sep 17 00:00:00 2001
>>>>    From: Chen Qi<Qi.Chen@windriver.com>
>>>>    Date: Thu, 21 Feb 2019 16:23:24 +0800
>>>> -Subject: [PATCH] binfmt: Don't install dependency links at install time for
>>>> - the binfmt services
>>>> +Subject: [PATCH 1/2] binfmt: Don't install dependency links at install time
>>>> + for the binfmt services
>>>>    use [Install] blocks so that they get created when the service is enabled
>>>>    like a traditional service.
>>>> @@ -25,10 +25,10 @@ Signed-off-by: Scott Murray<scott.murray@konsulko.com>
>>>>     3 files changed, 7 insertions(+), 2 deletions(-)
>>>>    diff --git a/units/meson.build b/units/meson.build
>>>> -index c7939a10f8..219570ab19 100644
>>>> +index e7bfb7f838..1d5ec4b178 100644
>>>>    --- a/units/meson.build
>>>>    +++ b/units/meson.build
>>>> -@@ -149,7 +149,6 @@ units = [
>>>> +@@ -154,7 +154,6 @@ units = [
>>>>             {
>>>>               'file' : 'proc-sys-fs-binfmt_misc.automount',
>>>>               'conditions' : ['ENABLE_BINFMT'],
>>>> @@ -36,7 +36,7 @@ index c7939a10f8..219570ab19 100644
>>>>             },
>>>>             {
>>>>               'file' : 'proc-sys-fs-binfmt_misc.mount',
>>>> -@@ -246,7 +245,6 @@ units = [
>>>> +@@ -251,7 +250,6 @@ units = [
>>>>             {
>>>>               'file' : 'systemd-binfmt.service.in',
>>>>               'conditions' : ['ENABLE_BINFMT'],
>>>> @@ -45,7 +45,7 @@ index c7939a10f8..219570ab19 100644
>>>>             {
>>>>               'file' : 'systemd-bless-boot.service.in',
>>>>    diff --git a/units/proc-sys-fs-binfmt_misc.automount b/units/proc-sys-fs-binfmt_misc.automount
>>>> -index 6b1bbdc91e..5ec5b8670a 100644
>>>> +index 5d212015a5..6c2900ca77 100644
>>>>    --- a/units/proc-sys-fs-binfmt_misc.automount
>>>>    +++ b/units/proc-sys-fs-binfmt_misc.automount
>>>>    @@ -22,3 +22,6 @@ Before=shutdown.target
>>>> @@ -56,7 +56,7 @@ index 6b1bbdc91e..5ec5b8670a 100644
>>>>    +[Install]
>>>>    +WantedBy=sysinit.target
>>>>    diff --git a/units/systemd-binfmt.service.in b/units/systemd-binfmt.service.in
>>>> -index b04412e037..63f116e4fa 100644
>>>> +index 6861c76674..531e9fbd90 100644
>>>>    --- a/units/systemd-binfmt.service.in
>>>>    +++ b/units/systemd-binfmt.service.in
>>>>    @@ -14,6 +14,7 @@ Documentation=https://docs.kernel.org/admin-guide/binfmt-misc.html
>>>> @@ -68,12 +68,12 @@ index b04412e037..63f116e4fa 100644
>>>>     After=proc-sys-fs-binfmt_misc.mount
>>>>     After=local-fs.target
>>>>    @@ -31,3 +32,6 @@ RemainAfterExit=yes
>>>> - ExecStart={{ROOTLIBEXECDIR}}/systemd-binfmt
>>>> - ExecStop={{ROOTLIBEXECDIR}}/systemd-binfmt --unregister
>>>> + ExecStart={{LIBEXECDIR}}/systemd-binfmt
>>>> + ExecStop={{LIBEXECDIR}}/systemd-binfmt --unregister
>>>>     TimeoutSec=90s
>>>>    +
>>>>    +[Install]
>>>>    +WantedBy=sysinit.target
>>>>    --
>>>> -2.39.2
>>>> +2.34.1
>>>> diff --git a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch b/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
>>>> deleted file mode 100644
>>>> index 98914ae154..0000000000
>>>> --- a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
>>>> +++ /dev/null
>>>> @@ -1,73 +0,0 @@
>>>> -From f75f03ef6bc3554068e456bed227f333d5cb8c34 Mon Sep 17 00:00:00 2001
>>>> -From: Khem Raj<raj.khem@gmail.com>
>>>> -Date: Tue, 29 Sep 2020 18:01:41 -0700
>>>> -Subject: [PATCH] Move sysusers.d/sysctl.d/binfmt.d/modules-load.d to /usr
>>>> -
>>>> -These directories are moved to /lib since systemd v246, commit
>>>> -4a56315a990b ("path: use ROOTPREFIX properly"), but in oe-core/yocto,
>>>> -the old /usr/lib is still being used.
>>>> -
>>>> -Upstream-Status: Inappropriate (OE-specific)
>>>> -Signed-off-by: Khem Raj<raj.khem@gmail.com>
>>>> -Signed-off-by: Jiaqing Zhao<jiaqing.zhao@linux.intel.com>
>>>> ----
>>>> - src/core/systemd.pc.in           | 8 ++++----
>>>> - src/libsystemd/sd-path/sd-path.c | 8 ++++----
>>>> - 2 files changed, 8 insertions(+), 8 deletions(-)
>>>> -
>>>> -diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in
>>>> -index 693433b34b..8368a3ff02 100644
>>>> ---- a/src/core/systemd.pc.in
>>>> -+++ b/src/core/systemd.pc.in
>>>> -@@ -67,16 +67,16 @@ tmpfilesdir=${tmpfiles_dir}
>>>> -
>>>> - user_tmpfiles_dir=${prefix}/share/user-tmpfiles.d
>>>> -
>>>> --sysusers_dir=${rootprefix}/lib/sysusers.d
>>>> -+sysusers_dir=${prefix}/lib/sysusers.d
>>>> - sysusersdir=${sysusers_dir}
>>>> -
>>>> --sysctl_dir=${rootprefix}/lib/sysctl.d
>>>> -+sysctl_dir=${prefix}/lib/sysctl.d
>>>> - sysctldir=${sysctl_dir}
>>>> -
>>>> --binfmt_dir=${rootprefix}/lib/binfmt.d
>>>> -+binfmt_dir=${prefix}/lib/binfmt.d
>>>> - binfmtdir=${binfmt_dir}
>>>> -
>>>> --modules_load_dir=${rootprefix}/lib/modules-load.d
>>>> -+modules_load_dir=${prefix}/lib/modules-load.d
>>>> - modulesloaddir=${modules_load_dir}
>>>> -
>>>> - catalog_dir=${prefix}/lib/systemd/catalog
>>>> -diff --git a/src/libsystemd/sd-path/sd-path.c b/src/libsystemd/sd-path/sd-path.c
>>>> -index 1af3a36d1d..def502b717 100644
>>>> ---- a/src/libsystemd/sd-path/sd-path.c
>>>> -+++ b/src/libsystemd/sd-path/sd-path.c
>>>> -@@ -365,19 +365,19 @@ static int get_path(uint64_t type, char **buffer, const char **ret) {
>>>> -                 return 0;
>>>> -
>>>> -         case SD_PATH_SYSUSERS:
>>>> --                *ret = ROOTPREFIX_NOSLASH "/lib/sysusers.d";
>>>> -+                *ret = "/usr/lib/sysusers.d";
>>>> -                 return 0;
>>>> -
>>>> -         case SD_PATH_SYSCTL:
>>>> --                *ret = ROOTPREFIX_NOSLASH "/lib/sysctl.d";
>>>> -+                *ret = "/usr/lib/sysctl.d";
>>>> -                 return 0;
>>>> -
>>>> -         case SD_PATH_BINFMT:
>>>> --                *ret = ROOTPREFIX_NOSLASH "/lib/binfmt.d";
>>>> -+                *ret = "/usr/lib/binfmt.d";
>>>> -                 return 0;
>>>> -
>>>> -         case SD_PATH_MODULES_LOAD:
>>>> --                *ret = ROOTPREFIX_NOSLASH "/lib/modules-load.d";
>>>> -+                *ret = "/usr/lib/modules-load.d";
>>>> -                 return 0;
>>>> -
>>>> -         case SD_PATH_CATALOG:
>>>> ---
>>>> -2.39.2
>>>> -
>>>> diff --git a/meta/recipes-core/systemd/systemd/basic.conf.in b/meta/recipes-core/systemd/systemd/basic.conf.in
>>>> deleted file mode 100644
>>>> index fac288f7fa..0000000000
>>>> --- a/meta/recipes-core/systemd/systemd/basic.conf.in
>>>> +++ /dev/null
>>>> @@ -1,40 +0,0 @@
>>>> -#  This file is part of systemd.
>>>> -#
>>>> -#  systemd is free software; you can redistribute it and/or modify it
>>>> -#  under the terms of the GNU Lesser General Public License as published by
>>>> -#  the Free Software Foundation; either version 2.1 of the License, or
>>>> -#  (at your option) any later version.
>>>> -
>>>> -# The superuser
>>>> -u root    0     "root" :ROOT_HOME:
>>>> -
>>>> -# The nobody user/group for NFS file systems
>>>> -g {{NOBODY_GROUP_NAME}} 65534       -            -
>>>> -u {{NOBODY_USER_NAME }} 65534:65534 "Nobody"     -
>>>> -
>>>> -# Administrator group: can *see* more than normal users
>>>> -g adm     {{ADM_GID    }}     -            -
>>>> -
>>>> -# Administrator group: can *do* more than normal users
>>>> -g wheel   {{WHEEL_GID  }}     -            -
>>>> -
>>>> -# Access to shared database of users on the system
>>>> -g utmp    {{UTMP_GID   }}     -            -
>>>> -
>>>> -# Physical and virtual hardware access groups
>>>> -g audio   {{AUDIO_GID  }}     -            -
>>>> -g cdrom   {{CDROM_GID  }}     -            -
>>>> -g dialout {{DIALOUT_GID}}     -            -
>>>> -g disk    {{DISK_GID   }}     -            -
>>>> -g input   {{INPUT_GID  }}     -            -
>>>> -g kmem    {{KMEM_GID   }}     -            -
>>>> -g kvm     {{KVM_GID    }}     -            -
>>>> -g lp      {{LP_GID     }}     -            -
>>>> -g render  {{RENDER_GID }}     -            -
>>>> -g sgx     {{SGX_GID    }}     -            -
>>>> -g tape    {{TAPE_GID   }}     -            -
>>>> -g tty     {{TTY_GID    }}     -            -
>>>> -g video   {{VIDEO_GID  }}     -            -
>>>> -
>>>> -# Default group for normal users
>>>> -g users   {{USERS_GID  }}     -            -
>>>> diff --git a/meta/recipes-core/systemd/systemd_254.4.bb b/meta/recipes-core/systemd/systemd_255.1.bb
>>>> similarity index 98%
>>>> rename from meta/recipes-core/systemd/systemd_254.4.bb
>>>> rename to meta/recipes-core/systemd/systemd_255.1.bb
>>>> index 0c12926bef..daa3a01fef 100644
>>>> --- a/meta/recipes-core/systemd/systemd_254.4.bb
>>>> +++ b/meta/recipes-core/systemd/systemd_255.1.bb
>>>> @@ -21,7 +21,6 @@ REQUIRED_DISTRO_FEATURES += "systemd"
>>>>    SRC_URI += " \
>>>>               file://touchscreen.rules  \
>>>>               file://00-create-volatile.conf  \
>>>> -file://basic.conf.in  \
>>>>               ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://org.freedesktop.hostname1_no_polkit.conf', '', d)} \
>>>>               ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://00-hostnamed-network-user.conf', '', d)} \
>>>>               file://init  \
>>>> @@ -29,7 +28,6 @@ SRC_URI += " \
>>>>               file://systemd-pager.sh  \
>>>>               file://0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch  \
>>>>               file://0008-implment-systemd-sysv-install-for-OE.patch  \
>>>> -file://0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch  \
>>>>               "
>>>>    # patches needed by musl
>>>> @@ -73,6 +71,7 @@ PACKAGECONFIG ??= " \
>>>>        ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '', 'link-udev-shared', d)} \
>>>>        backlight \
>>>>        binfmt \
>>>> +    cgroupv2 \
>>>>        gshadow \
>>>>        hibernate \
>>>>        hostnamed \
>>>> @@ -266,12 +265,16 @@ EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec \
>>>>    # The 60 seconds is watchdog's default vaule.
>>>>    WATCHDOG_TIMEOUT ??= "60"
>>>> -do_configure:prepend() {
>>>> -  sed s@:ROOT_HOME:@${ROOT_HOME}@g ${WORKDIR}/basic.conf.in > ${S}/sysusers.d/basic.conf.in
>>>> -}
>>>> -
>>>>    do_install() {
>>>>    	meson_do_install
>>>> +	# Change the root user's home directory in /lib/sysusers.d/basic.conf.
>>>> +	# This is done merely for backward compatibility with previous systemd recipes.
>>>> +	# systemd hardcodes root user's HOME to be "/root". Changing to use other values
>>>> +	# may have unexpected runtime behaviors.
>>>> +	if [ "${ROOT_HOME}" != "/root" ]; then
>>>> +		bbwarn "Using ${ROOT_HOME} as root user's home directory is not fully supported by systemd"
>>>> +		sed -i -e 's#/root#${ROOT_HOME}#g' ${D}${exec_prefix}/lib/sysusers.d/basic.conf
>>>> +	fi
>>>>    	install -d ${D}/${base_sbindir}
>>>>    	if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then
>>>>    		# Provided by a separate recipe
>>>> @@ -754,6 +757,7 @@ FILES:udev += "${base_sbindir}/udevd \
>>>>                   ${rootlibexecdir}/udev/rules.d/60-persistent-alsa.rules \
>>>>                   ${rootlibexecdir}/udev/rules.d/60-persistent-input.rules \
>>>>                   ${rootlibexecdir}/udev/rules.d/60-persistent-storage.rules \
>>>> +               ${rootlibexecdir}/udev/rules.d/60-persistent-storage-mtd.rules \
>>>>                   ${rootlibexecdir}/udev/rules.d/60-persistent-storage-tape.rules \
>>>>                   ${rootlibexecdir}/udev/rules.d/60-persistent-v4l.rules \
>>>>                   ${rootlibexecdir}/udev/rules.d/60-sensor.rules \
>>>>
>>>>
>>>>
>>> -=-=-=-=-=-=-=-=-=-=-=-
>>> Links: You receive all messages sent to this group.
>>> View/Reply Online (#194007):https://lists.openembedded.org/g/openembedded-core/message/194007
>>> Mute This Topic:https://lists.openembedded.org/mt/103380516/3617179
>>> Group Owner:openembedded-core+owner@lists.openembedded.org
>>> Unsubscribe:https://lists.openembedded.org/g/openembedded-core/unsub  [alexandre.belloni@bootlin.com]
>>> -=-=-=-=-=-=-=-=-=-=-=-
>>>
>>
>> -- 
>> Alexandre Belloni, co-owner and COO, Bootlin
>> Embedded Linux and Kernel engineering
>> https://bootlin.com
Alexandre Belloni Jan. 22, 2024, 8:04 a.m. UTC | #17
On 22/01/2024 12:38:15+0800, ChenQi wrote:
> On 1/20/24 02:14, Alexandre Belloni wrote:
> > On 19/01/2024 19:13:25+0100, Alexandre Belloni wrote:
> > > On 19/01/2024 11:09:20+0800, Chen Qi via lists.openembedded.org wrote:
> > > > What's the status of this patch series?
> > > > Is there any issue or concern that I missed?
> > > I'm glad you asked, I got this today:
> > > 
> > > https://autobuilder.yoctoproject.org/typhoon/#/builders/72/builds/8466/steps/26/logs/warnings
> > and I know you sent a patch for this but it didn't make it yet.
> 
> I just double checked with the following settings from the "Sysvinit with
> systemd" entry in config.json, there's no warning.
> 
> DISTRO_FEATURES:append = ' systemd usrmerge'
> ROOT_HOME = '/root'
> VIRTUAL-RUNTIME_init_manager = 'sysvinit'
> 
> So I further checked the build's settings.
> https://autobuilder.yoctoproject.org/typhoon/#/builders/72/builds/8466
> 
> In the second step, "Fetch yocto-autobuilder-helper", I can see the
> following logs:
> 
> HEAD is now at ebb7e65 config.json: Fix syntax errors
> 
> So the build is not using the latest repo. The latest commit is:

This is not correct, it was using the latest commit at the time, the
patch was applied after my email.
ChenQi Jan. 22, 2024, 8:15 a.m. UTC | #18
On 1/22/24 16:04, Alexandre Belloni wrote:
> On 22/01/2024 12:38:15+0800, ChenQi wrote:
>> On 1/20/24 02:14, Alexandre Belloni wrote:
>>> On 19/01/2024 19:13:25+0100, Alexandre Belloni wrote:
>>>> On 19/01/2024 11:09:20+0800, Chen Qi via lists.openembedded.org wrote:
>>>>> What's the status of this patch series?
>>>>> Is there any issue or concern that I missed?
>>>> I'm glad you asked, I got this today:
>>>>
>>>> https://autobuilder.yoctoproject.org/typhoon/#/builders/72/builds/8466/steps/26/logs/warnings
>>> and I know you sent a patch for this but it didn't make it yet.
>> I just double checked with the following settings from the "Sysvinit with
>> systemd" entry in config.json, there's no warning.
>>
>> DISTRO_FEATURES:append = ' systemd usrmerge'
>> ROOT_HOME = '/root'
>> VIRTUAL-RUNTIME_init_manager = 'sysvinit'
>>
>> So I further checked the build's settings.
>> https://autobuilder.yoctoproject.org/typhoon/#/builders/72/builds/8466
>>
>> In the second step, "Fetch yocto-autobuilder-helper", I can see the
>> following logs:
>>
>> HEAD is now at ebb7e65 config.json: Fix syntax errors
>>
>> So the build is not using the latest repo. The latest commit is:
> This is not correct, it was using the latest commit at the time, the
> patch was applied after my email.
>
>
OK... Do you mean that the warning appeared in autobuilder, and then you 
applied the patch to yocto-autobuilder-helper to make the warning 
disappear? I thought you meant that the warning continued to exist even 
with the patch.

To clarify, we can now wait for autobuiler's results and I don't need to 
do anything more, right?

Regards,

Qi
Alexandre Belloni Jan. 22, 2024, 8:18 a.m. UTC | #19
On 22/01/2024 16:15:41+0800, ChenQi wrote:
> On 1/22/24 16:04, Alexandre Belloni wrote:
> > On 22/01/2024 12:38:15+0800, ChenQi wrote:
> > > On 1/20/24 02:14, Alexandre Belloni wrote:
> > > > On 19/01/2024 19:13:25+0100, Alexandre Belloni wrote:
> > > > > On 19/01/2024 11:09:20+0800, Chen Qi via lists.openembedded.org wrote:
> > > > > > What's the status of this patch series?
> > > > > > Is there any issue or concern that I missed?
> > > > > I'm glad you asked, I got this today:
> > > > > 
> > > > > https://autobuilder.yoctoproject.org/typhoon/#/builders/72/builds/8466/steps/26/logs/warnings
> > > > and I know you sent a patch for this but it didn't make it yet.
> > > I just double checked with the following settings from the "Sysvinit with
> > > systemd" entry in config.json, there's no warning.
> > > 
> > > DISTRO_FEATURES:append = ' systemd usrmerge'
> > > ROOT_HOME = '/root'
> > > VIRTUAL-RUNTIME_init_manager = 'sysvinit'
> > > 
> > > So I further checked the build's settings.
> > > https://autobuilder.yoctoproject.org/typhoon/#/builders/72/builds/8466
> > > 
> > > In the second step, "Fetch yocto-autobuilder-helper", I can see the
> > > following logs:
> > > 
> > > HEAD is now at ebb7e65 config.json: Fix syntax errors
> > > 
> > > So the build is not using the latest repo. The latest commit is:
> > This is not correct, it was using the latest commit at the time, the
> > patch was applied after my email.
> > 
> > 
> OK... Do you mean that the warning appeared in autobuilder, and then you
> applied the patch to yocto-autobuilder-helper to make the warning disappear?
> I thought you meant that the warning continued to exist even with the patch.
> 
> To clarify, we can now wait for autobuiler's results and I don't need to do
> anything more, right?

I confirm, no action is needed on your side.
diff mbox series

Patch

diff --git a/meta/conf/distro/include/init-manager-systemd.inc b/meta/conf/distro/include/init-manager-systemd.inc
index 595d1f2644..0a76647459 100644
--- a/meta/conf/distro/include/init-manager-systemd.inc
+++ b/meta/conf/distro/include/init-manager-systemd.inc
@@ -5,3 +5,5 @@  VIRTUAL-RUNTIME_init_manager ??= "systemd"
 VIRTUAL-RUNTIME_initscripts ??= "systemd-compat-units"
 VIRTUAL-RUNTIME_login_manager ??= "shadow-base"
 VIRTUAL-RUNTIME_dev_manager ??= "systemd"
+# systemd hardcodes /root in its source codes, other values are not offically supported
+ROOT_HOME ?= "/root"
diff --git a/meta/recipes-core/systemd/systemd.inc b/meta/recipes-core/systemd/systemd.inc
index ccc3236457..1417e0150f 100644
--- a/meta/recipes-core/systemd/systemd.inc
+++ b/meta/recipes-core/systemd/systemd.inc
@@ -15,8 +15,8 @@  LICENSE:libsystemd = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
                     file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
 
-SRCREV = "2e7504449a51fb38db9cd2da391c6434f82def51"
-SRCBRANCH = "v254-stable"
+SRCREV = "2018ccef6645ce00c784369a22dc4e98f6d7061d"
+SRCBRANCH = "v255-stable"
 SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=https;branch=${SRCBRANCH}"
 
 S = "${WORKDIR}/git"
diff --git a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
index 085f1e9052..be231cf6b2 100644
--- a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
+++ b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
@@ -1,8 +1,8 @@ 
-From ca7d9a8d9c81702af9c599bb79706f12b1a465cf Mon Sep 17 00:00:00 2001
+From 29a58009a172e369ad7166e16dab2f4945c6b0d2 Mon Sep 17 00:00:00 2001
 From: Chen Qi <Qi.Chen@windriver.com>
 Date: Thu, 21 Feb 2019 16:23:24 +0800
-Subject: [PATCH] binfmt: Don't install dependency links at install time for
- the binfmt services
+Subject: [PATCH 1/2] binfmt: Don't install dependency links at install time
+ for the binfmt services
 
 use [Install] blocks so that they get created when the service is enabled
 like a traditional service.
@@ -25,10 +25,10 @@  Signed-off-by: Scott Murray <scott.murray@konsulko.com>
  3 files changed, 7 insertions(+), 2 deletions(-)
 
 diff --git a/units/meson.build b/units/meson.build
-index c7939a10f8..219570ab19 100644
+index e7bfb7f838..1d5ec4b178 100644
 --- a/units/meson.build
 +++ b/units/meson.build
-@@ -149,7 +149,6 @@ units = [
+@@ -154,7 +154,6 @@ units = [
          {
            'file' : 'proc-sys-fs-binfmt_misc.automount',
            'conditions' : ['ENABLE_BINFMT'],
@@ -36,7 +36,7 @@  index c7939a10f8..219570ab19 100644
          },
          {
            'file' : 'proc-sys-fs-binfmt_misc.mount',
-@@ -246,7 +245,6 @@ units = [
+@@ -251,7 +250,6 @@ units = [
          {
            'file' : 'systemd-binfmt.service.in',
            'conditions' : ['ENABLE_BINFMT'],
@@ -45,7 +45,7 @@  index c7939a10f8..219570ab19 100644
          {
            'file' : 'systemd-bless-boot.service.in',
 diff --git a/units/proc-sys-fs-binfmt_misc.automount b/units/proc-sys-fs-binfmt_misc.automount
-index 6b1bbdc91e..5ec5b8670a 100644
+index 5d212015a5..6c2900ca77 100644
 --- a/units/proc-sys-fs-binfmt_misc.automount
 +++ b/units/proc-sys-fs-binfmt_misc.automount
 @@ -22,3 +22,6 @@ Before=shutdown.target
@@ -56,7 +56,7 @@  index 6b1bbdc91e..5ec5b8670a 100644
 +[Install]
 +WantedBy=sysinit.target
 diff --git a/units/systemd-binfmt.service.in b/units/systemd-binfmt.service.in
-index b04412e037..63f116e4fa 100644
+index 6861c76674..531e9fbd90 100644
 --- a/units/systemd-binfmt.service.in
 +++ b/units/systemd-binfmt.service.in
 @@ -14,6 +14,7 @@ Documentation=https://docs.kernel.org/admin-guide/binfmt-misc.html
@@ -68,12 +68,12 @@  index b04412e037..63f116e4fa 100644
  After=proc-sys-fs-binfmt_misc.mount
  After=local-fs.target
 @@ -31,3 +32,6 @@ RemainAfterExit=yes
- ExecStart={{ROOTLIBEXECDIR}}/systemd-binfmt
- ExecStop={{ROOTLIBEXECDIR}}/systemd-binfmt --unregister
+ ExecStart={{LIBEXECDIR}}/systemd-binfmt
+ ExecStop={{LIBEXECDIR}}/systemd-binfmt --unregister
  TimeoutSec=90s
 +
 +[Install]
 +WantedBy=sysinit.target
 -- 
-2.39.2
+2.34.1
 
diff --git a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch b/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
deleted file mode 100644
index 98914ae154..0000000000
--- a/meta/recipes-core/systemd/systemd/0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch
+++ /dev/null
@@ -1,73 +0,0 @@ 
-From f75f03ef6bc3554068e456bed227f333d5cb8c34 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 29 Sep 2020 18:01:41 -0700
-Subject: [PATCH] Move sysusers.d/sysctl.d/binfmt.d/modules-load.d to /usr
-
-These directories are moved to /lib since systemd v246, commit
-4a56315a990b ("path: use ROOTPREFIX properly"), but in oe-core/yocto,
-the old /usr/lib is still being used.
-
-Upstream-Status: Inappropriate (OE-specific)
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
----
- src/core/systemd.pc.in           | 8 ++++----
- src/libsystemd/sd-path/sd-path.c | 8 ++++----
- 2 files changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in
-index 693433b34b..8368a3ff02 100644
---- a/src/core/systemd.pc.in
-+++ b/src/core/systemd.pc.in
-@@ -67,16 +67,16 @@ tmpfilesdir=${tmpfiles_dir}
- 
- user_tmpfiles_dir=${prefix}/share/user-tmpfiles.d
- 
--sysusers_dir=${rootprefix}/lib/sysusers.d
-+sysusers_dir=${prefix}/lib/sysusers.d
- sysusersdir=${sysusers_dir}
- 
--sysctl_dir=${rootprefix}/lib/sysctl.d
-+sysctl_dir=${prefix}/lib/sysctl.d
- sysctldir=${sysctl_dir}
- 
--binfmt_dir=${rootprefix}/lib/binfmt.d
-+binfmt_dir=${prefix}/lib/binfmt.d
- binfmtdir=${binfmt_dir}
- 
--modules_load_dir=${rootprefix}/lib/modules-load.d
-+modules_load_dir=${prefix}/lib/modules-load.d
- modulesloaddir=${modules_load_dir}
- 
- catalog_dir=${prefix}/lib/systemd/catalog
-diff --git a/src/libsystemd/sd-path/sd-path.c b/src/libsystemd/sd-path/sd-path.c
-index 1af3a36d1d..def502b717 100644
---- a/src/libsystemd/sd-path/sd-path.c
-+++ b/src/libsystemd/sd-path/sd-path.c
-@@ -365,19 +365,19 @@ static int get_path(uint64_t type, char **buffer, const char **ret) {
-                 return 0;
- 
-         case SD_PATH_SYSUSERS:
--                *ret = ROOTPREFIX_NOSLASH "/lib/sysusers.d";
-+                *ret = "/usr/lib/sysusers.d";
-                 return 0;
- 
-         case SD_PATH_SYSCTL:
--                *ret = ROOTPREFIX_NOSLASH "/lib/sysctl.d";
-+                *ret = "/usr/lib/sysctl.d";
-                 return 0;
- 
-         case SD_PATH_BINFMT:
--                *ret = ROOTPREFIX_NOSLASH "/lib/binfmt.d";
-+                *ret = "/usr/lib/binfmt.d";
-                 return 0;
- 
-         case SD_PATH_MODULES_LOAD:
--                *ret = ROOTPREFIX_NOSLASH "/lib/modules-load.d";
-+                *ret = "/usr/lib/modules-load.d";
-                 return 0;
- 
-         case SD_PATH_CATALOG:
--- 
-2.39.2
-
diff --git a/meta/recipes-core/systemd/systemd/basic.conf.in b/meta/recipes-core/systemd/systemd/basic.conf.in
deleted file mode 100644
index fac288f7fa..0000000000
--- a/meta/recipes-core/systemd/systemd/basic.conf.in
+++ /dev/null
@@ -1,40 +0,0 @@ 
-#  This file is part of systemd.
-#
-#  systemd is free software; you can redistribute it and/or modify it
-#  under the terms of the GNU Lesser General Public License as published by
-#  the Free Software Foundation; either version 2.1 of the License, or
-#  (at your option) any later version.
-
-# The superuser
-u root    0     "root" :ROOT_HOME:
-
-# The nobody user/group for NFS file systems
-g {{NOBODY_GROUP_NAME}} 65534       -            -
-u {{NOBODY_USER_NAME }} 65534:65534 "Nobody"     -
-
-# Administrator group: can *see* more than normal users
-g adm     {{ADM_GID    }}     -            -
-
-# Administrator group: can *do* more than normal users
-g wheel   {{WHEEL_GID  }}     -            -
-
-# Access to shared database of users on the system
-g utmp    {{UTMP_GID   }}     -            -
-
-# Physical and virtual hardware access groups
-g audio   {{AUDIO_GID  }}     -            -
-g cdrom   {{CDROM_GID  }}     -            -
-g dialout {{DIALOUT_GID}}     -            -
-g disk    {{DISK_GID   }}     -            -
-g input   {{INPUT_GID  }}     -            -
-g kmem    {{KMEM_GID   }}     -            -
-g kvm     {{KVM_GID    }}     -            -
-g lp      {{LP_GID     }}     -            -
-g render  {{RENDER_GID }}     -            -
-g sgx     {{SGX_GID    }}     -            -
-g tape    {{TAPE_GID   }}     -            -
-g tty     {{TTY_GID    }}     -            -
-g video   {{VIDEO_GID  }}     -            -
-
-# Default group for normal users
-g users   {{USERS_GID  }}     -            -
diff --git a/meta/recipes-core/systemd/systemd_254.4.bb b/meta/recipes-core/systemd/systemd_255.1.bb
similarity index 98%
rename from meta/recipes-core/systemd/systemd_254.4.bb
rename to meta/recipes-core/systemd/systemd_255.1.bb
index 0c12926bef..daa3a01fef 100644
--- a/meta/recipes-core/systemd/systemd_254.4.bb
+++ b/meta/recipes-core/systemd/systemd_255.1.bb
@@ -21,7 +21,6 @@  REQUIRED_DISTRO_FEATURES += "systemd"
 SRC_URI += " \
            file://touchscreen.rules \
            file://00-create-volatile.conf \
-           file://basic.conf.in \
            ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://org.freedesktop.hostname1_no_polkit.conf', '', d)} \
            ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://00-hostnamed-network-user.conf', '', d)} \
            file://init \
@@ -29,7 +28,6 @@  SRC_URI += " \
            file://systemd-pager.sh \
            file://0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
            file://0008-implment-systemd-sysv-install-for-OE.patch \
-           file://0004-Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-to-.patch \
            "
 
 # patches needed by musl
@@ -73,6 +71,7 @@  PACKAGECONFIG ??= " \
     ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '', 'link-udev-shared', d)} \
     backlight \
     binfmt \
+    cgroupv2 \
     gshadow \
     hibernate \
     hostnamed \
@@ -266,12 +265,16 @@  EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec \
 # The 60 seconds is watchdog's default vaule.
 WATCHDOG_TIMEOUT ??= "60"
 
-do_configure:prepend() {
-  sed s@:ROOT_HOME:@${ROOT_HOME}@g ${WORKDIR}/basic.conf.in > ${S}/sysusers.d/basic.conf.in
-}
-
 do_install() {
 	meson_do_install
+	# Change the root user's home directory in /lib/sysusers.d/basic.conf.
+	# This is done merely for backward compatibility with previous systemd recipes.
+	# systemd hardcodes root user's HOME to be "/root". Changing to use other values
+	# may have unexpected runtime behaviors.
+	if [ "${ROOT_HOME}" != "/root" ]; then
+		bbwarn "Using ${ROOT_HOME} as root user's home directory is not fully supported by systemd"
+		sed -i -e 's#/root#${ROOT_HOME}#g' ${D}${exec_prefix}/lib/sysusers.d/basic.conf
+	fi
 	install -d ${D}/${base_sbindir}
 	if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then
 		# Provided by a separate recipe
@@ -754,6 +757,7 @@  FILES:udev += "${base_sbindir}/udevd \
                ${rootlibexecdir}/udev/rules.d/60-persistent-alsa.rules \
                ${rootlibexecdir}/udev/rules.d/60-persistent-input.rules \
                ${rootlibexecdir}/udev/rules.d/60-persistent-storage.rules \
+               ${rootlibexecdir}/udev/rules.d/60-persistent-storage-mtd.rules \
                ${rootlibexecdir}/udev/rules.d/60-persistent-storage-tape.rules \
                ${rootlibexecdir}/udev/rules.d/60-persistent-v4l.rules \
                ${rootlibexecdir}/udev/rules.d/60-sensor.rules \