[OE-core] [PATCH 2/7] systemd-conf: simplify creation of configuration

Randy MacLeod randy.macleod at windriver.com
Tue Jan 1 15:29:58 UTC 2019


On 12/31/18 7:05 AM, Jonas Bonn wrote:
> The configuration files that systemd installs are just skeletons
> detailing the available options and their default values.  The
> recommended means of changing the configuration is to provide snippets
> in configuration directories.  For example, journald.conf settings are
> best set in /usr/lib/journald.conf.d/ and can be overridden by the user
> by providing overriding snippets in /etc/systemd/journald.conf.d/.
> 
> The base configuration files have the lowest priority; they will always
> be overridden by any snippets.  As such, it's probably best to not
> provide them at all.  This also moves us a step closer to an empty /etc
> which is should be a long term goal in order to allow running OE as a
> "stateless system".
> 
> This patch moves the systemd configuration to snippets in
> /usr/lib/*.conf.d.  This simplifies the recipe considerably since it now
> just sets up a couple of text files and doesn't even need access to the
> systemd source anymore.
> ---
>   meta/recipes-core/systemd/systemd-conf.bb | 34 +++++++++--------------
>   1 file changed, 13 insertions(+), 21 deletions(-)
> 
> diff --git a/meta/recipes-core/systemd/systemd-conf.bb b/meta/recipes-core/systemd/systemd-conf.bb
> index 7fe2e1105b..a504afe3e7 100644
> --- a/meta/recipes-core/systemd/systemd-conf.bb
> +++ b/meta/recipes-core/systemd/systemd-conf.bb
> @@ -1,9 +1,8 @@
> -require systemd.inc
> -
>   SUMMARY = "Systemd system configuration"
>   DESCRIPTION = "Systemd may require slightly different configuration for \
>   different machines.  For example, qemu machines require a longer \
>   DefaultTimeoutStartSec setting."
> +LICENSE = "GPLv2"

Systemd claims that these conf files are: LGPLv2.1+ licensed.

https://github.com/systemd/systemd/blob/master/sysusers.d/systemd.conf.m4

https://github.com/systemd/systemd/blob/master/modprobe.d/systemd.conf

>   
>   PACKAGE_ARCH = "${MACHINE_ARCH}"
>   
> @@ -13,36 +12,29 @@ ${sysconfdir}/systemd/logind.conf \
>   ${sysconfdir}/systemd/system.conf \
>   ${sysconfdir}/systemd/user.conf"
>   
> -FILES_${PN} = "${sysconfdir}/systemd"
> -
> -do_configure[noexec] = '1'
> -do_compile[noexec] = '1'
> +FILES_${PN} = "/usr/lib/journald.conf.d/* \
> +/usr/lib/logind.conf.d/* \
> +/usr/lib/system.conf.d/* \
> +"
>   
>   do_install() {
> -	rm -rf ${D}/${sysconfdir}/systemd
> -	install -d ${D}/${sysconfdir}/systemd
> -
> -	install -m 0644 ${S}/src/coredump/coredump.conf ${D}${sysconfdir}/systemd/coredump.conf
> -
> -	install -m 0644 ${S}/src/journal/journald.conf ${D}${sysconfdir}/systemd/journald.conf
> +	install -d ${D}/usr/lib/journald.conf.d

Should the recipe use /usr/lib or is / should there be a
'systemdconfdir' var?

Otherwise, LGTM.
../Randy

>   	# Enable journal to forward message to syslog daemon
> -	sed -i -e 's/.*ForwardToSyslog.*/ForwardToSyslog=yes/' ${D}${sysconfdir}/systemd/journald.conf
> +	echo "ForwardToSyslog=yes" >> ${D}/usr/lib/journald.conf.d/${PN}.conf
>   	# Set the maximium size of runtime journal to 64M as default
> -	sed -i -e 's/.*RuntimeMaxUse.*/RuntimeMaxUse=64M/' ${D}${sysconfdir}/systemd/journald.conf
> +	echo "RuntimeMaxUse=64M" >> ${D}/usr/lib/journald.conf.d/${PN}.conf
>   
> -	install -m 0644 ${S}/src/login/logind.conf.in ${D}${sysconfdir}/systemd/logind.conf
> +	install -d ${D}/usr/lib/logind.conf.d
>   	# Set KILL_USER_PROCESSES to yes
> -	sed -i -e 's/@KILL_USER_PROCESSES@/yes/' ${D}${sysconfdir}/systemd/logind.conf
> +	echo "KillUserProcesses=yes" >> ${D}/usr/lib/logind.conf.d/${PN}.conf
>   
> -	install -m 0644 ${S}/src/core/system.conf.in ${D}${sysconfdir}/systemd/system.conf
> +	install -d ${D}/usr/lib/system.conf.d
>   	# Set MEMORY_ACCOUNTING_DEFAULT to yes
> -	sed -i -e 's/@MEMORY_ACCOUNTING_DEFAULT@/yes/' ${D}${sysconfdir}/systemd/system.conf
> -
> -	install -m 0644 ${S}/src/core/user.conf ${D}${sysconfdir}/systemd/user.conf
> +	echo "DefaultMemoryAccounting=yes" >> ${D}/usr/lib/system.conf.d/${PN}.conf
>   }
>   
>   # Based on change from YP bug 8141, OE commit 5196d7bacaef1076c361adaa2867be31759c1b52
>   do_install_append_qemuall() {
>   	# Change DefaultTimeoutStartSec from 90s to 240s
> -	echo "DefaultTimeoutStartSec = 240s" >> ${D}${sysconfdir}/systemd/system.conf
> +	echo "DefaultTimeoutStartSec = 240s" >> ${D}/usr/lib/system.conf.d/${PN}.conf
>   }
> 


-- 
# Randy MacLeod
# Wind River Linux


More information about the Openembedded-core mailing list