]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
feat(systemd-ask-password): introducing systemd-ask-password module
authorJóhann B. Guðmundsson <johannbg@gmail.com>
Mon, 8 Feb 2021 23:22:00 +0000 (23:22 +0000)
committerHarald Hoyer <harald@hoyer.xyz>
Wed, 10 Feb 2021 14:10:56 +0000 (15:10 +0100)
Introducing systemd-ask-password module which is used to query a
system password or passphrase from the user.

This module can be used standalone ( systemd-ask-password )
( which is without plymouth & wall support )
With plymouth module ( systemd-ask-password + plymouth )
With wall module ( systemd-ask-password + wall ), which is currently
commented out since there is no forceable usecase for it or even exiting
wall module.

This is a standalone systemd module which means it depends on no other module than systemd.

modules.d/01systemd-ask-password/module-setup.sh [new file with mode: 0755]

diff --git a/modules.d/01systemd-ask-password/module-setup.sh b/modules.d/01systemd-ask-password/module-setup.sh
new file mode 100755 (executable)
index 0000000..196822e
--- /dev/null
@@ -0,0 +1,59 @@
+#!/bin/sh
+# This file is part of dracut.
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+# Prerequisite check(s) for module.
+check() {
+
+    # If the binary(s) requirements are not fulfilled the module can't be installed
+    require_binaries systemd-ask-password || return 1
+    require_binaries systemd-tty-ask-password-agent || return 1
+
+    # Return 255 to only include the module, if another module requires it.
+    return 255
+
+}
+
+# Module dependency requirements.
+depends() {
+
+    # This module has external dependency on the systemd module.
+    echo systemd
+    # Return 0 to include the dependent systemd module in the initramfs.
+    return 0
+
+}
+
+# Install the required file(s) for the module in the initramfs.
+install() {
+
+    inst_multiple -o \
+        $systemdsystemunitdir/systemd-ask-password-console.path \
+        $systemdsystemunitdir/systemd-ask-password-console.service \
+        $systemdsystemunitdir/multi-user.target.wants/systemd-ask-password-wall.path \
+        $systemdsystemunitdir/sysinit.target.wants/systemd-ask-password-console.path \
+        systemd-ask-password systemd-tty-ask-password-agent
+
+        # Enable the systemd type service unit for systemd-ask-password.
+        $SYSTEMCTL -q --root "$initdir" enable systemd-ask-password-console.service
+
+        # Install systemd-ask-password plymouth units if plymouth is enabled.
+        if dracut_module_included "plymouth"; then
+            inst_multiple -o \
+                $systemdsystemunitdir/systemd-ask-password-plymouth.path \
+                $systemdsystemunitdir/systemd-ask-password-plymouth.service
+
+            $SYSTEMCTL -q --root "$initdir" enable systemd-ask-password-plymouth.service
+        fi
+
+        # Uncomment this section if the usecase for wall module in the initramfs arises.
+        # Install systemd-ask-password wall units if <wall module> is enabled.
+        #if dracut_module_included "<wall module>"; then
+        #    inst_multiple -o \
+        #        $systemdsystemunitdir/systemd-ask-password-wall.path \
+        #        $systemdsystemunitdir/systemd-ask-password-wall.service \
+        #        $systemdsystemunitdir/multi-user.target.wants/systemd-ask-password-wall.path
+        #
+        #    $SYSTEMCTL -q --root "$initdir" enable systemd-ask-password-wall.service
+        #fi
+}