Ubuntu20.04安装SGX

整体参考【Ubuntu18.04配置sgx环境】,但是实现过程中会出现小问题

  • 测试本机器有没有SGX

进行编译小程序
git clone https://github.com/ayeks/SGX-hardware.git
cd SGX-hardware
gcc -Wl,--no-as-needed -Wall -Wextra -Wpedantic -masm=intel -o test-sgx -lcap cpuid.c rdmsr.c xsave.c vdso.c test-sgx.c
./test-sgx

结果见GitHub - ayeks/SGX-hardware: This is a list of hardware which supports Intel SGX - Software Guard Extensions.的readme部分写的很清楚的。

下载安装驱动sgx-driver

进入以下网站,将三个bin文件下载。(默认下载到/home/用户名/Downloads文件夹下)https://download.01.org/intel-sgx/sgx-linux/2.13/distro/ubuntu18.04-server/到下载文件夹下,

进入这个文件夹(cd)

输入sudo chmod 777 sgx_linux_x64_driver_2.11.0_0373e2e.bin以赋予这个.bin文件执行权限

运行这个.bin文件         

sudo ./sgx_linux_x64_driver_2.11.0_0373e2e.bin

ok,驱动安装完成

安装编译SGX SDK要用到的工具
sudo apt-get install build-essential ocaml ocamlbuild automake autoconf libtool wget python libssl-dev git cmake perl
该命令默认安装在系统上,所以可以在任何位置运行,不用担心安装位置
由于网络原因,有些包容易安装失败,出现失败情况,不用担心,重复运行这条命令,直至全部安装成功即可。

安装编译SGX PSW要用到的工具
sudo apt-get install libssl-dev libcurl4- openssl -dev protobuf-compiler libprotobuf-dev debhelper cmake reprepro unzip
该命令默认安装在系统上,所以可以在任何位置运行,不用担心安装位置

从仓库获取源码
到下载文件夹下,输入
git clone https://github.com/intel/ linux -sgx.git
运行成功后,下载文件夹中将会多出一个linux-sgx文件。

【在这一步时,我出现了问题fatal:无法访问xxxfailed to connect to github.com port 443:拒绝连接
解决办法:本来连的是校园网,我切换成了手机热点,还是出现这个问题。ping了下GitHub,能通。我又切换回了校园网,成功下载了】

 进入下边这个网站,将整个项目down下来,然后把./QuoteVerification和./QuoteGeneration俩文件夹直接copy到 linux-sgx/external/下。
https://github.com/intel/SGXDataCenterAttestationPrimitives/

【在这一步时,我复制网站地址,发现404,结果发现此地址多了一个”/“,正确的应该是https://github.com/intel/SGXDataCenterAttestationPrimitives

以及使用git clone显示连接超时,我直接进去网页download zip至下载文件夹再解压】

到下载文件夹下,输入
cd linux-sgx && make preparation

【在这一步,我第一次显示失败。猜测是网络不佳,我又多试了几次,成功】

把准备好的工具列表添加到全局变量中,方便之后编译工作的展开
到linux-sgx文件夹下,输入以下命令
sudo cp external/toolset/{current_distr即当前系统的版本}/{as,ld,objdump} /usr/local/bin
再用下面这个语句检查是不是添加成功:
which as ld objdump

【这条写的有些模糊了哈哈哈,首先cd到linux-sgx文件夹下,其次输入命令后显示找不着,正确的应该是

sudo cp ./external/toolset/ubuntu20.04/{as,ld,objdump} /usr/local/bin

黄色是空格】

编译SGX SDK和SGX SDK安装工具( installer )
进入linux-sgx文件夹,输入以下命令
make sdk

【这一步要好久,将近半个小时】
运行完成后,再输入以下命令
make sdk_install_pkg
成功运行的话,在linux-sgx/linux/installer/bin文件夹下会有一个sgx_linux_x64_sdk_${version}.bin文件生成

【这一步也要好久,将近半个小时】

安装sdk


进入linux-sgx文件夹,输入以下两条命令
cd linux/installer/bin
./sgx_linux_x64_sdk_${version}.bin
注意:运行第二条命令时,它询问是否安装在当前文件夹的时候,最好选择“no”,然后输入/opt/intel/, 即将SGX SDK安装在/opt/intel/文件夹下。
安装好了之后,会显示它安装的路径,记下来,以后编译运行sgx程序的时候需要先运行以下命令,令开发环境生效

【这时候显示cannot install in ,please check the permission

我进入了/opt/intel/并修改了其权限sudo chmod 777 -R intel/】
source /opt/intel/sgxsdk/environment
该命令在任何位置都可运行
运行该命令

安装SGX PSW

命令行运行以下命令添加下载Intel sgx psw的下载路径
echo ‘deb [arch=amd64] https://download.01.org/intel-sgx/sgx_repo/ubuntu bionic main’ | sudo tee /etc/apt/sources.list.d/intel-sgx.list
该命令在任何位置都可运行

命令行运行以下命令,添加仓库拉取的ssh密钥
wget -qO - https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | sudo apt-key add -
运行后等一会儿看到【ok】就是运行成功。
该命令在任何位置都可运行

更新一下apt-get的列表
sudo apt-get update
该命令在任何位置都可运行

分别安装SGX PSW 提供的3个服务
分别是launch、EPID-based attestation和Algorithm agnostic attestation
输入以下命令
sudo apt-get install libsgx-launch libsgx-urts
sudo apt-get install libsgx-epid libsgx-urts
sudo apt-get install libsgx-quote-ex libsgx-urts
sudo apt-get install libsgx-dcap-ql //但这句其实可能是没有用的,但是还是运行吧。

【这里报错:下列软件包有未满足的依赖关系:
libsgx-launch : 依赖: libprotobuf10 但无法安装它
推荐: libsgx-aesm-launch-plugin (>= 2.18.101.1-bionic1) 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

搜索这个问题没有找到答案,偶然发现ubuntu20.4 sgx环境配置 - k_kK - 博客园里提到“注意,与ubuntu18.04不同,ubuntu20为ubuntu focal main。”

于是按照修改"echo"行,并且把后面的几行也重新运行了一遍。报错不再发生。】
该命令默认安装在系统上,所以可以在任何位置运行,不用担心安装位置
安装完毕,可以在/opt/intel/目录下找到一个sgx-asem-services目录

以上步骤完全照做,同时生成的东西和博主说的一模一样,但是最后运行./app的时候显示error

猜测是版本错了,但是我也不知道driver, sdk,psw哪个版本不对。控制变量法尝试后发现,

【进入以下网站,将三个bin文件下载。(默认下载到/home/用户名/Downloads文件夹下)https://download.01.org/intel-sgx/sgx-linux/2.13/distro/ubuntu18.04-server/到下载文件夹下】

这里的driver.2.11.0版本是错误的,正确是sgx_linux_x64_driver_2.11.54c9c4c.bin。

重新运行这个bin

除了驱动之外,PSW和SDK都保持原状。

使用原博客中的测试,成功了,感恩。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值