以下的安装步骤是我自己亲身操作后写的,每个人情况不同,可能会遇到我没有的问题,但总的步骤类似,本文主要目的是为其他人提供参考。
官方安装文档给出了更加详细的说明和步骤,文档在:https://download.01.org/intel-sgx/linux-1.8/docs/Intel_SGX_SDK_Installation_Guide_Linux_1.8_Open_Source.pdf
安装一共三部分(本文安装的为64位):
安装sgx、sdk和psw(platform software)
包括三个安装包
Sgx驱动安装包
Psw安装包
Sgx sdk安装包
下载安装包
Intel(R) SGXdriver: sgx_linux_x64_driver.bin
Intel(R) SGX PSW: sgx_linux_x64_psw_.bin
Intel(R) SGX SDK: sgx_linux_x64_sdk_.bin
网址:https://01.org/zh/intel-software-guard-extensions/downloads?langredirect=1
选择Intel SGX Linux 2.0 Release下的
Intel(R) SGX SDK for Ubuntu* 16.04.1
Intel(R) SGX Driver for Linux *OS
Intel(R) SGX Platform Software for Ubuntu* 16.04.1 下载
注意:NOTE Only 64-bit installation packagesare available.
硬件需求
l 6th Generation Intel® Core™ Processor ornewer
l Intel® SGX option enabled in BIOS
注意
This is required when you need to installthe Intel® SGX driver or Intel® SGX PSW, but not required when you install theIntel® SGX SDK installer.
硬件需求仅当你安装sgx驱动和psw时需要,安装sgx sdk并不需要硬件支持。其实硬件不支持也无所谓,可以在模拟环境下编写测试SGX程序。如果你的硬件不支持,那么可以选择跳过驱动安装和PSW安装,编写makefile时,SGX_MODE=SIM
系统要求:
Ubuntu* Desktop-16.04-LTS 64bits
Red Hat* Enterprise Linux Server release7.2 64bits(安装参考官方文档)
CentOS* 7.3.1611 64bits(安装参考官方文档)
安装sgx psw前需要安装一些工具:
On Ubuntu* 16.04:
$ sudo apt-get installlibssl-dev libcurl4-openssl-dev libprotobuf-dev
安装sgx sdk前准备:
On Ubuntu* 16.04:
$ sudo apt-get installbuild-essential
为了使用trusted platform service,按照以下进行安装:
Ensure mei_me driver is enabled and /dev/mei0 exists.
Download [iclsClient] and install it using the following commands:
On Ubuntu* 16.04:
打开网址https://software.intel.com/en-us/sgx-sdk/download 点击64-bit client,并进行注册,注册后自动下载
注册后需要验证邮箱,我验证完成邮箱后还是不能下载,可能需要一段时间,我可不想等下去,在github上找到了其他下载地址
http://registrationcenter-download.intel.com/akdlm/irc_nas/11414/iclsClient-1.45.449.12-1.x86_64.rpm
$sudo apt-get install alien
$sudo alien --scriptsiclsClient-1.45.449.12-1.x86_ 64.rpm
$sudo dpkg -iiclsclient_1.45.449.12-2_amd64.deb
从[dynamic-application-loader-host-interfface]工程下载源码,通过以下指令从源码安装JHI服务
下载地址:https://github.com/intel/dynamic-application-loader-host-interface
解压下载得到的源码并进入到文件夹中
On Ubuntu* 16.04:
$ sudo apt-get install uuid-dev libxml2-devcmake
$ cmake .;make;sudo make install;sudosystemctl enable jhi
安装
首先需要root权限来安装驱动和psw。按照以下顺序安装
1. Intel(R) SGX driver
2. Intel(R) SGX PSW
3. Intel(R) SGX SDK
按照以下步骤安装所有包
1 安装sgx驱动
$ sudo ./sgx_linux_x64_driver_
SGX驱动会将其设置为开机启动,在/opt/intel/sgxdriver目录下生成uninstall.sh脚本,用户可以使用该脚本卸载SGX驱动
2 安装psw
$ sudo ./sgx_linux_x64_psw_<自己的版本号>.bin
3 安装sgx 的sdk
$ ./sgx_linux_x64_sdk_<自己的版本号>.bin
安装过程中会询问是否安装在当前文件夹下,如果同意输入yes按下enter,输入no按下enter并输入自定义路径来更换安装目录。
安装结束后,sgx sdk被安装在[自定义路径/sgxsdk]中,运行命令source 自定义路径/sgxsdk/environment 来配置环境变量。Sgxsdk目录下的uninstall.sh 可以卸载sdk。
注意:
psw与sdk的默认安装目录不同。
sgx默认安装在/usr/lib.
sdk安装在[User InputPath]/sgxsdk/lib64.
注意:
样例代码在 r [User Input Path]/sgxsdk/SampleCode目录中,有着只读权限,可以通过拷贝副本来修改
测试SGX SDK是否安装成功:
将/home/SGXSDK/sgxsdk/SampleCode下的SampleEnclave文件夹拷贝到自己的目录中
进入拷贝出的文件夹中
打开Makefile文件,修改SGX_SDK?= /opt/intel/sgxsdk中的“=”后面的内容为我们的SGX SDK目录,在我这里是:SGX_SDK ?= /home/root/sgxsdk。SGX应用程序编译时,需要使用SDK里面的库,默认SDK目录是/opt/intel/sgxsdk,我们要把它改成我们自己的目录
编译程序:make SGX_MODE=SIM (我的硬件不支持,通过模拟运行,SGX_MODE=HW是硬件模式,makefile中默认为硬件模式)
执行程序,成功的话,说明我们的SDK安装是正确的。
注意:在运行样例代码时,尽管编译没有报错,但是在运行时我出现了以下错误
libsgx_urts_sim.so:cannot open sharedobject file: No such file or directory
首先查看该文件是否存在(../sgxsdk/lib64目录下),这是linux下so库经常会出现的错误,尽管上面配置了环境变量还是有这个问题,解决办法:
sudo gredit /etc/ld.so.conf
添加你的库路径 例如我的 ./home/root/sgxsdk/lib64
保存后
sudo ldconfig即可
重新运行你的程序就可以了
卸载intel sgx通过运行uninstall.sh脚本来卸载,卸载驱动和psw需要root权限,卸载按照以下顺序:
1. Uninstall the Intel(R) SGX SDK
2. Uninstall the Intel(R) SGX PSW
3. Uninstall the Intel(R) SGX driver