升级TEE OS(可选)

对于鲲鹏S920X10/S920S10机型,执行搭建步骤后,此时TEE OS即为机密OS。对于其他机型,由于硬件的限制,烧写在Flash上的TEE OS为以前缩小版iTrustee,一些高级特性不支持,可采用如下方法进行动态升级,该功能从1.4.0开始支持。

  1. 部署用于升级的TA和机密OS镜像,两者可从表2的zip包中获取。

    1
    2
    cp 9ab6f960-54f3-4317-a8f7-e92ed12b6ae2.sec  /var/itrustee/image/
    cp trustedcore.img  /var/itrustee/image/
    

  2. 获取用于升级的CA源码,编译出tee_upgrade.ko。

    1
    2
    3
    git clone https://gitee.com/openeuler/itrustee_sdk.git -b master
    git clone https://gitee.com/openeuler/libboundscheck.git
    mv libboundscheck/ itrustee_sdk/thirdparty/open_source/
    
    修改Makefile指定tzdriver头路径和内核符号路径,tzdriver可使用搭建步骤下载的。
    1
    2
    cd itrustee_sdk/test/CA/tee_upgrade
    vim Makefile
    

    1
    make
    
    • 一般情况下内核头文件位于“/usr/src/kernels/<内核版本>”下,若编译脚本未匹配到正确路径,则需要根据实际情况予以替换。请注意,编译使用的内核头文件版本必须与tee_upgrade.ko最终运行环境的内核版本保持一致,否则可能会出现因内核版本差异导致tee_upgrade.ko加载失败的情况。可使用uname -r指令查看当前运行环境的内核版本。
    • tee_upgrade编译依赖tzdriver中的头文件以及内核符号,可通过EXTRA_CFLAGS指定tzdriver中头文件搜索路径,以及通过KBUILD_EXTRA_SYMBOLS指定tzdriver导出的内核符号文件Module.symvers路径。
      • 一些编译环境不指定内核符号文件路径,编译仅有一些警告日志。一些编译环境会将警告当作错误,导致编译失败,此时必须指定内核符号文件路径。
      • 在tzdriver已加载,且tzdriver中的内核符号文件不在时,可重新下载tzdriver进行编译。若报“strcpy_s”等符号找不到,可修改tzdriver的Makefile,将安全函数编译进tzdriver.ko中,可做如下修改:

  3. 加载tee_upgrade.ko模块,完成最新TEE OS升级。

    1
    insmod tee_upgrade.ko
    

  4. 升级完毕后会中止teecd,需要重新启动teecd。

    1
    nohup /usr/bin/teecd &
    

  5. 查询当前TEE OS版本,此时显示为CCOS(机密OS,与以前缩小版iTrustee进行区分)。

    1
    tlogcat -v
    

  • 动态升级过程会中断当前TEE OS内正在运行的TA应用。避免业务中断,建议在未运行任何业务TA情况下完成动态升级。
  • 最新TEE OS对安全内存要求4G以上。避免TEE OS升级失败,请确认BIOS里安全内存配置大小不低于4G。