From 6cf0415d8a3553353ec2e8ddbf85d80604a7c5a8 Mon Sep 17 00:00:00 2001 From: Patrick Ohly Date: Fri, 3 Feb 2017 09:46:13 +0100 Subject: swtpm-wrappers: simplify using swtpm-native Native tools exist in recipe specific sysroots and are normally not meant to be called from outside a build. But that's what we need to do when using swtpm-native together with qemu, so these wrappers make that possible by setting up the necessary environment and hiding the internal paths. Invoking swtpm_setup.sh gets some special support: swtpm_setup.sh runs two daemons, tcsd and swtpm, of which tcsd insists on running as root or tss. In practice, running as the normal user is perfectly fine. Instead of patching the upstream source code, the approach take here is to run under pseudo. Usage examples: $ bitbake swtpm-wrappers $ mkdir -p my-machine/myvtpm0 $ tmp-glibc/work/x86_64-linux/swtpm-wrappers/1.0-r0/swtpm_setup_oe.sh --tpm-state my-machine/myvtpm0 Starting vTPM manufacturing as root:root @ Mon 16 Jan 2017 04:09:21 PM CET TPM is listening on TCP port 55675. -rw------- 1 root root 65 Jan 16 16:09 /tmp/tmp.2yJBKTTwRk Ending vTPM manufacturing @ Mon 16 Jan 2017 04:09:21 PM CET The resulting "my-machine/myvtpm0" can then be used with swtpm (this time, it really has to be running as root because it uses CUSE to create /dev/vtpm0, and an absolute path is needed for the tpm state dir) and qemu-tpm (patches not currently in OE-core, have to be applied manually): $ sudo tmp-glibc/work/x86_64-linux/swtpm-wrappers/1.0-r0/swtpm_cuse_oe.sh -n vtpm0 --tpmstate dir=`pwd`/my-machine/myvtpm0 $ sudo chmod a+rw /dev/vtpm0 $ runqemu ... 'qemuparams=-tpmdev cuse-tpm,id=tpm0,path=/dev/vtpm0 -device tpm-tis,tpmdev=tpm0' Signed-off-by: Patrick Ohly Signed-off-by: Armin Kuster --- recipes-tpm/swtpm/swtpm-wrappers.bb | 41 +++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 recipes-tpm/swtpm/swtpm-wrappers.bb diff --git a/recipes-tpm/swtpm/swtpm-wrappers.bb b/recipes-tpm/swtpm/swtpm-wrappers.bb new file mode 100644 index 0000000..676c35e --- /dev/null +++ b/recipes-tpm/swtpm/swtpm-wrappers.bb @@ -0,0 +1,41 @@ +SUMMARY = "SWTPM - OpenEmbedded wrapper scripts for native swtpm tools" +LICENSE = "MIT" +DEPENDS = "swtpm-native tpm-tools-native" + +inherit native + +# The whole point of the recipe is to make files available +# for use after the build is done, so don't clean up... +RM_WORK_EXCLUDE += "${PN}" + +do_create_wrapper () { + cat >${WORKDIR}/swtpm_setup_oe.sh <${WORKDIR}/swtpm_cuse_oe.sh <