文章目录
本文介绍了在Ubuntu 18.04下安装Intel SGX 2.3.1 版本的步骤。硬件支持的完整安装包括以下三个部分:
注意:
硬件需求仅当你安装sgx驱动和psw时需要,安装sgx sdk并不需要硬件支持。
其实硬件不支持也无所谓,可以在模拟环境下编写测试SGX程序。
如果硬件不支持,那么可以选择跳过驱动安装和PSW安装,
编写makefile时,SGX_MODE=SIM
Reference:
官方文档:https://download.01.org/intel-sgx/linux-1.8/docs/Intel_SGX_SDK_Installation_Guide_Linux_1.8_Open_Source.pdf
Ubuntu16.04——Intel sgx安装 https://blog.csdn.net/q2240441362/article/details/80343962
1.下载安装包
地址:https://01.org/intel-software-guard-extensions/downloads
选择Intel SGX Linux 2.3.1 Release下的Intel® SGX Installers for Ubuntu* 18.04 进行下载 在https://download.01.org/intel-sgx/linux-2.3.1/ubuntu18.04/ 中下载以下三部分:
2.安装必要的工具
2.1 On Ubuntu* 16.04:
sudo apt-get installlibssl-dev libcurl4-openssl-dev libprotobuf-dev
sudo apt-get installbuild-essential
2.2 安装alien:
sudo apt-get install alien
2.3 下载并安装Intel® Capability Licensing Service(iclsClient):
2.3.1 在 https://registrationcenter.intel.com/en/forms/?productid=2859 进行注册,注册后自动下载。
2.3.2 进入下载文件夹,编译 iclsClient:
sudo alien --scripts iclsClient-1.45.449.12-1.x86_64.rpm
会在文件夹中生成同名的deb文件。
2.3.3 安装iclsClient:
sudo dpkg -i iclsclient_1.45.449.12-2_amd64.deb
2.4 安装JHI服务:
2.4.1 下载dynamic-application-loader-host-interface源码:https://github.com/intel/dynamic-application-loader-host-interface
2.4.2 解压下载得到的源码并进入到文件夹中
unzip Filename.zip
2.4.3 安装必要的工具:
sudo apt-get install uuid-dev libxml2-dev cmake libsystemd-dev
2.4.4 进入到解压后的文件夹,编译并安装JHI服务:
cd dynamic-application-loader-host-interface-master
cmake .;make;sudo make install;sudo systemctl enable jhi
3.安装SGX
(不切换到root权限,但在终端的
~/Downloads目录下执行chmod 777命令然后sudo(因为SDK下载到了~/Downloads目录下,要在这里执行chmod 777,否则提示没有那个文件或目录)
进入到~/Downloads目录:
cd ~/Downloads
3.1 安装SGX驱动
为下载得到的Driver文件添加可执行权限:
chmod 777 sgx_linux_x64_driver_4d69b9c.bin
安装SGX driver:
sudo ./sgx_linux_x64_driver_4d69b9c.bin
3.2 安装SGX enclave common
为下载得到的deb文件添加可执行权限:
chmod 777 libsgx-enclave-common_2.3.101.46683-1_amd64.deb
安装SGX enclave common:
sudo dpkg -i libsgx-enclave-common_2.3.101.46683-1_amd64.deb
3.3 安装SGX SDK
为下载得到的SDK文件添加可执行权限:
chmod 777 sgx_linux_x64_sdk_2.3.101.46683.bin
安装SGX SDK:
sudo ./sgx_linux_x64_sdk_2.3.101.46683.bin
安装过程中需要选择安装的文件夹,可以输入yes安装到当前文件夹,也可以输入no选择自己想安装到的文件夹。我选择了no,并输入/home/lee/SGXSDK,将SGX SDK安装到/home/lee/SGXSDK文件夹下。SGX SDK软件会在/home/lee/SGXSDK路径下建立一个sgxsdk文件夹,并将SDK安装到该文件夹中。
将SGX SDK设置到环境变量中(每次打开命令行都要设置):
source /home/lee/SGXSDK/sgxsdk/environment
SGX SDK会在/home/lee/SGXSDK目录下生成uninstall.sh脚本,用户可以使用该脚本卸载SGX SDK。
/home/lee/SGXSDK/sgxsdk/SampleCode目录下包括一些SGX例子代码,用户可以参考例子代码编写自己的程序。
4.测试SDK是否安装成功
4.1 值修改
安装到/home/lee/SGXSDK目录下的sgxsdk文件夹不可更改,因此我把整个sgxsdk文件夹复制到了另一个文件夹中(我复制到了/home/lee/BlockchainExperiment/SGXSDK文件夹下)。
在/home/lee/BlockchainExperiment/SGXSDK/sgxsdk/SampleCode/SampleEnclave 中修改Makefile文件两个值:
sudo gedit ~/BlockchainExperiment/SGXSDK/sgxsdk/SampleCode/SampleEnclave/Makefile
修改SGX_SDK ?= /opt/intel/sgxsdk中的“=”后面的内容为我们的SGX SDK安装目录,在我这里是:SGX_SDK ?= /home/lee/SGXSDK/sgxsdk。(SGX应用程序编译时,需要使用SDK里面的库,默认SDK目录是/opt/intel/sgxsdk,我们要把它改成我们自己的目录)。
4.2 进行测试
终端进入到~/BlockchainExperiment/SGXSDK/sgxsdk/SampleCode/SampleEnclave目录下(cd或在文件夹中右键在终端打开,进行环境变量设置:
source /home/lee/SGXSDK/sgxsdk/environment
执行测试:
make
结果: