Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Instances of templated service units are currently not supported #100

Open
kalehmann opened this issue Oct 23, 2022 · 0 comments
Open

Instances of templated service units are currently not supported #100

kalehmann opened this issue Oct 23, 2022 · 0 comments

Comments

@kalehmann
Copy link
Contributor

Short description

mkinitcpio-systemd-tool does not support adding template service units (e.g. my-fancy-tool@.service) to the initrd yet.

Steps to reproduce

Let's assume I have a service called my-fancy-tool, that I need to run from the initial ramdisk during early boot. This service is expected to be executed multiple times with different configurations, so I have a template unit at /usr/lib/systemd/system/my-fancy-tool@.service with

...

[Service]
ExecStart=/usr/bin/unlocked-client --config /etc/my-fancy-tool/%i.conf

...

Now I enable my service for a specific config with systemctl enable my-fancy-tool@my-config.service and then try to recreate the initrd.

Expected behavior

Recreating the initrd succeeds and my service is added to the initrd image.

Actual behavior

Recreating the initrd fails with

==> ERROR: can not find service unit: my-fancy-tool@my-config.service

Technical details

In the function add_systemd_unit_X in src/mkinitcpio-install.sh the unit of my service is parsed as my-fancy-tool@my-config.service.
Right after that, the tool tries to locate either /etc/systemd/system/my-fancy-tool@my-config.service or /usr/lib/systemd/system/my-fancy-tool@my-config.service.
However both files do not exist, as my unit is /usr/lib/systemd/system/my-fancy-tool@.service and the tool failes.

Suggested solution

The unit name should be stripped from all arguments. So my-fancy-tool@my-config.service should become my-fancy-tool@.service and initrd-cryptsetup.service should remain initrd-cryptsetup.service.

The name of the symlink should still be stored, as it should still be added to the initrd image with its argument in the name.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant