mirror of
https://github.com/systemd/systemd
synced 2024-09-06 16:56:43 +00:00
![Lennart Poettering](/assets/img/avatar_default.png)
Distributions apparently only compile a subset of TPM2 drivers into the kernel. For those not compiled it but provided as kmod we need a synchronization point: we must wait before the first TPM2 interaction until the driver is available and accessible. This adds a tpm2.target unit as such a synchronization point. It's ordered after /dev/tpmrm0, and is pulled in by a generator whenever we detect that the kernel reported a TPM2 to exist but we have no device for it yet. This should solve the issue, but might create problems: if there are TPM devices supported by firmware that we don't have Linux drivers for we'll hang for a bit. Hence let's add a kernel cmdline switch to disable (or alternatively force) this logic. Fixes: #30164
61 lines
2.7 KiB
XML
61 lines
2.7 KiB
XML
<?xml version="1.0"?>
|
|
<!--*-nxml-*-->
|
|
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
|
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
|
|
<!ENTITY % entities SYSTEM "custom-entities.ent" >
|
|
%entities;
|
|
]>
|
|
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
|
|
<refentry id="systemd-tpm2-generator">
|
|
|
|
<refentryinfo>
|
|
<title>systemd-tpm2-generator</title>
|
|
<productname>systemd</productname>
|
|
</refentryinfo>
|
|
|
|
<refmeta>
|
|
<refentrytitle>systemd-tpm2-generator</refentrytitle>
|
|
<manvolnum>8</manvolnum>
|
|
</refmeta>
|
|
|
|
<refnamediv>
|
|
<refname>systemd-tpm2-generator</refname>
|
|
<refpurpose>Generator for inserting TPM2 synchronization point in the boot process</refpurpose>
|
|
</refnamediv>
|
|
|
|
<refsynopsisdiv>
|
|
<para><filename>/usr/lib/systemd/system-generators/systemd-tpm2-generator</filename></para>
|
|
</refsynopsisdiv>
|
|
|
|
<refsect1>
|
|
<title>Description</title>
|
|
|
|
<para><filename>systemd-tpm2-generator</filename> is a generator that adds a <varname>Wants=</varname>
|
|
dependency from <filename>sysinit.target</filename> to <filename>tpm2.target</filename> when it detects
|
|
that the firmware discovered a TPM2 device but the OS kernel so far did
|
|
not. <filename>tpm2.target</filename> is supposed to act as synchronization point for all services that
|
|
require TPM2 device access. See
|
|
<citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry> for
|
|
details.</para>
|
|
|
|
<para>The <option>systemd.tpm2_wait=</option> kernel command line option may be used to override
|
|
behaviour of the generator. It accepts a boolean value: if true then <filename>tpm2.target</filename>
|
|
will be added as synchronization point even if the firmware has not detected a TPM2 device. If false, the
|
|
target will not be inserted even if firmware reported a device but the OS kernel doesn't expose a device
|
|
for it yet. The latter might be useful in environments where a suitable TPM2 driver for the available
|
|
hardware is not available.</para>
|
|
|
|
<para><filename>systemd-tpm2-generator</filename> implements
|
|
<citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>See Also</title>
|
|
<para><simplelist type="inline">
|
|
<member><citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
|
|
<member><citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry></member>
|
|
<member><citerefentry><refentrytitle>kernel-command-line</refentrytitle><manvolnum>7</manvolnum></citerefentry></member>
|
|
</simplelist></para>
|
|
</refsect1>
|
|
</refentry>
|