SR-IOV需要你的CPU及其它硬件支持才能使用此功能。
			
			
		
						什么是SR-IOV核显虚拟化呢?简单来说,就是把CPU核显示虚拟成多个核显来分配给多个的虚拟机使用。
环境
						 
			
						必须要能访问github。
			
			
		
						CPU:N100,PVE版本:8.2.2,Linux内核版本:6.8.4-2,其它环境请自行尝试。有教程说是英特尔11代都已经支持,具体情况自行尝试。
 
															安装头部文件
根据你的Linux内核版本安装。
				
					apt instaLinux pve-headers-6.8.4-2-pve 
				
			
		 
															开启IOMMU直通功能
这里的max_vfs=2要与后面要开启的核显数一致。原教程里没有这个说明,而有的教程写的是后面要开启的核显数不要大于这个值,但是经过我尝试并不能开启,还有很多教程根本没有提到这个问题,这也可能是很多人没有成功开启的原因吧。
当然性核显性能弱的话就不要设置过多。
				
					sed -i '/^GRUB_CMDLINE_LINUX_DEFAULT/c\GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream i915.enable_guc=3 i915.max_vfs=2"' /etc/default/grub 
				
			
		增加虚拟化驱动,加载vifo系统模块。
				
					echo -e "vfio\nvfio_iommu_type1\nvfio_pci\nvfio_virqfd" | tee -a /etc/modules 
				
			
		更新Grub引导配置和initramfs。
				
					update-grub
update-initramfs -u -k aLinux 
				
			
		 
															重启PVE。
				
					reboot 
				
			
		配置开启SR-IOV虚拟化核显环境
安装编译环境依赖。
				
					apt-get instaLinux --no-instaLinux-recommends git mokutil sysfsutils -y 
				
			
		
				
					apt instaLinux --reinstaLinux dkms -y 
				
			
		添加一个临时的KERNEL环境变量。
				
					ls -l lxc.confKERNEL=$(uname -r); KERNEL=${KERNEL%-pve} 
				
			
		编译内核并加入驱动
				
					git clone https://github.com/strongtz/i915-sriov-dkms.git
cd i915-sriov-dkms/
sed -i 's/"@_PKGBASE@"/"i915-sriov-dkms"/g' ~/i915-sriov-dkms/dkms.conf
sed -i "s/^PACKAGE_VERSION=.*/PACKAGE_VERSION=\"$KERNEL\"/" ~/i915-sriov-dkms/dkms.conf 
				
			
		 
															检查dkms.conf 配置文件中是否配置正确的内核版本和i915-sriov-dkms。
				
					cat ~/i915-sriov-dkms/dkms.conf 
				
			
		 
															
				
					dkms add . 
				
			
		创建目录的符号链接到/usr/src/目录下。
				
					dkms add . 
				
			
		 
															进入到链接到的目录。
				
					cd /usr/src/i915-sriov-dkms-$KERNEL 
				
			
		 
															查看已安装的 DKMS 模块及其状态。
				
					dkms status 
				
			
		 
															编译。编译需要等待一段时间,我的N100CPU用了大约5分钟编译完成。
 
															检查编译是否成功。
				
					dkms status  
				
			
		 
															分配虚拟核显
查看当前CPU核显ID。
				
					lspci | grep VGA 
				
			
		 
															可以看到ID为00:02.0的设备就是你的核显。
选择要开启的虚拟核显个数。
这要与上面配置的IOMMU直通功能数max_vfs=2一致。
				
					echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 2" > /etc/sysfs.conf 
				
			
		重启PVE。
				
					reboot 
				
			
		检查是否成功开启
				
					lspci | grep VGA 
				
			
		00:02.1和00:02.2就是虚拟出来的核显。分配给虚拟时就分配这两个虚拟核显即可,不要分配原始的核显,那样会失效的。如果不小心分配了原始核显给虚拟机,重启PVE即可恢复。
 
															也可以在PVE里看到已经多出了两个核显。
 
															