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

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


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

| TEE OS hpm固件版本 | itrustee\_tzdriver配套代码分支 | itrustee\_client配套代码分支 | libboundscheck配套代码分支 |
| --- | --- | --- | --- |
| 1.1.0 | itrustee\_tzdriver\-1.0 | itrustee\_client\-1.0 | master |
| >=1.2.0 | master | master | master |


#### TrustZone License安装

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

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

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


#### 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指定了内核头文件路径：
    需要根据实际情况予以替换。请注意，编译使用的内核头文件版本必须与tzdriver.ko最终运行环境的内核版本保持一致，否则可能会出现因内核版本差异导致tzdriver.ko加载失败的情况。可使用“uname -r”指令查看当前运行环境的内核版本。


  b. 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 cp -rf dist/*.so /usr/lib64 && ldconfig cp -rf dist/teecd /usr/bin cp -rf dist/tlogcat /usr/bin


- libboundscheck.so和libteec.so为patch驱动依赖库，需放在“/usr/lib64”目录。针对一些默认不带“/usr/lib64”目录的操作系统，需要新建“/usr/lib64”目录，并加入到系统动态库默认搜索路径中。
- tlogcat提供REE侧查看TEE侧日志输出的能力，teecd为REE侧用户态守护进程，tlogcat、teecd需要放在“/usr/bin”目录。


#### 部署SEC驱动

1. 获取SEC驱动
  从华为企业网网站下载：BoostKit-teeos_1.3.0.zip(https://support.huawei.com/enterprise/zh/software/255094599-ESW2000652729)

  解压压缩包提取SEC驱动文件“kunpeng_sec_drv.sec”

2. 部署SEC驱动文件
  1 2 mkdir -p /var/itrustee/tee_dynamic_drv/crypto/ cp kunpeng_sec_drv.sec /var/itrustee/tee_dynamic_drv/crypto/


- 自TEE OS 1.3.0 版本起，SEC驱动需独立加载。低版本TEE OS可忽略“部署SEC驱动”步骤。
- 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

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

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

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

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

```
tlogcat -v
```


  查看TEE日志存储路径为/var/log/tee

```
tlogcat -f
```


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