mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
qemu: Extend qemu_conf with tpm-emulator support
Extend qemu_conf with user and group for running the tpm-emulator and add directories to the configuration for the locations of the log, state, and socket of the tpm-emulator. Also add these new directories to the QEMU Makefile.inc.am and the RPM spec file libvirt.spec.in. Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com> Reviewed-by: John Ferlan <jferlan@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
a21c45c41d
commit
d9c087f57d
@ -1911,6 +1911,8 @@ exit 0
|
|||||||
%{_datadir}/augeas/lenses/libvirtd_qemu.aug
|
%{_datadir}/augeas/lenses/libvirtd_qemu.aug
|
||||||
%{_datadir}/augeas/lenses/tests/test_libvirtd_qemu.aug
|
%{_datadir}/augeas/lenses/tests/test_libvirtd_qemu.aug
|
||||||
%{_libdir}/%{name}/connection-driver/libvirt_driver_qemu.so
|
%{_libdir}/%{name}/connection-driver/libvirt_driver_qemu.so
|
||||||
|
%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/swtpm/
|
||||||
|
%dir %attr(0711, root, root) %{_localstatedir}/log/swtpm/libvirt/qemu/
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%if %{with_lxc}
|
%if %{with_lxc}
|
||||||
|
@ -129,12 +129,18 @@ install-data-qemu:
|
|||||||
$(MKDIR_P) "$(DESTDIR)$(localstatedir)/run/libvirt/qemu"
|
$(MKDIR_P) "$(DESTDIR)$(localstatedir)/run/libvirt/qemu"
|
||||||
$(MKDIR_P) "$(DESTDIR)$(localstatedir)/cache/libvirt/qemu"
|
$(MKDIR_P) "$(DESTDIR)$(localstatedir)/cache/libvirt/qemu"
|
||||||
$(MKDIR_P) "$(DESTDIR)$(localstatedir)/log/libvirt/qemu"
|
$(MKDIR_P) "$(DESTDIR)$(localstatedir)/log/libvirt/qemu"
|
||||||
|
$(MKDIR_P) "$(DESTDIR)$(localstatedir)/lib/libvirt/swtpm"
|
||||||
|
$(MKDIR_P) "$(DESTDIR)$(localstatedir)/run/libvirt/qemu/swtpm"
|
||||||
|
$(MKDIR_P) "$(DESTDIR)$(localstatedir)/log/swtpm/libvirt/qemu"
|
||||||
|
|
||||||
uninstall-data-qemu:
|
uninstall-data-qemu:
|
||||||
rmdir "$(DESTDIR)$(localstatedir)/lib/libvirt/qemu" ||:
|
rmdir "$(DESTDIR)$(localstatedir)/lib/libvirt/qemu" ||:
|
||||||
rmdir "$(DESTDIR)$(localstatedir)/run/libvirt/qemu" ||:
|
rmdir "$(DESTDIR)$(localstatedir)/run/libvirt/qemu" ||:
|
||||||
rmdir "$(DESTDIR)$(localstatedir)/cache/libvirt/qemu" ||:
|
rmdir "$(DESTDIR)$(localstatedir)/cache/libvirt/qemu" ||:
|
||||||
rmdir "$(DESTDIR)$(localstatedir)/log/libvirt/qemu" ||:
|
rmdir "$(DESTDIR)$(localstatedir)/log/libvirt/qemu" ||:
|
||||||
|
rmdir "$(DESTDIR)$(localstatedir)/lib/libvirt/swtpm"
|
||||||
|
rmdir "$(DESTDIR)$(localstatedir)/run/libvirt/qemu/swtpm" ||:
|
||||||
|
rmdir "$(DESTDIR)$(localstatedir)/log/swtpm/libvirt/qemu" ||:
|
||||||
|
|
||||||
endif WITH_QEMU
|
endif WITH_QEMU
|
||||||
|
|
||||||
|
@ -122,6 +122,9 @@ module Libvirtd_qemu =
|
|||||||
let nbd_entry = bool_entry "nbd_tls"
|
let nbd_entry = bool_entry "nbd_tls"
|
||||||
| str_entry "nbd_tls_x509_cert_dir"
|
| str_entry "nbd_tls_x509_cert_dir"
|
||||||
|
|
||||||
|
let swtpm_user_entry = str_entry "swtpm_user"
|
||||||
|
let swtpm_group_entry = str_entry "swtpm_group"
|
||||||
|
|
||||||
(* Each entry in the config is one of the following ... *)
|
(* Each entry in the config is one of the following ... *)
|
||||||
let entry = default_tls_entry
|
let entry = default_tls_entry
|
||||||
| vnc_entry
|
| vnc_entry
|
||||||
@ -142,6 +145,8 @@ module Libvirtd_qemu =
|
|||||||
| memory_entry
|
| memory_entry
|
||||||
| vxhs_entry
|
| vxhs_entry
|
||||||
| nbd_entry
|
| nbd_entry
|
||||||
|
| swtpm_user_entry
|
||||||
|
| swtpm_group_entry
|
||||||
|
|
||||||
let comment = [ label "#comment" . del /#[ \t]*/ "# " . store /([^ \t\n][^\n]*)?/ . del /\n/ "\n" ]
|
let comment = [ label "#comment" . del /#[ \t]*/ "# " . store /([^ \t\n][^\n]*)?/ . del /\n/ "\n" ]
|
||||||
let empty = [ label "#empty" . eol ]
|
let empty = [ label "#empty" . eol ]
|
||||||
|
@ -817,3 +817,11 @@
|
|||||||
# Path to the SCSI persistent reservations helper. This helper is
|
# Path to the SCSI persistent reservations helper. This helper is
|
||||||
# used whenever <reservations/> are enabled for SCSI LUN devices.
|
# used whenever <reservations/> are enabled for SCSI LUN devices.
|
||||||
#pr_helper = "/usr/bin/qemu-pr-helper"
|
#pr_helper = "/usr/bin/qemu-pr-helper"
|
||||||
|
|
||||||
|
# User for the swtpm TPM Emulator
|
||||||
|
#
|
||||||
|
# Default is 'tss'; this is the same user that tcsd (TrouSerS) installs
|
||||||
|
# and uses; alternative is 'root'
|
||||||
|
#
|
||||||
|
#swtpm_user = "tss"
|
||||||
|
#swtpm_group = "tss"
|
||||||
|
@ -159,6 +159,10 @@ virQEMUDriverConfigPtr virQEMUDriverConfigNew(bool privileged)
|
|||||||
"%s/log/libvirt/qemu", LOCALSTATEDIR) < 0)
|
"%s/log/libvirt/qemu", LOCALSTATEDIR) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
if (virAsprintf(&cfg->swtpmLogDir,
|
||||||
|
"%s/log/swtpm/libvirt/qemu", LOCALSTATEDIR) < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
if (VIR_STRDUP(cfg->configBaseDir, SYSCONFDIR "/libvirt") < 0)
|
if (VIR_STRDUP(cfg->configBaseDir, SYSCONFDIR "/libvirt") < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
@ -166,6 +170,10 @@ virQEMUDriverConfigPtr virQEMUDriverConfigNew(bool privileged)
|
|||||||
"%s/run/libvirt/qemu", LOCALSTATEDIR) < 0)
|
"%s/run/libvirt/qemu", LOCALSTATEDIR) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
if (virAsprintf(&cfg->swtpmStateDir,
|
||||||
|
"%s/run/libvirt/qemu/swtpm", LOCALSTATEDIR) < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
if (virAsprintf(&cfg->cacheDir,
|
if (virAsprintf(&cfg->cacheDir,
|
||||||
"%s/cache/libvirt/qemu", LOCALSTATEDIR) < 0)
|
"%s/cache/libvirt/qemu", LOCALSTATEDIR) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
@ -186,6 +194,13 @@ virQEMUDriverConfigPtr virQEMUDriverConfigNew(bool privileged)
|
|||||||
goto error;
|
goto error;
|
||||||
if (virAsprintf(&cfg->memoryBackingDir, "%s/ram", cfg->libDir) < 0)
|
if (virAsprintf(&cfg->memoryBackingDir, "%s/ram", cfg->libDir) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
if (virAsprintf(&cfg->swtpmStorageDir, "%s/lib/libvirt/swtpm",
|
||||||
|
LOCALSTATEDIR) < 0)
|
||||||
|
goto error;
|
||||||
|
if (virGetUserID("tss", &cfg->swtpm_user) < 0)
|
||||||
|
cfg->swtpm_user = 0; /* fall back to root */
|
||||||
|
if (virGetGroupID("tss", &cfg->swtpm_group) < 0)
|
||||||
|
cfg->swtpm_group = 0; /* fall back to root */
|
||||||
} else {
|
} else {
|
||||||
char *rundir;
|
char *rundir;
|
||||||
char *cachedir;
|
char *cachedir;
|
||||||
@ -199,6 +214,11 @@ virQEMUDriverConfigPtr virQEMUDriverConfigNew(bool privileged)
|
|||||||
VIR_FREE(cachedir);
|
VIR_FREE(cachedir);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
if (virAsprintf(&cfg->swtpmLogDir,
|
||||||
|
"%s/qemu/log", cachedir) < 0) {
|
||||||
|
VIR_FREE(cachedir);
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
if (virAsprintf(&cfg->cacheDir, "%s/qemu/cache", cachedir) < 0) {
|
if (virAsprintf(&cfg->cacheDir, "%s/qemu/cache", cachedir) < 0) {
|
||||||
VIR_FREE(cachedir);
|
VIR_FREE(cachedir);
|
||||||
goto error;
|
goto error;
|
||||||
@ -214,6 +234,9 @@ virQEMUDriverConfigPtr virQEMUDriverConfigNew(bool privileged)
|
|||||||
}
|
}
|
||||||
VIR_FREE(rundir);
|
VIR_FREE(rundir);
|
||||||
|
|
||||||
|
if (virAsprintf(&cfg->swtpmStateDir, "%s/swtpm", cfg->stateDir) < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
if (!(cfg->configBaseDir = virGetUserConfigDirectory()))
|
if (!(cfg->configBaseDir = virGetUserConfigDirectory()))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
@ -233,6 +256,10 @@ virQEMUDriverConfigPtr virQEMUDriverConfigNew(bool privileged)
|
|||||||
goto error;
|
goto error;
|
||||||
if (virAsprintf(&cfg->memoryBackingDir, "%s/qemu/ram", cfg->configBaseDir) < 0)
|
if (virAsprintf(&cfg->memoryBackingDir, "%s/qemu/ram", cfg->configBaseDir) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
if (virAsprintf(&cfg->swtpmStorageDir, "%s/qemu/swtpm", cfg->configBaseDir) < 0)
|
||||||
|
goto error;
|
||||||
|
cfg->swtpm_user = (uid_t)-1;
|
||||||
|
cfg->swtpm_group = (gid_t)-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (virAsprintf(&cfg->configDir, "%s/qemu", cfg->configBaseDir) < 0)
|
if (virAsprintf(&cfg->configDir, "%s/qemu", cfg->configBaseDir) < 0)
|
||||||
@ -352,7 +379,9 @@ static void virQEMUDriverConfigDispose(void *obj)
|
|||||||
VIR_FREE(cfg->configDir);
|
VIR_FREE(cfg->configDir);
|
||||||
VIR_FREE(cfg->autostartDir);
|
VIR_FREE(cfg->autostartDir);
|
||||||
VIR_FREE(cfg->logDir);
|
VIR_FREE(cfg->logDir);
|
||||||
|
VIR_FREE(cfg->swtpmLogDir);
|
||||||
VIR_FREE(cfg->stateDir);
|
VIR_FREE(cfg->stateDir);
|
||||||
|
VIR_FREE(cfg->swtpmStateDir);
|
||||||
|
|
||||||
VIR_FREE(cfg->libDir);
|
VIR_FREE(cfg->libDir);
|
||||||
VIR_FREE(cfg->cacheDir);
|
VIR_FREE(cfg->cacheDir);
|
||||||
@ -403,6 +432,7 @@ static void virQEMUDriverConfigDispose(void *obj)
|
|||||||
virFirmwareFreeList(cfg->firmwares, cfg->nfirmwares);
|
virFirmwareFreeList(cfg->firmwares, cfg->nfirmwares);
|
||||||
|
|
||||||
VIR_FREE(cfg->memoryBackingDir);
|
VIR_FREE(cfg->memoryBackingDir);
|
||||||
|
VIR_FREE(cfg->swtpmStorageDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -475,6 +505,7 @@ int virQEMUDriverConfigLoadFile(virQEMUDriverConfigPtr cfg,
|
|||||||
size_t i, j;
|
size_t i, j;
|
||||||
char *stdioHandler = NULL;
|
char *stdioHandler = NULL;
|
||||||
char *user = NULL, *group = NULL;
|
char *user = NULL, *group = NULL;
|
||||||
|
char *swtpm_user = NULL, *swtpm_group = NULL;
|
||||||
char **controllers = NULL;
|
char **controllers = NULL;
|
||||||
char **hugetlbfs = NULL;
|
char **hugetlbfs = NULL;
|
||||||
char **nvram = NULL;
|
char **nvram = NULL;
|
||||||
@ -918,6 +949,16 @@ int virQEMUDriverConfigLoadFile(virQEMUDriverConfigPtr cfg,
|
|||||||
if (virConfGetValueString(conf, "memory_backing_dir", &cfg->memoryBackingDir) < 0)
|
if (virConfGetValueString(conf, "memory_backing_dir", &cfg->memoryBackingDir) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
|
if (virConfGetValueString(conf, "swtpm_user", &swtpm_user) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
if (swtpm_user && virGetUserID(swtpm_user, &cfg->swtpm_user) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (virConfGetValueString(conf, "swtpm_group", &swtpm_group) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
if (swtpm_group && virGetGroupID(swtpm_group, &cfg->swtpm_group) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
@ -928,6 +969,8 @@ int virQEMUDriverConfigLoadFile(virQEMUDriverConfigPtr cfg,
|
|||||||
VIR_FREE(corestr);
|
VIR_FREE(corestr);
|
||||||
VIR_FREE(user);
|
VIR_FREE(user);
|
||||||
VIR_FREE(group);
|
VIR_FREE(group);
|
||||||
|
VIR_FREE(swtpm_user);
|
||||||
|
VIR_FREE(swtpm_group);
|
||||||
virConfFree(conf);
|
virConfFree(conf);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -102,7 +102,9 @@ struct _virQEMUDriverConfig {
|
|||||||
char *configDir;
|
char *configDir;
|
||||||
char *autostartDir;
|
char *autostartDir;
|
||||||
char *logDir;
|
char *logDir;
|
||||||
|
char *swtpmLogDir;
|
||||||
char *stateDir;
|
char *stateDir;
|
||||||
|
char *swtpmStateDir;
|
||||||
/* These two directories are ones QEMU processes use (so must match
|
/* These two directories are ones QEMU processes use (so must match
|
||||||
* the QEMU user/group */
|
* the QEMU user/group */
|
||||||
char *libDir;
|
char *libDir;
|
||||||
@ -111,6 +113,7 @@ struct _virQEMUDriverConfig {
|
|||||||
char *snapshotDir;
|
char *snapshotDir;
|
||||||
char *channelTargetDir;
|
char *channelTargetDir;
|
||||||
char *nvramDir;
|
char *nvramDir;
|
||||||
|
char *swtpmStorageDir;
|
||||||
|
|
||||||
char *defaultTLSx509certdir;
|
char *defaultTLSx509certdir;
|
||||||
bool checkdefaultTLSx509certdir;
|
bool checkdefaultTLSx509certdir;
|
||||||
@ -210,6 +213,9 @@ struct _virQEMUDriverConfig {
|
|||||||
|
|
||||||
bool nbdTLS;
|
bool nbdTLS;
|
||||||
char *nbdTLSx509certdir;
|
char *nbdTLSx509certdir;
|
||||||
|
|
||||||
|
uid_t swtpm_user;
|
||||||
|
gid_t swtpm_group;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Main driver state */
|
/* Main driver state */
|
||||||
|
@ -103,3 +103,5 @@ module Test_libvirtd_qemu =
|
|||||||
}
|
}
|
||||||
{ "memory_backing_dir" = "/var/lib/libvirt/qemu/ram" }
|
{ "memory_backing_dir" = "/var/lib/libvirt/qemu/ram" }
|
||||||
{ "pr_helper" = "/usr/bin/qemu-pr-helper" }
|
{ "pr_helper" = "/usr/bin/qemu-pr-helper" }
|
||||||
|
{ "swtpm_user" = "tss" }
|
||||||
|
{ "swtpm_group" = "tss" }
|
||||||
|
Loading…
Reference in New Issue
Block a user