蓬莱enclave TEE编译和运行说明
蓬莱enclave-spmp 编译和运行说明
蓬莱是一个RISC-V TEE系统,其设计具有安全性,高性能和可扩展性。基于PMP的OpenSBI版本的蓬莱Enclave使用可以参考下文,具体仓库地址为:
https://github.com/Penglai-Enclave/Penglai-Enclave-sPMP
penglai编译环境准备
创建~/dev目录,将sdk、penglai-enclave-driver、secgear目录放置在~/dev目录中,最终布局如下,
~/dev ├── penglai-enclave-driver ├── sdk ├── secGear
该sdk和secGear路径与下文cmake编译secGear时指定的蓬莱sdk路径参数相关,不建议修改
安装内核模块编译相关依赖:
dnf install -y kernel-devel kernel-source cmake g++
在RISC-V下编译secGear需要Ocaml等依赖环境,如果不能通过软件源安装,则需要自行编译并指定路径。目前我们已经准备预编译的Ocaml包来简化这个过程,用户可以直接从
https://ipads.se.sjtu.edu.cn:1313/d/6a464e02cd3d4c1bafb0/
下载已经编译好的opam工具,解压后将
opam.tar.gz
拷贝至~/目录并解压。
对应仓库:
- penglai-enclave-drvier:
https://github.com/Penglai-Enclave/Penglai-Enclave-sPMP/tree/opensbi/penglai-enclave-driver - penglai-sdk:
https://github.com/Penglai-Enclave/penglai-sdk - penglai-secGear:
https://github.com/Penglai-Enclave/Penglai-secGear/tree/oe-release
编译penglai-enclave-driver
进入penglai-enclave-driver目录:
cd ~/dev/penglai-enclave-driver
#modify source path
sed -i 's|make -C ../openeuler-kernel/ ARCH=riscv M=$(PWD) modules|make -C /usr/lib/modules/$(shell uname -r)/build ARCH=riscv M=$(PWD) modules|' Makefile > /dev/null 2>&1
make -j$(nproc)
insmod penglai.ko
oe中编译sdk目录中相关库和demo
进入~/dev/sdk目录编译penglai-sdk:
cd ~/dev/sdk
./replace_compiler_prefix.sh
PENGLAI_SDK=$(pwd) make -j8
运行demo测试
cd ~/dev/sdk/demo
./host/host count/count
oe中编译secGear程序
进入~/dev/secGear目录
cd ~/dev/secGear && source environment && mkdir -p debug && cd debug
cmake -DENCLAVE=PL -DSDK_PATH=/root/dev/sdk .. && make && make install
运行demo测试
cd ~/dev/secGear/debug
./bin/secgear_helloworld
./bin/secgear_calculation