[OE-core] State of systemd from an integrator point of view

Burton, Ross ross.burton at intel.com
Mon Feb 18 13:10:27 UTC 2013


Hi Holger,

On 18 February 2013 10:24, Holger Hans Peter Freyther
<holger at moiji-mobile.com> wrote:
> this is my second attempt to use systemd with Poky for our sysmoBTS
> product (mostly to replace some respawn shell scripts and not to use
> the daemontools). I aborted the first trial because of journald and
> now that systemd is being merged into OE-Core I started again and I
> would like to share some of my issues.

Great feedback, thanks Holger.

> * systemd as a watchdog. For our BTS I have a init script for the
> watchdog package and a configuration file in our BSP layer. For systemd
> I want the watchdog functionality provided by systemd itself. So I
> have a system.conf in my BSP layer an this line in my machine config:
>
> MACHINE_ESSENTIAL_EXTRA_RDEPENDS = "\
>         ...
>         ${@['watchdog', ''][d.getVar('DISTRO_FEATURES_INITMAN', True) == 'systemd']} \
>         kernel-module-rtfifo "
>
> IMAGE_FSTYPES ?= "tar.bz2 cpio.gz ubifs ubi jffs2"
>
> MACHINE_EXTRA_RDEPENDS = "\
>         ...
>         ${@['watchdog', ''][d.getVar('DISTRO_FEATURES_INITMAN', True) == 'systemd']} \
>         "
>
> this is obviously not a piece of beauty.. and it would be nicer if
> systemd itself could build a watchdog package or such...

The INITMAN variable is injected into DISTRO_FEATURES, so I do find
the more idiomatic base_contains more readable:

${@base_contains("DISTRO_FEATURES", "systemd", "", "watchdog", d)}

systemd could RPROVIDE="watchdog" but as the means to configure it are
different that might not be ideal, and if you ever switched entirely
to systemd with these conditionals it's obvious where your redundant
dependencies are.

Personally, I'd stick with conditional dependencies.

> * systemd and svsv start scripts. I am using the busybox ifplugd to
> configure the network on plug/un-plug of the cable. My start script ended
> with .sh in the name. systemd recognized the script but failed to start
> it. Renaming it to not end with .sh fixed the issue for me. This is more
> like a systemd bug than OE but I wonder if we could change update-rc.d
> bbclass to check the for the .sh in the start script and then complain
> about it?

Oh, interesting.  Without any thinking I can't think of reasons why
that would fail.    Filed #3900.

> * systemd's journald is not suitable for small devices. I think the default
> should be to disable the journald and do not disable the busybox log
> application in the systemd-compat units package. journald is dominated by
> memory allocations and reading procfs over and over again.

Agreed, although it would be good if the journal could be tuned.  IMHO
it's technically great, just young.

I wonder if we can split out the bulk of the journal binaries into a
separate package, so by default it's disabled and then installing
systemd-journal would enable it.

Filed #3901.

Cheers,
Ross




More information about the Openembedded-core mailing list