[PPML] Refine SGX Driver installation doc (#6167)
* Add install from install package * Rename file to install_sgx_driver * Rename title to Install SGX Driver on Xeon Server * Add vmlinux-gdb issue
This commit is contained in:
		
							parent
							
								
									b688238068
								
							
						
					
					
						commit
						b5d7b3183c
					
				
					 4 changed files with 110 additions and 74 deletions
				
			
		| 
						 | 
					@ -185,7 +185,7 @@ subtrees:
 | 
				
			||||||
                  - file: doc/PPML/Overview/trusted_big_data_analytics_and_ml
 | 
					                  - file: doc/PPML/Overview/trusted_big_data_analytics_and_ml
 | 
				
			||||||
                  - file: doc/PPML/Overview/trusted_fl
 | 
					                  - file: doc/PPML/Overview/trusted_fl
 | 
				
			||||||
                  - file: doc/PPML/QuickStart/secure_your_services
 | 
					                  - file: doc/PPML/QuickStart/secure_your_services
 | 
				
			||||||
                  - file: doc/PPML/QuickStart/build_kernel_with_sgx
 | 
					                  - file: doc/PPML/QuickStart/install_sgx_driver
 | 
				
			||||||
                  - file: doc/PPML/QuickStart/deploy_intel_sgx_device_plugin_for_kubernetes
 | 
					                  - file: doc/PPML/QuickStart/deploy_intel_sgx_device_plugin_for_kubernetes
 | 
				
			||||||
                  - file: doc/PPML/QuickStart/trusted-serving-on-k8s-guide
 | 
					                  - file: doc/PPML/QuickStart/trusted-serving-on-k8s-guide
 | 
				
			||||||
                  - file: doc/PPML/QuickStart/tpc-h_with_sparksql_on_k8s
 | 
					                  - file: doc/PPML/QuickStart/tpc-h_with_sparksql_on_k8s
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,7 @@ Advanced Topic
 | 
				
			||||||
* `Trusted Big Data Analytics and ML <trusted_big_data_analytics_and_ml.html>`_
 | 
					* `Trusted Big Data Analytics and ML <trusted_big_data_analytics_and_ml.html>`_
 | 
				
			||||||
* `Trusted FL (Federated Learning) <trusted_fl.html>`_
 | 
					* `Trusted FL (Federated Learning) <trusted_fl.html>`_
 | 
				
			||||||
* `Secure Your Services <../QuickStart/secure_your_services.html>`_
 | 
					* `Secure Your Services <../QuickStart/secure_your_services.html>`_
 | 
				
			||||||
* `Building Linux Kernel from Source with SGX Enabled <../QuickStart/build_kernel_with_sgx.html>`_
 | 
					* `Install SGX Driver through the Installation Package <../QuickStart/install_sgx_driver.html>`_
 | 
				
			||||||
* `Deploy the Intel SGX Device Plugin for Kubernetes <../QuickStart/deploy_intel_sgx_device_plugin_for_kubernetes.html>`_
 | 
					* `Deploy the Intel SGX Device Plugin for Kubernetes <../QuickStart/deploy_intel_sgx_device_plugin_for_kubernetes.html>`_
 | 
				
			||||||
* `Trusted Cluster Serving with Graphene on Kubernetes <../QuickStart/trusted-serving-on-k8s-guide.html>`_
 | 
					* `Trusted Cluster Serving with Graphene on Kubernetes <../QuickStart/trusted-serving-on-k8s-guide.html>`_
 | 
				
			||||||
* `TPC-H with Trusted SparkSQL on Kubernetes <../QuickStart/tpc-h_with_sparksql_on_k8s.html>`_
 | 
					* `TPC-H with Trusted SparkSQL on Kubernetes <../QuickStart/tpc-h_with_sparksql_on_k8s.html>`_
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,72 +0,0 @@
 | 
				
			||||||
# Building Linux Kernel from Source with SGX Enabled
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
SGX driver is merged to Linux Kernel from 5.11+. After enabling SGX feature during kernel building, we don't have to install SGX driver anymore.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
In this guide, we show how to build Kernel 5.14 from source code and enable SGX feature on Ubuntu 18.04. You can change the kernel version, i.e., 5.14 if necessary.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Prerequisite
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Install prerequisites for kernel build. Please follow your distro instruction or your favorite way to build the kernel.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
sudo apt-get install flex bison git build-essential kernel-package fakeroot libncurses5-dev libssl-dev ccache libelf-dev
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Main steps
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Clone Linux Kernel source code.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
# Obtain Linux kernel source tree
 | 
					 | 
				
			||||||
mkdir kernel && cd kernel
 | 
					 | 
				
			||||||
git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
 | 
					 | 
				
			||||||
cd linux
 | 
					 | 
				
			||||||
# You can change this version
 | 
					 | 
				
			||||||
git checkout v5.14
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Build Kernel from source code with SGX enabled.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
cp /boot/config-`uname -r` .config
 | 
					 | 
				
			||||||
yes '' | make oldconfig
 | 
					 | 
				
			||||||
# Enable SGX and SGX KVM
 | 
					 | 
				
			||||||
/bin/sed -i 's/^# CONFIG_X86_SGX is not set/CONFIG_X86_SGX=y/g' .config
 | 
					 | 
				
			||||||
echo 'CONFIG_X86_SGX_KVM=y' >> .config
 | 
					 | 
				
			||||||
make -j `getconf _NPROCESSORS_ONLN` deb-pkg
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Install kernel from deb and reboot
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
cd ..
 | 
					 | 
				
			||||||
sudo dpkg -i linux-headers-5.14.0_5.14.0-1_amd64.deb linux-image-5.14.0_5.14.0-1_amd64.deb
 | 
					 | 
				
			||||||
sudo reboot
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Check if Kernel was installed correctly and the SGX driver is working
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```bash
 | 
					 | 
				
			||||||
$ uname -r
 | 
					 | 
				
			||||||
$ ls -l /dev/ | grep sgx
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Uninstall this kernel
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Uninstall kernel with dpkg (if you want to change back to the previous kernel)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```bash
 | 
					 | 
				
			||||||
sudo dpkg --purge linux-image-5.14.0 linux-headers-5.14.0
 | 
					 | 
				
			||||||
sudo reboot
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### Trouble Shooting
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
* Building on Ubuntu 5.4.X may encounter
 | 
					 | 
				
			||||||
	* "make[2]: *** No rule to make target 'debian/certs/benh@debian.org.cert.pem', needed by 'certs/x509_certificate_list'.  Stop.". Please disable `SYSTEM_TRUSTED_KEYS`. Refer to [CONFIG_SYSTEM_TRUSTED_KEYS](https://askubuntu.com/questions/1329538/compiling-the-kernel-5-11-11).
 | 
					 | 
				
			||||||
	* "make[4]: *** No rule to make target 'debian/canonical-revoked-certs.pem', needed by 'certs/x509_revocation_list'.  Stop.". Please disable `SYSTEM_REVOCATION_KEYS`.
 | 
					 | 
				
			||||||
* In some kernels, SGX option is `CONFIG_INTEL_SGX`.
 | 
					 | 
				
			||||||
* 5.13 Kernel may encounter nfs problem [Can't mount NFS-shares from Linux-5.13.0](https://forums.gentoo.org/viewtopic-p-8629887.html?sid=f7359b869fb71849d64f3e69bb48503a)
 | 
					 | 
				
			||||||
* [Mellanox interface may be disabled on 5.14.0](https://bugzilla.redhat.com/show_bug.cgi?id=2014094). Changes to 5.15.5 will fix this issue.
 | 
					 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,108 @@
 | 
				
			||||||
 | 
					# Install SGX (Software Guard Extensions) Driver for Xeon Server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Checklist for SGX Driver:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1. Please [check if your CPU has SGX feature](https://www.intel.com/content/www/us/en/support/articles/000028173/processors.html).
 | 
				
			||||||
 | 
					2. Check if SGX feature is correctly enabled on BIOS. Please ensure enough memory and Reserved Memory Range Registers (PRMRR) are configured for SGX.
 | 
				
			||||||
 | 
					3. Recommended OS (Operating System): Ubuntu 18.04/20.04, CentOS 8, Redhat 8.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Note that SGX driver has been merged to Linux Kernel from 5.11+. After enabling SGX feature during kernel building, SGX driver will be automatically enabled. So, we recommend our customers upgrade their kernel to 5.14+ with SGX enabled. See [Building Linux Kernel from Source with SGX Enabled](#building-linux-kernel-from-source-with-sgx-enabled).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If your data center cannot upgrade OS or kernel, then you can [Install SGX Driver through the Installation Package](#install-sgx-driver-through-the-installation-package)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Building Linux Kernel from Source with SGX Enabled
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In this guide, we show how to build Kernel 5.14 from the source code and enable SGX feature on Ubuntu 18.04/20.04. You can change the kernel version, i.e., 5.14 if necessary.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Prerequisite for kernel build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Install prerequisites for kernel build. Please follow your distro instruction or your favorite way to build the kernel.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					sudo apt-get install flex bison git build-essential kernel-package fakeroot libncurses5-dev libssl-dev ccache libelf-dev
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Main steps
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Clone Linux Kernel source code.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					# Obtain Linux kernel source tree
 | 
				
			||||||
 | 
					mkdir kernel && cd kernel
 | 
				
			||||||
 | 
					git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
 | 
				
			||||||
 | 
					cd linux
 | 
				
			||||||
 | 
					# You can change this version
 | 
				
			||||||
 | 
					git checkout v5.14
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Build Kernel from source code with SGX enabled.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					cp /boot/config-`uname -r` .config
 | 
				
			||||||
 | 
					yes '' | make oldconfig
 | 
				
			||||||
 | 
					# Enable SGX and SGX KVM
 | 
				
			||||||
 | 
					/bin/sed -i 's/^# CONFIG_X86_SGX is not set/CONFIG_X86_SGX=y/g' .config
 | 
				
			||||||
 | 
					echo 'CONFIG_X86_SGX_KVM=y' >> .config
 | 
				
			||||||
 | 
					make -j `getconf _NPROCESSORS_ONLN` deb-pkg
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Install kernel from deb and reboot
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					cd ..
 | 
				
			||||||
 | 
					sudo dpkg -i linux-headers-5.14.0_5.14.0-1_amd64.deb linux-image-5.14.0_5.14.0-1_amd64.deb
 | 
				
			||||||
 | 
					sudo reboot
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Check if Kernel was installed correctly and the SGX driver is working
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					uname -r
 | 
				
			||||||
 | 
					ls -l /dev/ | grep sgx
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Uninstall this kernel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Uninstall kernel with dpkg (if you want to change back to the previous kernel)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					sudo dpkg --purge linux-image-5.14.0 linux-headers-5.14.0
 | 
				
			||||||
 | 
					sudo reboot
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Install SGX Driver through the Installation Package
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In this guide, we show how to install SGX driver with the installation package. This allows customers to enable SGX without upgrading their OS or kernel. More details in [Intel_SGX_SW_Installation_Guide_for_Linux.pdf](https://download.01.org/intel-sgx/latest/dcap-latest/linux/docs/Intel_SGX_SW_Installation_Guide_for_Linux.pdf).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Prerequisite for SGX Driver
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					sudo apt-get install build-essential ocaml automake autoconf libtool wget python libssl-dev dkms 
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Download & Install SGX Driver binary file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					wget - https://download.01.org/intel-sgx/latest/linux-latest/distro/ubuntu20.04-server/sgx_linux_x64_driver_1.41.bin
 | 
				
			||||||
 | 
					chmod 777 sgx_linux_x64_driver_1.41.bin
 | 
				
			||||||
 | 
					sudo ./sgx_linux_x64_driver_1.41.bin
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Check if the SGX driver is installed correctly
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					ls -l /dev/ | grep sgx
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you encounter any issue during installation, please open an issue on [Intel(R) Software Guard Extensions Data Center Attestation Primitives](https://github.com/intel/SGXDataCenterAttestationPrimitives)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Trouble Shooting
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Building on Ubuntu 5.4.X may encounter
 | 
				
			||||||
 | 
					  * "make[2]: *** No rule to make target 'debian/certs/benh@debian.org.cert.pem', needed by 'certs/x509_certificate_list'.  Stop.". Please disable `SYSTEM_TRUSTED_KEYS`. Refer to [CONFIG_SYSTEM_TRUSTED_KEYS](https://askubuntu.com/questions/1329538/compiling-the-kernel-5-11-11).
 | 
				
			||||||
 | 
					  * "make[4]: *** No rule to make target 'debian/canonical-revoked-certs.pem', needed by 'certs/x509_revocation_list'.  Stop.". Please disable `SYSTEM_REVOCATION_KEYS`.
 | 
				
			||||||
 | 
					  * "dpkg-source: error: cannot represent change to vmlinux-gdb.py:". Remove `vmlinux-gdb.py`, then build again.
 | 
				
			||||||
 | 
					* In some kernels, SGX option is `CONFIG_INTEL_SGX`.
 | 
				
			||||||
 | 
					* 5.13 Kernel may encounter nfs problem [Can't mount NFS-shares from Linux-5.13.0](https://forums.gentoo.org/viewtopic-p-8629887.html?sid=f7359b869fb71849d64f3e69bb48503a)
 | 
				
			||||||
 | 
					* [Mellanox interface may be disabled on 5.14.0](https://bugzilla.redhat.com/show_bug.cgi?id=2014094). Changes to 5.15.5 will fix this issue.
 | 
				
			||||||
 | 
					* Error 404 when downloading binary file. Please go to [intel-sgx-linux](https://download.01.org/intel-sgx/latest/linux-latest/distro) for the latest download link.
 | 
				
			||||||
		Loading…
	
		Reference in a new issue