]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
feat(tpm2-tss): introducing the tpm2-tss module
authorJóhann B. Guðmundsson <johannbg@gmail.com>
Thu, 29 Apr 2021 12:07:59 +0000 (12:07 +0000)
committerHarald Hoyer <harald@hoyer.xyz>
Mon, 3 May 2021 08:08:51 +0000 (10:08 +0200)
Introducing the tpm2-tss module

dracut.spec
modules.d/91tpm2-tss/module-setup.sh [new file with mode: 0755]

index 028f59b1cc306b0c0b94b02028d9d8695babd286..f384a3a6ac36b5b9ad1b01cf86f5be68fe3b5966 100644 (file)
@@ -367,6 +367,7 @@ echo 'dracut_rescue_image="yes"' > $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/
 %{dracutlibdir}/modules.d/90qemu
 %{dracutlibdir}/modules.d/91crypt-gpg
 %{dracutlibdir}/modules.d/91crypt-loop
+%{dracutlibdir}/modules.d/91tpm2-tss
 %{dracutlibdir}/modules.d/95debug
 %{dracutlibdir}/modules.d/95fstab-sys
 %{dracutlibdir}/modules.d/95lunmask
diff --git a/modules.d/91tpm2-tss/module-setup.sh b/modules.d/91tpm2-tss/module-setup.sh
new file mode 100755 (executable)
index 0000000..e179383
--- /dev/null
@@ -0,0 +1,63 @@
+#!/bin/bash
+# This file is part of dracut.
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+# Prerequisite check(s) for module.
+check() {
+
+    # Return 255 to only include the module, if another module requires it.
+    return 255
+
+}
+
+# Module dependency requirements.
+depends() {
+
+    # This module has external dependency on other module(s).
+    echo systemd-sysusers systemd-udev
+    # Return 0 to include the dependent module(s) in the initramfs.
+    return 0
+
+}
+
+# Install kernel module(s).
+installkernel() {
+    instmods '=drivers/char/tpm'
+}
+
+# Install the required file(s) and directories for the module in the initramfs.
+install() {
+
+    inst_multiple -o \
+        "$sysusers"/tpm2-tss.conf \
+        "$tmpfilesdir"/tpm2-tss-fapi.conf \
+        "$udevrulesdir"/60-tpm-udev.rules \
+        tpm2_pcrread tpm2_pcrextend tpm2_createprimary tpm2_createpolicy \
+        tpm2_create tpm2_load tpm2_unseal tpm2
+
+    # Install library file(s)
+    _arch=${DRACUT_ARCH:-$(uname -m)}
+    inst_libdir_file \
+        {"tls/$_arch/",tls/,"$_arch/",}"libtss2-esys.so.*" \
+        {"tls/$_arch/",tls/,"$_arch/",}"libtss2-fapi.so.*" \
+        {"tls/$_arch/",tls/,"$_arch/",}"libtss2-mu.so.*" \
+        {"tls/$_arch/",tls/,"$_arch/",}"libtss2-rc.so.*" \
+        {"tls/$_arch/",tls/,"$_arch/",}"libtss2-sys.so.*" \
+        {"tls/$_arch/",tls/,"$_arch/",}"libtss2-tcti-cmd.so.*" \
+        {"tls/$_arch/",tls/,"$_arch/",}"libtss2-tcti-device.so.*" \
+        {"tls/$_arch/",tls/,"$_arch/",}"libtss2-tcti-mssim.so.*" \
+        {"tls/$_arch/",tls/,"$_arch/",}"libtss2-tcti-swtpm.so.*" \
+        {"tls/$_arch/",tls/,"$_arch/",}"libtss2-tctildr.so.*" \
+        {"tls/$_arch/",tls/,"$_arch/",}"libcryptsetup.so.*" \
+        {"tls/$_arch/",tls/,"$_arch/",}"libcurl.so.*" \
+        {"tls/$_arch/",tls/,"$_arch/",}"libjson-c.so.*"
+
+    # Install the hosts local user configurations if enabled.
+    if [[ $hostonly ]]; then
+        inst_multiple -H -o \
+            "$udevrulesdir"/60-tpm-udev.rules \
+            /etc/tpm2-tss/fapi-config.json \
+            "/etc/tpm2-tss/fapi-profiles/*.json"
+    fi
+
+}