我想为启用了IMA和TPM2.0支持的Raspberry Pi用Yocto构建Linux系统。因此,我想使用IMA / EVM以及TPM Config和Recipes来编译内核。
应该通过meta-secure-core / meta-integrity层启用IMA支持,并为工具添加DISTRO_FEATURE“ ima”以及IMAGE_INSTALL_append“ packagegroup-ima”。应该通过meta-security / meta-tpm层并通过添加MACHINE_FEATURES“ tpm2”并通过IMAGE_INSTALL_append安装“ packagegroup-security-tpm2”来启用TPM2支持。
此外,如果我理解正确,则需要将systemd用作init_manager。
Yocto版本(Thud / 2.6.3)。我尝试了Warrior,但遇到了构建错误。这将创建一个4.14.X Linux内核。
bblayers.conf:
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:
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"
内部版本:
/<working-dir>/build/$ bitbake core-image-minimal
我希望/proc/config.gz中有以下条目
对于TPM:
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:
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上搜索这些设置均未启用。
# 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在引导过程中未启动(错误msg),我显然无法通过SPI访问/ dev / tpm *的TPM。 我做错了什么?我是Yocto和System Building / Linux内核的新手。
如果它与内核版本有关,我尝试为4.19进行构建,但出现构建错误。我也搞砸了jumpnowtek的meta-rpi层,但它没有解决我的问题。还有一个meta-inteo-iot-security / meta-integrity层,但未维护。
答案 0 :(得分:0)
您错过了修改 DTS。
我创建了一个指南和一个 github 项目来在 Raspberry 上插入 TPM。请参阅以下内容:
https://github.com/simonetolotti/meta-raspberrypi-web/tree/tpm