---
title: 搭建步骤
description: "CA应用需要REE侧patch才能实现与TEE侧的TA应用通信，REE侧patch与TEE OS固件包存在版本配套关系，请参考表1。本文以openEuler 20.03 LTS-SP1和最新的TEE OS 1.4.0为例介绍REE侧patch的编译、部署。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/230RC2/confidt/kunpengtrustzone_20_0019.html
sourcePath: /source/zh/kunpengboostkithistory/230RC2/confidt/kunpengtrustzone_20_0019.html
indexId: 751a6ef0c504960a08ca25addbc4edfb0569d712a684bbcc9dd2ffa27f7f479c78
---
# 搭建步骤

CA应用需要REE侧patch才能实现与TEE侧的TA应用通信，REE侧patch与TEE OS固件包存在版本配套关系，请参考表1。本文以openEuler 20.03 LTS-SP1和最新的TEE OS 1.4.0为例介绍REE侧patch的编译、部署。


**表1 TEE OS和REE patch版本配套关系**

| TEE OS hpm固件版本 | itrustee\_tzdriver配套代码tag | itrustee\_client配套代码tag | libboundscheck配套代码分支 |
| --- | --- | --- | --- |
| 1.1.0 <= version < 1.2.0 | v1.0.0 | v1.0.0 | master |
| 1.2.0 | v1.2.0 | v1.2.0 | master |
| 1.3.0 <= version < 1.4.0 | v1.3.0 | v1.3.0 | master |
| 1.4.0 | master | master | master |


#### （可选）安装TrustZone License

如果服务器iBMC中“许可证管理”显示“Kunpeng accelerator SEC Function”已处于开启状态，可跳过本部分操作；否则请参考以下步骤完成TrustZone许可证导入使能“SEC特性”。

请联系华为业务负责人申请TrustZone许可证。获取许可证后，请参考以下步骤完成服务器许可证安装。

1. 登录iBMC，依次选择“iBMC管理->许可证管理”。
2. 单击“安装”，上传申请的TrustZone许可证。
  安装完毕后，iBMC显示“Kunpeng accelerator SEC Function”处于开启状态。


#### 配置BIOS

重启服务器，进入BIOS打开TrustZone特性开关，并配置TEE侧安全内存大小。

1. 重启服务器，进入BIOS。
2. 依次选择“Advanced->TEE Config”。
3. 打开TEE开关，根据需要配置TEE侧安全内存大小。
  安全内存大小选取不合理，可能会导致BIOS启动TEE OS失败，服务器无法使能TrustZone功能。 安全内存大小选取请参考安全内存规格说明章节。

4. 保存BIOS配置，重启服务器，进入REE侧普通系统。


#### 获取iTrustee patch包

1. 获取itrustee_client源码。
  下载地址：https://gitee.com/openeuler/itrustee_client(https://gitee.com/openeuler/itrustee_client)

  代码分支：master

2. 获取itrustee_tzdriver源码。
  下载地址：https://gitee.com/openeuler/itrustee_tzdriver(https://gitee.com/openeuler/itrustee_tzdriver)

  代码分支：master

3. 获取libboundscheck源码。
  下载地址：https://gitee.com/openeuler/libboundscheck(https://gitee.com/openeuler/libboundscheck)

  代码分支：master

4. 将下载、解压缩后libboundscheck源码分别放置在“itrustee_client/”目录和“itrustee_tzdriver/”目录下，并修改文件夹名称为libboundscheck，层级目录如下所示。
5. 安装编译依赖。
  1 yum install openssl-devel zlib-devel

6. 编译itrustee_tzdriver。
```
cd itrustee_tzdriver && make
```


  a. 编译tzdriver.ko内核模块依赖内核头文件，itrustee_tzdriver/Makefile指定了内核头文件路径。
    一般情况下内核头文件位于“/usr/src/kernels/<内核版本>”下，若编译脚本未匹配到正确路径，则需要根据实际情况予以替换。请注意，编译使用的内核头文件版本必须与tzdriver.ko最终运行环境的内核版本保持一致，否则可能会出现因内核版本差异导致tzdriver.ko加载失败的情况。可使用uname -r指令查看当前运行环境的内核版本。

  b. itrustee_tzdriver/Makefile指定了mailbox池大小配置。其中单个mailbox池大小为4MB，如果设定mailbox池总大小为32MB，则修改Makefile中“MAILBOX_POOL_COUNT”宏定义为8。

  c. tzdriver.ko运行依赖安全函数符号，itrustee_tzdriver/Makefile中根据当前内核情况决定tzdriver.ko编译是否自包含安全函数符号。不同的REE OS，tzdriver编译过程可能会有差异。
    编译完成后，会生成tzdriver.ko内核模块。

7. 编译itrustee_client。
  1 cd itrustee_client && make

  编译完成后，会生成dist目录，存放生成的可执行二进制和动态库。

8. 部署itrustee_client。
  1 2 3 4 5 6 7 cp -rf dist/*.so /usr/lib64 && ldconfig cp -rf dist/teecd /usr/bin cp -rf dist/tlogcat /usr/bin # 可选 cp -rf dist/tee_teleport /usr/bin cp -rf dist/agentd /usr/bin

  libboundscheck.so和libteec.so为patch驱动依赖库，需放在“/usr/lib64”目录。针对一些默认不带“/usr/lib64”目录的操作系统，需要新建“/usr/lib64”目录，并加入到系统动态库默认搜索路径中。 tlogcat提供REE侧查看TEE侧日志输出的能力，teecd为REE侧用户态守护进程，tlogcat、teecd需要放在“/usr/bin”目录。 tee_teleport可将REE侧Python/Java程序推送到TEE侧运行，并获取相应执行结果。非高级语言使用场景可不部署。 agentd提供容器内可信应用安全存储和日志存储功能，需部署在容器内“/usr/bin”目录下。非容器使用场景可不部署。 mailbox用于CA/TA通信参数传递，影响全局CA/TA并发上限，可根据实际业务需要配置mailbox池大小。当前版本mailbox池大小配置上限为128MB，即“MAILBOX_POOL_COUNT”宏定义最大为32。


#### （可选）部署SEC驱动

TEE OS 1.3.0版本起，SEC驱动需独立加载。低版本TEE OS可跳过此部分操作。

1. 获取SEC驱动。
  下载固件包提取SEC驱动文件“kunpeng_sec_drv.sec”。

2. 部署SEC驱动文件。

```
mkdir -p /var/itrustee/tee_dynamic_drv/crypto/
cp kunpeng_sec_drv.sec /var/itrustee/tee_dynamic_drv/crypto/
```


  SEC驱动部署路径由itrustee_client的Makefile文件中的DYNAMIC_CRYPTO_DRV_DIR宏指定，如果需要更换部署路径，需重新编译itrustee_client。


#### 加载REE侧模块

1. 加载tzdriver.ko内核模块。
  1 2 cd itrustee_tzdriver/ insmod tzdriver.ko && lsmod | grep tzdriver

  tzdriver.ko加载后不支持卸载，仅支持服务器下电再启动的方式将其恢复为未加载状态。

2. 加载teecd守护进程。
  1 2 nohup /usr/bin/teecd & ps aux | grep teecd

  teecd必须以绝对路径运行，即“/usr/bin/teecd”，“&”符号表示后台执行。

3. 查看TEE侧日志输出，确认REE侧已具备与TEE侧通信能力。

  a. 查看当前日志信息。
    1 tlogcat

  b. 查看当前TEE OS具体版本信息。

```
tlogcat -v
```


  c. 查看TEE日志存储路径为“/var/log/tee”。

```
tlogcat -f
```


- tlogcat需要tzdriver.ko内核模块加载后才能正确执行。
- 上述tlogcat -v的截图信息为最新TEE OS版本信息，实际查看结果可能有差异。如有需要，可通过  表2
获取最新TEE OS固件包，并参考  固件升级
完成固件升级。


#### 检查TrustZone环境

如果不确定TrustZone环境是否可用，可使用TEE状态检查工具对于环境进行检查。

1. 获取TEE状态检测工具。
  从表2获取的固件压缩包里包含了TEE状态检测工具。在里面的tee_check目录下有如下文件。

2. 将文件拷贝到如下目录，完成tee-check工具的部署。

```
mkdir -p /vendor/bin/ /data/tee-check
cp -rf tee-check /vendor/bin/
cp -rf 35397f0d-26ef-476c-b955-4806f2c6454a.sec /data/tee-check
cp -rf teeos.txt /var/itrustee/version/
```


3. 运行插件工具。

```
/vendor/bin/tee-check
```


  - 若TrustZone环境正常，则日志结果如下：
  - 若TrustZone环境不正常，则会给出对应提示。例如teecd未启动的错误提示如下：
    根据错误提示可知环境中的teecd未启动，可通过“/usr/bin/teecd &”启动。
