diff --git a/units/meson.build b/units/meson.build index 330dca3086..bd7f5a0724 100644 --- a/units/meson.build +++ b/units/meson.build @@ -532,6 +532,11 @@ units = [ 'conditions' : ['ENABLE_BOOTLOADER', 'HAVE_OPENSSL', 'HAVE_TPM2'], 'symlinks' : ['sysinit.target.wants/'], }, + { + 'file' : 'systemd-pcrphase-factory-reset.service.in', + 'conditions' : ['ENABLE_BOOTLOADER', 'HAVE_OPENSSL', 'HAVE_TPM2'], + 'symlinks' : ['factory-reset.target.wants/'], + }, { 'file' : 'systemd-pcrphase-initrd.service.in', 'conditions' : ['ENABLE_BOOTLOADER', 'HAVE_OPENSSL', 'HAVE_TPM2', 'ENABLE_INITRD'], @@ -542,6 +547,11 @@ units = [ 'conditions' : ['ENABLE_BOOTLOADER', 'HAVE_OPENSSL', 'HAVE_TPM2'], 'symlinks' : ['sysinit.target.wants/'], }, + { + 'file' : 'systemd-pcrphase-storage-target-mode.service.in', + 'conditions' : ['ENABLE_BOOTLOADER', 'HAVE_OPENSSL', 'HAVE_TPM2'], + 'symlinks' : ['storage-target-mode.target.wants/'], + }, { 'file' : 'systemd-pcrphase.service.in', 'conditions' : ['ENABLE_BOOTLOADER', 'HAVE_OPENSSL', 'HAVE_TPM2'], diff --git a/units/systemd-pcrphase-factory-reset.service.in b/units/systemd-pcrphase-factory-reset.service.in new file mode 100644 index 0000000000..6267336b30 --- /dev/null +++ b/units/systemd-pcrphase-factory-reset.service.in @@ -0,0 +1,22 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later +# +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=TPM PCR Barrier (Factory Reset) +Documentation=man:systemd-pcrphase-factory-reset.service(8) +DefaultDependencies=no +Conflicts=shutdown.target +After=tpm2.target +Before=shutdown.target factory-reset.target +ConditionSecurity=measured-uki + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart={{LIBEXECDIR}}/systemd-pcrextend --graceful factory-reset diff --git a/units/systemd-pcrphase-storage-target-mode.service.in b/units/systemd-pcrphase-storage-target-mode.service.in new file mode 100644 index 0000000000..2502ac8902 --- /dev/null +++ b/units/systemd-pcrphase-storage-target-mode.service.in @@ -0,0 +1,24 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later +# +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=TPM PCR Barrier (Storage Target Mode) +Documentation=man:systemd-pcrphase-storage-target-mode.service(8) +DefaultDependencies=no +Conflicts=shutdown.target +After=tpm2.target +Before=shutdown.target +ConditionPathExists=/etc/initrd-release +ConditionSecurity=measured-uki + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart={{LIBEXECDIR}}/systemd-pcrextend --graceful storage-target-mode-start +ExecStop={{LIBEXECDIR}}/systemd-pcrextend --graceful storage-target-mode-stop diff --git a/units/systemd-storagetm.service.in b/units/systemd-storagetm.service.in index 3c26f22e7f..22770bf291 100644 --- a/units/systemd-storagetm.service.in +++ b/units/systemd-storagetm.service.in @@ -13,7 +13,7 @@ Documentation=man:systemd-storagetm.service(8) ConditionVirtualization=!container DefaultDependencies=no Wants=modprobe@nvmet_tcp.service modprobe@thunderbolt_net.service sys-kernel-config.mount -After=modprobe@nvmet_tcp.service modprobe@thunderbolt_net.service sys-kernel-config.mount plymouth-start.service +After=modprobe@nvmet_tcp.service modprobe@thunderbolt_net.service sys-kernel-config.mount plymouth-start.service systemd-pcrphase-storage-target-mode.service Conflicts=shutdown.target Before=shutdown.target FailureAction=reboot