Skip to content
New issue

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

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

Already on GitHub? Sign in 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.

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

No branches or pull requests

1 participant