# 在ubuntu18.04上安装Intel SGX SDK

# 写到最前面

Intel SGX驱动安装完成后,下面就需要安装SDK:intel/linux-sgx

和驱动一样,目前,目前Intel的SDK也只能支持少部分的操作系统版本:

  • Ubuntu* 16.04 LTS Desktop 64bits
  • Ubuntu* 16.04 LTS Server 64bits
  • Ubuntu* 18.04 LTS Desktop 64bits
  • Ubuntu* 18.04 LTS Server 64bits
  • Red Hat Enterprise Linux Server release 7.6 64bits
  • Red Hat Enterprise Linux Server release 8.2 64bits
  • CentOS 8.1 64bits
  • Fedora 31 Server 64bits
  • SUSE Linux Enterprise Server 15 64bits

在这里,我依旧使用的是Ubuntu 18.04.5 LTS

# 安装依赖

sudo apt-get install build-essential ocaml automake autoconf libtool wget python libssl-dev git cmake perl libssl-dev libcurl4-openssl-dev protobuf-compiler libprotobuf-dev debhelper cmake reprepro unzip

# 编译&安装

# clone代码

git clone https://github.com/intel/linux-sgx.git
# 切换到最新分支
git checkout sgx_2.11

# 编译&安装SDK

# 下载依赖
make preparation
# 安装一些优化后的编译工具
sudo cp external/toolset/ubuntu18.04/{as,ld,ld.gold,objdump} /usr/local/bin

TIP

make preparation时,它会去调用另外一个脚本:download_prebuilt.sh去下载一些优化后的编译工具:as,ld,ld.gold,objdump。这些工具命令本身Linux也有提供,但Intel应该是在原本的命令中做了扩展,并且这部分源码貌似也没有开源,只能预先编译好的二进制文件提供下载:intel-software-guard-extensions/downloads,当然可能也是因为这个原因,所以目前Intel SGX并不能支持所有的操作系统。

# 先编译SDK
make sdk
# 再编译出安装包
make sdk_install_pkg
# 执行安装
sudo ./linux/installer/bin/sgx_linux_x64_sdk_*.bin

TIP

在执行安装时,会提示指定安装路径,可以自行选择,比如/opt/intel之类的自定义目录。

安装完成后,需要source一下环境变量以便生效:

source /opt/intel/sgxsdk/environment

# 编译&安装PSW

在安装完SDK后,还需要安装PSW。

make clean
make psw
make psw_install_pkg
# 安装
sudo ./linux/installer/bin/sgx_linux_x64_psw_*.bin

# 启动服务

sudo systemctl enable aesmd
sudo systemctl restart aesmd
sudo systemctl status aesmd

# 验证环境

使用示例程序来验证一下

cd SampleCode/SampleEnclave
make
./app

如果看到类似的信息,说明启动成功了:

Checksum(0x0x7ffe295733c0, 100) = 0xfffd4143
Info: executing thread synchronization, please wait...
Info: SampleEnclave successfully returned.
Enter a character before exit ...