Plugin: systemd-pcrlock
Introduction
This plugin integrates with systemd-pcrlock so that firmware and SecureBoot updates can be deployed without the user having to type the volume recovery key on the next boot.
systemd-pcrlock predicts and reseals a TPM2 policy that protects secrets (such
as the disk encryption key) against the measurements recorded in the TPM PCRs. A
firmware update changes the firmware code and configuration measurements (PCRs
0, 2, 4 and 1, 3, 5), and a SecureBoot key database update changes the
SecureBoot measurements (PCR 7), which would otherwise invalidate the sealed
policy and require the recovery key after the update has been applied.
Before an update that affects the measured boot state is applied, this plugin asks systemd-pcrlock to remove the .pcrlock files that pin the relevant
current measurements and to regenerate the policy. If this fails the update is
aborted, so that the firmware is never changed while the sealed policy still
requires the old measurements, which would otherwise leave the disk impossible
to unlock unattended. Once the machine has rebooted and applied the update, the
systemd-pcrlock-*.service units re-lock the policy against the new
measurements automatically.
The plugin is only active when systemd-pcrlock is being used to protect the
system, which is detected by the presence of a generated policy in
/var/lib/systemd/pcrlock.json.
GUID Generation
This plugin does not create any devices and so does not generate any GUIDs.
Vendor ID Security
This protocol does not create a device and thus requires no vendor ID set.
External Interface Access
This plugin requires access to the systemd-pcrlock Varlink service at
/run/systemd/io.systemd.PCRLock, providing the io.systemd.PCRLock.Lock
method (added in systemd v262).
Version Considerations
This plugin has been available since fwupd version 2.1.7.