https://pve.proxmox.com/wiki/Pci_passthrough
打开PVE节点的shell,输入命令:
nano /etc/default/grub
#将GRUB_CMDLINE_LINUX_DEFAULT="quiet"修改为
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off"
修改完成之后更新grub
update-grub
加载内核模块
nano /etc/modules
添加以下模块
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
nano /etc/modprobe.d/blacklist.conf
添加驱动
blacklist snd_hda_intel
blacklist snd_hda_codec_hdmi
blacklist i915
输入命令
lspci
00:02.0 VGA compatible controller: Intel Corporation GeminiLake [UHD Graphics 600]
我的核显的PCIE ID 为00:02.0 取前两位数就是00:02
lspci -n -s 00:02 #查询显卡 00:02 以上获取的ID
从以上可以查询到显卡硬件ID为8086:3185
,
隔开nano /etc/modprobe.d/vfio.conf
options vfio-pci ids=8086:3185
nano /etc/modprobe.d/kvm.conf
options kvm ignore_msrs=1
update-initramfs -u
lsmod | grep vfio
apt-get update
apt-get install gcc
查询gcc版本
gcc --version
apt-get install git
apt-get install make
git clone https://github.com/awilliam/rom-parser
cd rom-parser
make
1.之前输入lspci查询到核显的通道ID 为00:02.0
2.进入路径
cd /sys/bus/pci/devices/
ls
找到里面核显的设备文件夹
进入这个文件夹
cd 0000:00:02.0
3.开始导出核显rom
echo 1 > rom
cat rom > /tmp/vbios.rom
echo 0 > rom
在winscp进入PVE的tmp目录就可以看到导出的核显rom
cd rom-parser
./rom-parser /tmp/vbios.rom
这里会发现我们导出的核显rom 硬件设备ID为8086:0406, 这个是存在问题的,通过之前的步骤我们查询到的核显设备ID应该为8086:3185,这个才是正确的,所以我们要借助rom-parser编译出来的修复文件进行修复
cd
cd rom-parser
./rom-fixer /tmp/vbios.rom
放置目录
/usr/share/kvm
nano /etc/pve/qemu-server/100.conf
在顶部加入这行代码,代表直通核显直出核显
args: -device vfio-pci,host=00:02.0,addr=0x02,x-igd-gms=1,romfile=vbios.rom