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. [email protected]) 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/[email protected] 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 [email protected] 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: [email protected]

Technical details

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

Suggested solution

The unit name should be stripped from all arguments. So [email protected] should become [email protected] 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