Intel SGX运行时出现“Error code is 0x4001”的解决方法

本文作者:邱朋飞

昨天在我的电脑上运行Intel SGX应用程序还是好好的,今天早上运行根据Intel提供的例子进行一些小修改后的程序时出现了0x4001错误,提示如下:

Error code is 0x4001. Please refer to the "Intel SGX SDK Developer Reference" for more details.

这很影响心情啊!昨天也就是下午编写了半天程序,怎么就会出现问题了?我想是不是我的哪些代码出现问题了,通过打印调试也不行,就开始一个一个函数删除,还是不行。然后就把Intel提供的例子文件一个一个替换自己修改后的文件,还是这个问题,就感觉不是自己的代码的问题,就直接运行Intel提供的例子程序,还是出现0x4001错误。赶快查询Intel提供的SGX SDK开发参考文档,参考文档可以在https://download.01.org/intel-sgx/linux-2.0/docs/Intel_SGX_SDK_Developer_Reference_Linux_2.0_Open_Source.pdf下载,查询0x4001,果然查到了,上面是这样说的:

AE service did not respond or the requested service is not supported.

意思就是Intel SGX提供的体系结构服务没有响应或者请求的服务不支持,Intel SGX本身提供了一些Enclave,辅助Enclave的创建、报告生成等。这样一想,应该是SGX本身的问题,去Google搜索有人说在模拟模式下编译运行是可以的,但是在硬件模式下是不可以的,这更验证了是SGX本身的问题。赶快开机,进入BIOS查看SGX服务是否打开,一看是打开的,这就困扰到我了。电脑是支持SGX的,服务也是开的,怎么会有问题?后来想可能是驱动的问题,赶快重装驱动,进入进入SGX驱动下载文件夹,执行以下命令,重新安装SGX驱动。

sudo ./sgx_linux_x64_driver_eb61a95.bin

再次编译运行SGX应用程序,好了!虽然不知道为什么驱动会出问题,也不知道驱动问题出在哪了,但是最终解决了,还是挺欣慰的。

你可能感兴趣的:(SGX)