本人环境
12100+1660TI
Win10 SR-IOV直通 核显 + 1660ti 独显
开启虚拟化
IOMMU
首先要保证BIOS中开启了VT-d VT-X或类似的虚拟化技术,否则是无法直通成功的
然后我们需要在Grub引导中开启iommu
PVirtual Environment 7.3-4
主板设置里开启了虚拟化相关的所有配置, 并且如果主板上有SR-IOV相关设置, 也配置为enable
可选步骤 : pve的apt源换成了国内的中科大或者清华, 能够正常安装软件
pve执行 : apt search pve-headers-5.19.7-2能看到对应版本软件
/etc/apt/sources
最新 7.x 源如下
deb http://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
deb http://mirrors.aliyun.com/debian-security/ bullseye-security main non-free contrib
deb-src http://mirrors.aliyun.com/debian-security/ bullseye-security main non-free contrib
#ProxmoveVE7
deb http://mirrors.ustc.edu.cn/proxmox/debian/pve bullseye pve-no-subscription
nano /etc/default/grub
修改grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_guc=7"
更新升级内核
update-grub
升级内核
apt update && apt install pve-headers-5.19.7-2-pve && apt install pve-kernel-5.19.7-2-pve -y
update-initramfs -u -k all
reboot
查看当先内核信息是否出现5.19.7-2-pve
uname -r
安装DKMS
apt install dkms -y
下载dkms模块i915-sriov-dkms.tar到pve服务器
wegt https://pan.98hg.top/d/pve/%E7%9B%B4%E9%80%9A%E7%9B%B8%E5%85%B3/i915-sriov-dkms.tar
注意每一个i915-sriov-dkms.tar文件都严格对应了linux内核, 不能在网上随便找一个同名文件覆盖.
解压文件 && 移动文件到/usr/src
tar -xvf i915-sriov-dkms.tar && mv i915-sriov-dkms /usr/src && cd /usr/src/i915-sriov-dkms
dkms install -m i915-sriov -v dkms
查看dkms状态
dkms status
显示i915-sriov, dkms, 5.19.7-2-pve, x86_64: installed则正常
安装sysfsutils
apt install sysfsutils -y
检查pci地址
lspci | grep "VGA"
检查vga的pci是不是下方命令的00.02.0
echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf
检查iGPU框架是否存在
ls /lib/firmware/i915/tgl_guc_70.1.1.bin
一般会有东西显示
手动添加tgl_guc_70.1.1.bin
wget -P /lib/firmware/i915 https://pan.98hg.top/d/pve/%E7%9B%B4%E9%80%9A%E7%9B%B8%E5%85%B3/tgl_guc_70.1.1.bin
mv ./tgl_guc_70.1.1.bin /lib/firmware/i915/
reboot
lspci
检查是不是多出了几组vga, 如果是, 则说明已经成功
加载对应的内核模块
在/etc/modules中添加以下模块
vfio
vfio_pci
vfio_virqfd
vfio_iommu_type1
验证是否开启成功
重启之后,在终端输入
dmesg | grep remapping
出现如下例子。则代表成功
DMAR-IR: Enabled IRQ remapping in x2apic mode
屏蔽驱动
编辑/etc/modprobe.d/pve-blacklist.conf添加驱动屏蔽列表
blacklist nvidiafb
blacklist nouveau
blacklist nvidia
根据你的显卡类型来对应添加对应的驱动屏蔽
如果你是NVIDIA的显卡,还需要执行
echo "options kvm ignore_msrs=1 report_ignored_msrs=0" > /etc/modprobe.d/kvm.conf
BashCopy全屏
现在开始查看你需要直通的显卡
lspci -knn | grep -i -A 2 vga
其中65:00是代表组名。65:00.0是代表65:00组的第一个设备
1043:865f表示厂商ID:设备ID,直接通过lspci看的话可以看到音频设备甚至是USB设备
这里我因为不需要对当前PCI-E设备组再拆分,所以直接略过
如果你需要设置显卡显示设备和音频设备单独直通,需要执行下面语句
让PCI-E设备(显卡)由vfio驱动程序接管便于直通
如果不需要单独直通,vfio驱动会在设置直通的时候自动接管PCI-E设备,可以不用配置vfio-pci
echo "options vfio-pci ids=10de:1381,10de:0fbc" > /etc/modprobe.d/vfio.conf
#注意,上面这条命令,ids=后面跟直通组的所有设备。中间以英文逗号隔开。自己的设备自己替换。
然后执行下面命令更新引导配置
update-initramfs -u -k all
重启验证PCI-E显卡是否被vfio-pci驱动,Kernel driver in use: vfio-pci表示直通驱动成功
lspci -knn | grep -i -A 2 vga
......
Kernel driver in use: vfio-pci
添加设备
虚拟机设置
在对应需要直通的虚拟机中添加PCI设备,使用如上图所示设置
勾选所有功能后同一IOMMU分组下所有PCIE设备都会进入直通