天天看點

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應用程式,好了!雖然不知道為什麼驅動會出問題,也不知道驅動問題出在哪了,但是最終解決了,還是挺欣慰的。

繼續閱讀