[systemd-devel] conditional start with external condition

Lennart Poettering lennart at poettering.net
Mon Aug 11 06:11:13 PDT 2014


On Mon, 11.08.14 13:41, Markus Weißmann (markus.weissmann at in.tum.de) wrote:

Hi!

> I've got an embedded system which can run in two configurations;
> configuration 1 will run daemon A, B and C
> configuration 2 will run daemon A and D
> The configuration is chosen at boot-time with a hardware switch. The
> position of this switch is accessible with a userland tool (via
> serial interface).

My recommendation would be to define two distinct target units for your
two modes, and then write a small "generator" tool that checks the
switch, and then creates a symlink /etc/systemd/system/default.target
that points to the appropriate target for the mode. 

http://www.freedesktop.org/wiki/Software/systemd/Generators/

Note that this will only work if the serial port is on-board (and not
usb or so) and hence available without restrictions already at the time
the generators run.

> Bonus question: Will the ConditionPathExists be checked only once
> and if so when exactly? And does this interfere with setting
> Restart=always? (will it be re-evaluated if the daemon needs to be
> restarted, only once, ..?)

conditions are checked immediately before we'd normally start the first
service process for each service.

Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list