mirror of
https://github.com/systemd/systemd.git
synced 2025-01-10 05:18:17 +03:00
tpm2-setup: Add --graceful
Currently the associated units fail if full tpm support is not available on the system. Similar to systemd-pcrextend, let's add a --graceful option that exits gracefully if no full TPM support is detected and use it in both units.
This commit is contained in:
parent
c0aeff4b99
commit
966e05af04
@ -18,6 +18,7 @@
|
||||
|
||||
static char *arg_tpm2_device = NULL;
|
||||
static bool arg_early = false;
|
||||
static bool arg_graceful = false;
|
||||
|
||||
STATIC_DESTRUCTOR_REGISTER(arg_tpm2_device, freep);
|
||||
|
||||
@ -43,6 +44,7 @@ static int help(int argc, char *argv[], void *userdata) {
|
||||
" --tpm2-device=PATH\n"
|
||||
" Pick TPM2 device\n"
|
||||
" --early=BOOL Store SRK public key in /run/ rather than /var/lib/\n"
|
||||
" --graceful Exit gracefully if no TPM2 device is found\n"
|
||||
"\nSee the %2$s for details.\n",
|
||||
program_invocation_short_name,
|
||||
link,
|
||||
@ -59,6 +61,7 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
ARG_VERSION = 0x100,
|
||||
ARG_TPM2_DEVICE,
|
||||
ARG_EARLY,
|
||||
ARG_GRACEFUL,
|
||||
};
|
||||
|
||||
static const struct option options[] = {
|
||||
@ -66,6 +69,7 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
{ "version", no_argument, NULL, ARG_VERSION },
|
||||
{ "tpm2-device", required_argument, NULL, ARG_TPM2_DEVICE },
|
||||
{ "early", required_argument, NULL, ARG_EARLY },
|
||||
{ "graceful", no_argument, NULL, ARG_GRACEFUL },
|
||||
{}
|
||||
};
|
||||
|
||||
@ -100,6 +104,10 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
arg_early = r;
|
||||
break;
|
||||
|
||||
case ARG_GRACEFUL:
|
||||
arg_graceful = true;
|
||||
break;
|
||||
|
||||
case '?':
|
||||
return -EINVAL;
|
||||
|
||||
@ -247,6 +255,11 @@ static int run(int argc, char *argv[]) {
|
||||
if (r <= 0)
|
||||
return r;
|
||||
|
||||
if (arg_graceful && tpm2_support() != TPM2_SUPPORT_FULL) {
|
||||
log_notice("No complete TPM2 support detected, exiting gracefully.");
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
umask(0022);
|
||||
|
||||
_cleanup_(public_key_data_done) struct public_key_data runtime_key = {}, persistent_key = {}, tpm2_key = {};
|
||||
|
@ -20,4 +20,4 @@ After=tpm2.target
|
||||
[Service]
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
ExecStart={{LIBEXECDIR}}/systemd-tpm2-setup --early=yes
|
||||
ExecStart={{LIBEXECDIR}}/systemd-tpm2-setup --early=yes --graceful
|
||||
|
@ -22,4 +22,4 @@ After=tpm2.target
|
||||
[Service]
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
ExecStart={{LIBEXECDIR}}/systemd-tpm2-setup
|
||||
ExecStart={{LIBEXECDIR}}/systemd-tpm2-setup --graceful
|
||||
|
Loading…
Reference in New Issue
Block a user