[systemd-devel] Generators, Targets and Stater Units - I am holding it wrong?

Marc Haber mh+systemd-devel at zugschlus.de
Sun Jun 22 20:30:26 UTC 2025


Hi,

the following works, but I doubt that it is a nice way to do it. I have 
a generator that generates a number of service, and I want all of those 
services automatically started at boot. I have:

$ sudo systemctl cat console-log-8.service
[sudo] password for mh on hover:
# /run/systemd/generator/console-log-8.service
# generated by console-log.generator

[Unit]
Description=page tty8
After=console-log.target

[Service]
...

[Install]
WantedBy=console-log.target
$ sudo systemctl cat console-log-9.service
# /run/systemd/generator/console-log-9.service
# generated by console-log.generator

[Unit]
Description=page tty9
After=console-log.target

[Service]
...

[Install]
WantedBy=console-log.target
$ sudo systemctl cat console-log.target
# /run/systemd/generator/console-log.target
# generated by console-log.generator

[Unit]
Description=Pull in all console-log units
After=multi-user.target
Wants=console-log-9-var-log-syslog-syslog.service
Wants=console-log-8-var-log-exim4-mainlog.service

[Install]
WantedBy=multi-user.target
$ sudo systemctl cat console-log-starter.service
# /etc/systemd/system/console-log-starter.service
[Unit]
Description=Start console-log.target at boot
After=multi-user.target

[Service]
Type=oneshot
ExecStart=/bin/systemctl start console-log.target
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

$

The console-log-starter.service is the only persistent thing, all others 
are generated (including the target since the target lists all generated 
services). So I cannot enable them. The console-log-starter.service is 
the first unit that I can actually enable.

When I search on the Internet I read that the generator should generate 
"the Wanted" Symlinks itself, but the docs also say that the generator 
can't write outside its target directories. And I don't have a clue 
which symlinks I am supposed to generate in the generator. And in the 
running system I don't see any symlinks regarding my units other than 
the 
/etc/systemd/system/multi-user.target.wants/console-log-starter.service 
-> /etc/systemd/system/console-log-starter.service one that was 
generated when I enabled the start service.

Am I supposed to
ln -s /etc/systemd/system/console-log-8.service /etc/systemd/system/multi-user.target.wants/console-log-8.service and
ln -s /etc/systemd/system/console-log-9.service /etc/systemd/system/multi-user.target.wants/console-log-9.service?

How am I supposed to do this correctly? Or is my entire approach wrong?

Greetings
Marc


-- 
-----------------------------------------------------------------------------
Marc Haber         | "I don't trust Computers. They | Mailadresse im Header
Leimen, Germany    |  lose things."    Winona Ryder | Fon: *49 6224 1600402
Nordisch by Nature |  How to make an American Quilt | Fax: *49 6224 1600421


More information about the systemd-devel mailing list