首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Yocto为Raspberry Pi构建一个有效的TPM2镜像?

如何使用Yocto为Raspberry Pi构建一个有效的TPM2镜像?
EN

Stack Overflow用户
提问于 2019-08-28 21:04:42
回答 1查看 871关注 0票数 1

我想用Yocto为Raspberry Pi构建一个Linux系统,支持IMA和TPM2.0。因此,我想用IMA/EVM和TPM Configs and Recipes编译内核。

应该通过meta-secure-core/meta-integrity层启用IMA支持,并为工具添加DISTRO_FEATURE "ima“以及IMAGE_INSTALL_append "packagegroup-ima”。应该通过元安全/元tpm层以及添加MACHINE_FEATURES " TPM2“并通过IMAGE_INSTALL_append安装"packagegroup-security-tpm2”来启用包支持。

此外,如果我理解正确的话,我需要systemd作为init_manager。

Yocto版本(Thud/2.6.3)我尝试过Warrior,但遇到了构建错误。这将创建一个4.14.X Linux内核。

bblayers.conf:

代码语言:javascript
复制
BBLAYERS ?= " \
  /<working-dir>/poky/meta \
  /<working-dir>/poky/meta-poky \
  /<working-dir>/poky/meta-yocto-bsp \
  /<working-dir>/meta-openembedded/meta-oe \
  /<working-dir>/meta-openembedded/meta-python \
  /<working-dir>/meta-openembedded/meta-networking \
  /<working-dir>/meta-openembedded/meta-perl \
  /<working-dir>/meta-security \
  /<working-dir>/meta-security/meta-tpm \
  /<working-dir>/meta-secure-core/meta-integrity \
  /<working-dir>/meta-raspberrypi \
  "

local.conf:

代码语言:javascript
复制
MACHINE = "raspberrypi3"
...
DISTRO_FEATURES_append += "systemd ima"
VIRTUAL-RUNTIME_init_manager = "systemd"
MACHINE_FEATURES += "tpm2"
IMAGE_INSTALL_append += "packagegroup-security-tpm2 packagegroup-ima"
ENABLE_SPI_BUS = "1"
RPI_EXTRA_CONFIG = "\n \
dtoverlay=tpm-slb9670 \n"

构建:

代码语言:javascript
复制
/<working-dir>/build/$ bitbake core-image-minimal

我希望/proc/config.gz中有以下条目

对于TPM:

代码语言:javascript
复制
    CONFIG_HW_RANDOM_TPM=y
    CONFIG_TCG_TPM=y
    CONFIG_TCG_TIS_CORE=y
    CONFIG_TCG_TIS=y
    CONFIG_TCG_CRB=y
    CONFIG_SECURITYFS=y

对于IMA:

代码语言:javascript
复制
    CONFIG_IMA=y
    # CONFIG_IMA_KEXEC is not set
    # CONFIG_IMA_LSM_RULES is not set
    CONFIG_IMA_WRITE_POLICY=y
    CONFIG_IMA_READ_POLICY=y
    CONFIG_IMA_MEASURE_PCR_IDX=10
    # CONFIG_IMA_TEMPLATE is not set
    # CONFIG_IMA_NG_TEMPLATE=y is not set
    CONFIG_IMA_SIG_TEMPLATE=y
    CONFIG_IMA_DEFAULT_TEMPLATE="ima-sig"
    # CONFIG_IMA_DEFAULT_HASH_SHA1 is not set
    CONFIG_IMA_DEFAULT_HASH_SHA256=y
    # CONFIG_IMA_DEFAULT_HASH_SHA512 is not set
    # CONFIG_IMA_DEFAULT_HASH_WP512 is not set
    CONFIG_IMA_DEFAULT_HASH="sha256"
    CONFIG_IMA_APPRAISE=y
    CONFIG_IMA_LOAD_X509=y
    CONFIG_IMA_APPRAISE_BOOTPARAM=y
    CONFIG_IMA_TRUSTED_KEYRING=y
    CONFIG_IMA_KEYRINGS_PERMIT_SIGNED_BY_BUILTIN_OR_SECONDARY=y
    CONFIG_IMA_BLACKLIST_KEYRING=y
    CONFIG_IMA_X509_PATH="/etc/keys/x509_ima.der"
    # CONFIG_IMA_APPRAISE_SIGNED_INIT is not set

但是,在Raspberry Pi上构建的Linux上搜索这些设置都没有启用。

代码语言:javascript
复制
# modprobe configs
# cat /proc/config.gz | gunzip > running.conf
# cat running.conf | grep IMA

当我以前为qemu构建时,我没有这些问题,我能够确认我的设置在内核中是启用的。只安装了evmctl之类的工具。

另外,我对Raspi的/boot/config.txt的设置似乎没有效果。事实上,根本没有/boot/config.txt可供我打开。

最终,TPM2 abrmd在启动时没有启动(错误消息),我显然不能通过SPI访问/dev/ TPM *上的tpm。我做错什么了?我是Yocto和系统构建/Linux内核的新手。

如果它与内核版本相关,我试图为4.19构建,但得到了构建错误。我还修改了jumpnowtek的meta-rpi层,但它并没有解决我的问题。还有一个meta-intel-iot-security/meta-integrity层,但没有维护。

EN

回答 1

Stack Overflow用户

发布于 2021-02-12 15:53:27

您错过了修改DTS。

我创建了一个指南和一个github项目来在Raspberry上插入TPM。请参阅以下内容:

https://github.com/simonetolotti/meta-raspberrypi-web/tree/tpm

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57693130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档