Skip to content

Commit

Permalink
Move dracut directory out of systemd directory
Browse files Browse the repository at this point in the history
  • Loading branch information
gb-123-git authored and sergio-correia committed Jan 11, 2024
1 parent ec16c7a commit 50f7f87
Show file tree
Hide file tree
Showing 16 changed files with 110 additions and 8 deletions.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,5 @@ install() {
}

installkernel() {
hostonly='' instmods =drivers/char/tpm
hostonly='' instmods=drivers/char/tpm

Check warning

Code scanning / shellcheck

hostonly appears unused. Verify use (or export if used externally). Warning

hostonly appears unused. Verify use (or export if used externally).

Check warning

Code scanning / shellcheck

instmods appears unused. Verify use (or export if used externally). Warning

instmods appears unused. Verify use (or export if used externally).
}
23 changes: 23 additions & 0 deletions src/dracut/clevis/clevis-hook.sh.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#!/bin/bash
set -eu
# vim: set ts=8 shiftwidth=4 softtabstop=4 expandtab smarttab colorcolumn=80:
#
# Copyright (c) 2020-2023 Red Hat, Inc.
# Author: Sergio Correia <[email protected]>
# Modifications sponsored by PMGA Tech LLP
#
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
@libexecdir@/clevis-luks-generic-unlocker -l
71 changes: 71 additions & 0 deletions src/dracut/clevis/clevis-luks-generic-unlocker
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#!/bin/bash
set -eu
# vim: set ts=8 shiftwidth=4 softtabstop=4 expandtab smarttab colorcolumn=80:
#
# Copyright (c) 2020-2023 Red Hat, Inc.
# Author: Sergio Correia <[email protected]>
# Modifications sponsored by PMGA Tech LLP
#
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#

. clevis-luks-common-functions

# Make sure to exit cleanly if SIGTERM is received.
trap 'echo "Exiting due to SIGTERM" && exit 0' TERM

loop=
while getopts ":l" o; do
case "${o}" in
l) loop=true;;
*) ;;
esac
done

to_unlock() {
local _devices='' _d _uuid
for _d in $(blkid -t TYPE=crypto_LUKS -o device);
do
if ! bindings="$(clevis luks list -d "${_d}" 2>/dev/null)" \
|| [ -z "${bindings}" ]; then
continue
fi
_uuid="$(cryptsetup luksUUID "${_d}")"
if clevis_is_luks_device_by_uuid_open "${_uuid}"; then
continue
fi
_devices="$(printf '%s\n%s' "${_devices}" "${_d}")"
done
echo "${_devices}" | sed -e 's/^\n$//'
}

while true; do
for d in $(to_unlock); do
uuid="$(cryptsetup luksUUID "${d}")"
if ! clevis luks unlock -d "${d}"; then
echo "Unable to unlock ${d} (UUID=${uuid})" >&2
continue
fi
echo "Unlocked ${d} (UUID=${uuid}) successfully" >&2
done

[ "${loop}" != true ] && break
# Checking for pending devices to be unlocked.
if remaining=$(to_unlock) && [ -z "${remaining}" ]; then
break;
fi

sleep 0.5
done
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ if dracut.found()
install_dir: dracutdir,
configuration: data,
)
install_data('clevis-luks-generic-unlocker', install_dir: libexecdir)
else
warning('Will not install dracut module due to missing dependencies!')
endif
Original file line number Diff line number Diff line change
Expand Up @@ -19,25 +19,33 @@
#

depends() {
echo crypt systemd
local __depends=crypt
if dracut_module_included "systemd"; then
__depends=$(printf '%s systemd' "${__depends}")
fi
echo "${__depends}"
return 255
}

install() {
if dracut_module_included "systemd"; then
inst_multiple \
$systemdsystemunitdir/clevis-luks-askpass.service \
$systemdsystemunitdir/clevis-luks-askpass.path
$systemdsystemunitdir/clevis-luks-askpass.path \
@SYSTEMD_REPLY_PASS@ \
@libexecdir@/clevis-luks-askpass
systemctl -q --root "$initdir" add-wants cryptsetup.target clevis-luks-askpass.path
else
inst_hook initqueue/online 60 "$moddir/clevis-hook.sh"
inst_hook initqueue/settled 60 "$moddir/clevis-hook.sh"
inst_multiple \
@libexecdir@/clevis-luks-generic-unlocker \
clevis-luks-unlock \
blkid
fi

inst_multiple \
/etc/services \
@SYSTEMD_REPLY_PASS@ \
@libexecdir@/clevis-luks-askpass \
clevis-luks-common-functions \
grep sed cut \
clevis-decrypt \
Expand Down
File renamed without changes.
2 changes: 0 additions & 2 deletions src/luks/systemd/dracut/clevis/clevis-hook.sh.in

This file was deleted.

2 changes: 1 addition & 1 deletion src/luks/systemd/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ sd_reply_pass = find_program(

if systemd.found() and sd_reply_pass.found()
data.set('SYSTEMD_REPLY_PASS', sd_reply_pass.path())
subdir('dracut')


unitdir = systemd.get_pkgconfig_variable('systemdsystemunitdir')

Expand Down
1 change: 1 addition & 0 deletions src/meson.build
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
subdir('bash')
subdir('luks')
subdir('pins')
subdir('dracut')
subdir('initramfs-tools')

bins += join_paths(meson.current_source_dir(), 'clevis-decrypt')
Expand Down

0 comments on commit 50f7f87

Please sign in to comment.