注意:
硬件需求仅当你安装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
地址: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/ 中下载以下三部分:
sudo apt-get install libssl-dev libcurl4-openssl-dev libprotobuf-dev
sudo apt-get install build-essential
sudo apt-get install alien
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.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
(不切换到root权限,但在终端的
~/Downloads
目录下执行chmod 777
命令然后sudo
(因为SDK下载到了~/Downloads
目录下,要在这里执行chmod 777
,否则提示没有那个文件或目录)
进入到~/Downloads
目录:
cd ~/Downloads
为下载得到的Driver文件添加可执行权限:
chmod 777 sgx_linux_x64_driver_4d69b9c.bin
安装SGX driver:
sudo ./sgx_linux_x64_driver_4d69b9c.bin
为下载得到的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
卸载:
SGX驱动会将其设置为开机启动,并在/opt/intel 目录下生成uninstall.sh脚本,用户可以使用该脚本卸载SGX驱动: 在该目录下,执行 sudo ./uninstall
若生成的是uninstall.sh,则执行
sudo ./uninstall.sh
为下载得到的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
文件夹下。(无硬件环境安装到/opt/intel) SGX SDK软件会在/home/lee/SGXSDK
路径下建立一个sgxsdk文件夹,并将SDK安装到该文件夹中。
将SGX SDK设置到环境变量中(每次打开命令行都要设置):
source /home/lee/SGXSDK/sgxsdk/environment
在/etc/profile
文件下添加:
export PATH=$PATH:/home/lee/SGXSDK/sgxsdk/environment
安装完成!
SGX SDK会在/home/lee/SGXSDK
目录下生成uninstall.sh
脚本,用户可以使用该脚本卸载SGX SDK。
/home/lee/SGXSDK/sgxsdk/SampleCode
目录下包括一些SGX例子代码,用户可以参考例子代码编写自己的程序。
安装到/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,我们要把它改成我们自己的目录)。
终端进入到~/BlockchainExperiment/SGXSDK/sgxsdk/SampleCode/SampleEnclave
目录下(cd或在文件夹中右键在终端打开,进行环境变量设置:
source /home/lee/SGXSDK/sgxsdk/environment
注意!如果使用环境变量配置方法二就不需要进行此步的环境变量设置。但执行测试还需要在此目录下。
进行编译:
make
./app