Integrating swtpm(as a software TPM) with OpenBMC on Qemu
Stefan Berger
stefanb at linux.ibm.com
Sat May 6 02:11:24 AEST 2023
I enable the following kernel build options for OpenBMC Linux kernel:
CONFIG_TCG_TPM=y
CONFIG_TCG_TIS_CORE=y
CONFIG_TCG_TIS=y
CONFIG_TCG_TIS_I2C=y
With swtpm running in another terminal:
while :; do swtpm socket --tpmstate dir=/tmp/mytpm1 --ctrl type=unixio,path=/tmp/mytpm1/swtpm-sock --tpm2 --log level=20; done
I start qemu built from qemu git master branch tip:
/tmp/qemu-system-arm -machine ast2600-evb -nographic -no-reboot -net nic -net user,hostfwd=:127.0.0.1:5722-:22,hostfwd=:127.0.0.1:5743-:443,hostfwd=udp:127.0.0.1:5723-:623 -drive file=./tmp/deploy/images/evb-ast2600/obmc-phosphor-image-evb-ast2600.static.mtd,format=raw,if=mtd -chardev socket,id=chrtpm,path=/tmp/mytpm1/swtpm-sock -tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis-i2c,tpmdev=tpm0,bus=aspeed.i2c.bus.12,address=0x2e
root at evb-ast2600:~# echo tpm_tis_i2c 0x2e > /sys/bus/i2c/devices/i2c-12/new_device
[ 63.771200] tpm_tis_i2c 12-002e: 2.0 TPM (device-id 0x1, rev-id 1)
[ 63.783927] tpm tpm0: A TPM error (256) occurred attempting the self test
[ 63.784256] tpm tpm0: starting up the TPM manually
[ 63.851474] i2c i2c-12: new_device: Instantiated device tpm_tis_i2c at 0x2e
root at evb-ast2600:~# uname -a
Linux evb-ast2600 6.1.15-580639a-dirty-c56bfb7-00123-gc56bfb70ebfa #1 SMP Thu Apr 6 00:55:09 UTC 2023 armv7l GNU/Linux
root at evb-ast2600:~# grep tpm_tis_i2c /proc/kallsyms
8056318c t tpm_tis_i2c_remove
805631b0 t tpm_tis_i2c_retry_transfer_until_ack
8056323c t tpm_tis_i2c_write_bytes
80563334 t tpm_tis_i2c_verify_crc
805633e0 t tpm_tis_i2c_read_bytes
80563604 t tpm_tis_i2c_probe
80d23964 t tpm_tis_i2c_driver_init
root at evb-ast2600:~# find /sys/class/tpm
/sys/class/tpm
/sys/class/tpm/tpm0
root at evb-ast2600:~# ls -l /dev/tpm*
crw------- 1 root root 10, 224 May 5 16:03 /dev/tpm0
crw------- 1 root root 252, 65536 May 5 16:03 /dev/tpmrm0
root at evb-ast2600:~# find /sys/ | grep pcr
/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus at 1e78a000/1e78a680.i2c-bus/i2c-12/12-002e/tpm/tpm0/pcr-sha1
/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus at 1e78a000/1e78a680.i2c-bus/i2c-12/12-002e/tpm/tpm0/pcr-sha1/17
[... lots more entries also for sha256, sha384, and sha512 ]
It seems to work as expected
On 5/5/23 11:08, Sandeep Kumar wrote:
> TCS Confidential Hi Stefan, Please find below my answers inline. Thanks, Sandeep. -----Original Message----- From: Stefan Berger <stefanb@ linux. ibm. com> Sent: Friday, May 5, 2023 6: 56 PM To: Sandeep Kumar <sandeep. pkumar@ tcs. com>;
> ZjQcmQRYFpfptBannerStart
> This Message Is From an External Sender
> This message came from outside your organization.
> ZjQcmQRYFpfptBannerEnd
>
> TCS Confidential
>
>
> Hi Stefan,
>
> Please find below my answers inline.
>
> Thanks,
>
> Sandeep.
>
> -----Original Message-----
> From: Stefan Berger <stefanb at linux.ibm.com>
> Sent: Friday, May 5, 2023 6:56 PM
> To: Sandeep Kumar <sandeep.pkumar at tcs.com>; Cédric Le Goater <clg at kaod.org>; openbmc at lists.ozlabs.org; Ninad Palsule <ninad at linux.ibm.com>; Joel Stanley <jms at jms.id.au>; Andrew Jeffery <andrew at aj.id.au>
> Subject: Re: Integrating swtpm(as a software TPM) with OpenBMC on Qemu
>
> "External email. Open with Caution"
>
> On 5/5/23 01:40, Sandeep Kumar wrote:
>
> > TCS Confidential
>
> >
>
> > Hi Stefan,
>
> >
>
> > Stefan: Is the kernel configured in the same way? Are you using the same kernel version?
>
> > Ans:
>
> > I am using the Kernel version coming with the latest openBMC without any changes.
>
> > Kernel version used : Linux evb-ast2600 6.1.15-580639a #1 SMP
>
> > Thu Apr 6 00:55:09 UTC 2023 armv71 GNU/Linux
>
> >
>
> > Stefan: What is the output of this? find /sys/class/tpm | grep pcr
>
> > Ams: find: /sys/class/tpm: No such file or directory.
>
> >
>
> > Could you please point to the right version of kernel which has all these changes ?
>
> I am not aware of changes in the Linux kernel for TPM I2C and why it would not work in this kernel version.
>
> Does this show any files?
>
> find /sys | grep pcr
>
> *Sandeep: It doesn't show any files. *
>
> *root at evb-ast2600:~# echo tpm_tis_i2c 0x2e > /sys/bus/i2c/devices/i2c-12/new_device*
>
> *[ 273.273089] i2c i2c-12: new_device: Instantiated device tpm_tis_i2c at 0x2e*
>
> *root at evb-ast2600:~#*
>
> *root at evb-ast2600:~# find /sys | grep pcr*
>
> *root at evb-ast2600:~#*
>
> Do /dev/tpm0 and /dev/tpmrm0 appear after the echo ? What does dmesg show related to tpm (dmesg | grep -i tpm)?
>
> *Sandeep: I don’t see /dev/tpm0 and /dev/tpmrm0 after the echo. Output as below, *
>
> **
>
> *root at evb-ast2600:~# echo tpm_tis_i2c 0x2e > /sys/bus/i2c/devices/i2c-12/new_device*
>
> *[ 273.273089] i2c i2c-12: new_device: Instantiated device tpm_tis_i2c at 0x2e*
>
> *root at evb-ast2600:~#*
>
> *root at evb-ast2600:~# find /sys | grep pcr*
>
> *root at evb-ast2600:~#*
>
> *root at evb-ast2600:~# ls /dev/tpm**
>
> *ls: /dev/tpm*: No such file or directory*
>
> *root at evb-ast2600:~# dmesg | grep -i tpm*
>
> *[ 6.290898] systemd[1]: systemd 253.1^ running in system mode (+PAM -AUDIT -SELINUX -APPARMOR -IMA -SMACK +SECCOMP -GCRYPT -GNUTLS -OPENSSL -ACL +BLKID -CURL -ELFUTILS -FIDO2 -IDN2 -IDN -IPTC -KMOD -LIBCRYPTSETUP +LIBFDISK -PCRE2 -PWQUALITY -P11KIT -QRENCODE -TPM2 -BZIP2 -LZ4 -XZ -ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON -UTMP -SYSVINIT default-hierarchy=unified)*
>
> *[ 273.273089] i2c i2c-12: new_device: Instantiated device tpm_tis_i2c at 0x2e*
>
> *root at evb-ast2600:~#*
>
> Stefan
>
> >
>
> >
>
> > Thanks,
>
> > Sandeep.
>
> >
>
> > -----Original Message-----
>
> > From: Stefan Berger <stefanb at linux.ibm.com <mailto:stefanb at linux.ibm.com>>
>
> > Sent: Thursday, May 4, 2023 7:30 PM
>
> > To: Sandeep Kumar <sandeep.pkumar at tcs.com <mailto:sandeep.pkumar at tcs.com>>; Cédric Le Goater
>
> > <clg at kaod.org <mailto:clg at kaod.org>>; openbmc at lists.ozlabs.org <mailto:openbmc at lists.ozlabs.org>; Ninad Palsule
>
> > <ninad at linux.ibm.com <mailto:ninad at linux.ibm.com>>; Joel Stanley <jms at jms.id.au <mailto:jms at jms.id.au>>; Andrew Jeffery
>
> > <andrew at aj.id.au <mailto:andrew at aj.id.au>>
>
> > Subject: Re: Integrating swtpm(as a software TPM) with OpenBMC on Qemu
>
> >
>
> > "External email. Open with Caution"
>
> >
>
> >
>
> > On 5/4/23 05:12, Sandeep Kumar wrote:
>
> >> TCS Confidential Hi C, I was able to build and run the image(for
>
> >> evb-ast2600) with swtpm. Few issues observed, If I run with the
>
> >> flash. img provided in your github link(https: //github.
>
> >> com/legoater/qemu-aspeed-boot/tree/master/images) everything ZjQcmQRYFpfptBannerStart This Message Is From an External Sender This message came from outside your organization.
>
> >> ZjQcmQRYFpfptBannerEnd
>
> >> TCS Confidential
>
> >>
>
> >> Hi C,
>
> >> I was able to build and run the image(for evb-ast2600) with swtpm.
>
> >> Few issues observed,
>
> >>
>
> >> 1. If I run with the flash.img provided in your github link(_https://github.com/legoater/qemu-aspeed-boot/tree/master/images_ <https://github.com/legoater/qemu-aspeed-boot/tree/master/images <https://github.com/legoater/qemu-aspeed-boot/tree/master/images>>) everything works as expected, i.e I get the below output.
>
> >>
>
> >> *# echo tpm_tis_i2c 0x2e > /sys/bus/i2c/devices/i2c-12/new_device*
>
> >> *[ 182.735902] tpm_tis_i2c 12-002e: 2.0 TPM (device-id 0x1, rev-id
>
> >> 1)* *[ 182.773885] i2c i2c-12: new_device: Instantiated device
>
> >> tpm_tis_i2c at 0x2e*
>
> >> *#*
>
> >> *#*
>
> >> *# cat /sys/class/tpm/tpm0/pcr-sha256/0*
>
> >> *B804724EA13F52A9072BA87FE8FDCC497DFC9DF9AA15B9088694639C431688E0*
>
> >> *#*
>
> >> *#*
>
> >>
>
> >> 2. If I run it with the locally built image, I get this error,
>
> >
>
> > Is the kernel configured in the same way? Are you using the same kernel version?
>
> >>
>
> >> *root at evb-ast2600:~# echo tpm_tis_i2c 0x2e >
>
> >> /sys/bus/i2c/devices/i2c-12/new_device*
>
> >> *[ 174.063597] i2c i2c-12: new_device: Instantiated device
>
> >> tpm_tis_i2c at 0x2e*
>
> >
>
> > What is the output of this?
>
> >
>
> > find /sys/class/tpm | grep pcr
>
> >
>
> > Stefan
>
> >
>
> >> *root at evb-ast2600:~# cat /sys/class/tpm/tpm0/pcr-sha256/0*
>
> >> *cat: can't open '/sys/class/tpm/tpm0/pcr-sha256/0': No such file or
>
> >> directory*
>
> >> *root at evb-ast2600:~#*
>
> >> *root at evb-ast2600:~#*
>
> >> Please do let me know about what has been done to write the values
>
> >> into “*/sys/class/tpm/tpm0/pcr-sha256/0**” . * Thanks, Sandeep.
>
> >> _____________________________________________
>
> >> *From:* Sandeep Kumar
>
> >> *Sent:* Thursday, April 20, 2023 5:45 PM
>
> >> *To:* Cédric Le Goater <clg at kaod.org <mailto:clg at kaod.org>>; openbmc at lists.ozlabs.org <mailto:openbmc at lists.ozlabs.org>;
>
> >> Ninad Palsule <ninad at linux.ibm.com <mailto:ninad at linux.ibm.com>>; Joel Stanley <jms at jms.id.au <mailto:jms at jms.id.au>>;
>
> >> Andrew Jeffery <andrew at aj.id.au <mailto:andrew at aj.id.au>>
>
> >> *Subject:* RE: Integrating swtpm(as a software TPM) with OpenBMC on
>
> >> Qemu Hi C, How to build this image =>
>
> >> *obmc-phosphor-image.rootfs.wic.qcow2* ? In openBmc build directory we don’t get this image built.
>
> >> Also, remaining image formats used while running on qemu are available in the build directory. i.e fitImage-linux.bin, aspeed-bmc-ibm-rainier.dtb and obmc-phosphor-initramfs.rootfs.cpio.xz .
>
> >> Please advise if we have to build openbmc stack in a different way
>
> >> than the standard procedure. We follow the below steps for build, 1. .
>
> >> setup Romulus 2. bitbake obmc-phosphor-image Thanks, Sandeep.
>
> >> -----Original Message-----
>
> >> From: Sandeep Kumar
>
> >> Sent: Wednesday, April 19, 2023 3:00 PM
>
> >> To: Cédric Le Goater <_clg at kaod.org_ <mailto:clg at kaod.org <mailto:_clg at kaod.org_%20%3cmailto:clg at kaod.org>>>;
>
> >> _openbmc at lists.ozlabs.org_ <mailto:_openbmc at lists.ozlabs.org_> <mailto:openbmc at lists.ozlabs.org <mailto:openbmc at lists.ozlabs.org>>; Ninad
>
> >> Palsule <_ninad at linux.ibm.com_ <mailto:ninad at linux.ibm.com <mailto:_ninad at linux.ibm.com_%20%3cmailto:ninad at linux.ibm.com>>>; Joel
>
> >> Stanley <_jms at jms.id.au_ <mailto:jms at jms.id.au <mailto:_jms at jms.id.au_%20%3cmailto:jms at jms.id.au>>>; Andrew Jeffery
>
> >> <_andrew at aj.id.au_ <mailto:andrew at aj.id.au <mailto:_andrew at aj.id.au_%20%3cmailto:andrew at aj.id.au>>>
>
> >> Subject: RE: Integrating swtpm(as a software TPM) with OpenBMC on
>
> >> Qemu Hi C, Got it working. Looks like slirp is no longer supported on
>
> >> ubnutu 18.04. have upgraded to a newer version and is working now.
>
> >> Thanks,
>
> >> Sandeep.
>
> >> -----Original Message-----
>
> >> From: Cédric Le Goater <clg at kaod.org <mailto:clg at kaod.org <mailto:clg at kaod.org%20%3cmailto:clg at kaod.org>>>
>
> >> Sent: Wednesday, April 19, 2023 2:26 PM
>
> >> To: Sandeep Kumar <sandeep.pkumar at tcs.com
>
> >> <mailto:sandeep.pkumar at tcs.com <mailto:sandeep.pkumar at tcs.com>>>; openbmc at lists.ozlabs.org <mailto:openbmc at lists.ozlabs.org>
>
> >> <mailto:openbmc at lists.ozlabs.org <mailto:openbmc at lists.ozlabs.org>>; Ninad Palsule <ninad at linux.ibm.com
>
> >> <mailto:ninad at linux.ibm.com <mailto:ninad at linux.ibm.com>>>; Joel Stanley <jms at jms.id.au
>
> >> <mailto:jms at jms.id.au <mailto:jms at jms.id.au>>>; Andrew Jeffery <andrew at aj.id.au
>
> >> <mailto:andrew at aj.id.au <mailto:andrew at aj.id.au>>>
>
> >> Subject: Re: Integrating swtpm(as a software TPM) with OpenBMC on
>
> >> Qemu "External email. Open with Caution"
>
> >> Hello Sandeep
>
> >> On 4/18/23 09:45, Sandeep Kumar wrote:
>
> >>> TCS Confidential
>
> >>>
>
> >>> Hi C,
>
> >>> Built the qemu from your branch. Few issues, *$ ./qemu-system-arm -m
>
> >>> 256 -M romulus-bmc -nographic -drive
>
> >>> file=./obmc-phosphor-image-romulus.static.mtd,format=raw,if=mtd -net
>
> >>> nic -net
>
> >>> user,hostfwd=:127.0.0.1:2222-:22,hostfwd=:127.0.0.1:4443-:443,hostfw
>
> >>> d
>
> >>> =
>
> >>> tcp:127.0.0.1:8880-:80,hostfwd=tcp:127.0.0.1:2200-:2200,hostfwd=udp:
>
> >>> 1
>
> >>> 2
>
> >>> 7.0.0.1:6623-:623,hostfwd=udp:127.0.0.1:6664-:664,hostname=qemu*
>
> >>> *qemu-system-arm: -net
>
> >>> user,hostfwd=:127.0.0.1:2222-:22,hostfwd=:127.0.0.1:4443-:443,hostfw
>
> >>> d
>
> >>> =
>
> >>> tcp:127.0.0.1:8880-:80,hostfwd=tcp:127.0.0.1:2200-:2200,hostfwd=udp:
>
> >>> 1
>
> >>> 2
>
> >>> 7.0.0.1:6623-:623,hostfwd=udp:127.0.0.1:6664-:664,hostname=qemu:
>
> >>> network backend 'user' is not compiled into this binary* I didn’t
>
> >>> enable the slirp package I guess. So enabled it while running
>
> >>> configure, *$ ../configure --enable-slirp*
>
> >>> *........*
>
> >>> *Run-time dependency slirp found: NO (tried pkgconfig)*
>
> >>> *../meson.build:681:2: ERROR: Dependency "slirp" not found, tried
>
> >>> pkgconfig* *A full log can be found at
>
> >>> /home/tcs/work/sandeep/measured_boot/ibm_qemu/qemu/build/meson-logs/
>
> >>> m
>
> >>> e
>
> >>> son-log.txt*
>
> >>> *NOTICE: You are using Python 3.6 which is EOL. Starting with
>
> >>> v0.62.0, Meson will require Python 3.7 or newer*
>
> >>> *ERROR: meson setup failed*
>
> >>> I have already installed slirp locally, but still getting the above error.
>
> >> Did you install the libslirp-dev or libslirp-devel package ?
>
> >> C.
>
> >>
>
> >> TCS Confidential
>
> >>
>
> >> =====-----=====-----=====
>
> >> Notice: The information contained in this e-mail message and/or
>
> >> attachments to it may contain confidential or privileged information.
>
> >> If you are not the intended recipient, any dissemination, use,
>
> >> review, distribution, printing or copying of the information
>
> >> contained in this e-mail message and/or attachments to it are
>
> >> strictly prohibited. If you have received this communication in
>
> >> error, please notify us by reply e-mail or telephone and immediately
>
> >> and permanently delete the message and any attachments. Thank you
>
> >>
>
> >
>
> > TCS Confidential
>
>
> TCS Confidential
>
More information about the openbmc
mailing list