summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Bauer2018-08-20 13:59:18 +0200
committerJonathan Bauer2018-08-20 13:59:18 +0200
commit56c4db5cf50a72327d6888fbb0c53caa76ff4ae8 (patch)
tree4641abd4ea4d3c3bb2700c687637d3aedceb7dee
parent[systemd-networkd-ext] fix missing quotes (diff)
downloadsystemd-init-56c4db5cf50a72327d6888fbb0c53caa76ff4ae8.tar.gz
systemd-init-56c4db5cf50a72327d6888fbb0c53caa76ff4ae8.tar.xz
systemd-init-56c4db5cf50a72327d6888fbb0c53caa76ff4ae8.zip
[haveged] introduce new module
for early entropy generation
-rw-r--r--builder/modules.d/haveged/module-setup.sh41
1 files changed, 41 insertions, 0 deletions
diff --git a/builder/modules.d/haveged/module-setup.sh b/builder/modules.d/haveged/module-setup.sh
new file mode 100644
index 00000000..d3183dbe
--- /dev/null
+++ b/builder/modules.d/haveged/module-setup.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+check() {
+ if ! hash haveged 2>/dev/null; then
+ warn "Could not find haveged in $PATH. Check if its installed."
+ return 1
+ fi
+ return 0
+}
+# called by dracut
+install() {
+ # see where haveged is installed
+ local haveged_bin="$(command -v haveged)"
+ if [ -z "$haveged_bin" ]; then
+ warn "Could not find havaged in $PATH. Check if its installed."
+ return 1
+ fi
+ # TODO SysVInit support, if that even a thing anymore :)
+ local haveged_service="$systemdsystemunitdir/haveged.service"
+ if [ ! -f "$haveged_service" ]; then
+ # query systemd directly
+ haveged_service="$(systemctl show -p FragmentPath haveged | cut -c 14-)"
+ if [ -z "$haveged_service" ]; then
+ warn "Could not find haveged service in '$systemdsystemunitdir' or by querying systemd."
+ warn "Check if it is installed properly."
+ return 1
+ fi
+ fi
+ inst_multiple -o \
+ "$haveged_bin" \
+ "$haveged_service"
+
+ # In Ubuntu, the service sources an EnvironmentFile for default options
+ local haveged_env_file="$(grep -oP '^EnvironmentFile=-?\K.*' $haveged_service)"
+ if [ -n "$haveged_env_file" ]; then
+ mkdir -p "$initdir/${haveged_env_file%/*}" 2>/dev/null
+ cp "$haveged_env_file" "$initdir/$haveged_env_file"
+ fi
+ mkdir "$initdir/$systemdsystemunitdir/sysinit.target.wants" 2>/dev/null
+ ln_r "$systemdsystemunitdir/haveged.service" "$systemdsystemunitdir/sysinit.target.wants/haveged.service"
+}