Skip to content

Commit

Permalink
dracut: fix running with pre-v103 Dracut
Browse files Browse the repository at this point in the history
Dracut v103+ moved SystemD cryptsetup code into a separate module, so
detect it and when found, use it.

Clevis units do not depend on `cryptsetup.target`, so do not install it.
The target `cryptsetup.target` is installed by both
[90systemd-cryptsetup][1] in v103+ and [01systemd-cryptsetup][2] in v105+,
so there is no need to install it by Clevis.

[1]: https://github.com/dracut-ng/dracut-ng/blob/3fce598fb45aa5618cdf885eb48cf327104ffcb8/modules.d/90systemd-cryptsetup/module-setup.sh#L53
[2]: https://github.com/dracut-ng/dracut-ng/blob/a2669c447bd5e0406f55efcc8c9c58be89458b08/modules.d/01systemd-cryptsetup/module-setup.sh#L54

Signed-off-by: Oldřich Jedlička <[email protected]>
  • Loading branch information
oldium committed Dec 3, 2024
1 parent 29d0a4e commit 28e3d66
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions src/luks/dracut/clevis/module-setup.sh.in
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,13 @@
depends() {
local __depends=crypt
if dracut_module_included "systemd"; then
__depends=$(printf '%s systemd-cryptsetup' "${__depends}")
# Dracut v103 introduced a separate systemd-cryptsetup module
systemd_cryptsetup_dir=$(dracut_module_path "systemd-cryptsetup")
if [ -d "$systemd_cryptsetup_dir" ]; then
__depends=$(printf '%s systemd-cryptsetup' "${__depends}")
else
__depends=$(printf '%s systemd' "${__depends}")
fi
fi
echo "${__depends}"
return 255
Expand All @@ -32,7 +38,6 @@ install() {
inst_multiple \
$systemdsystemunitdir/clevis-luks-askpass.service \
$systemdsystemunitdir/clevis-luks-askpass.path \
$systemdsystemunitdir/cryptsetup.target \
@SYSTEMD_REPLY_PASS@ \
@libexecdir@/clevis-luks-askpass

Expand Down

0 comments on commit 28e3d66

Please sign in to comment.