首先编辑GRUB配置文件:

nano /etc/default/grub
开启IOMMU支持:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off"
如果是AMD的CPU:

GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on video=efifb:off"
更新GRUB:

update-grub
添加所需的系统模块(驱动):

echo "vfio" >> /etc/modules
echo "vfio_iommu_type1" >> /etc/modules
echo "vfio_pci" >> /etc/modules
echo "vfio_virqfd" >> /etc/modules
接着添加模块(驱动)黑名单,即让GPU设备在下次系统启动之后不使用这些驱动,把设备腾出来给vfio驱动用:

Intel核显:

echo "blacklist snd_hda_intel" >> /etc/modprobe.d/pve-blacklist.conf
echo "blacklist snd_hda_codec_hdmi" >> /etc/modprobe.d/pve-blacklist.conf
echo "blacklist i915" >> /etc/modprobe.d/pve-blacklist.conf
N卡/A卡:

echo "blacklist nouveau" >> /etc/modprobe.d/pve-blacklist.conf
echo "blacklist radeon" >> /etc/modprobe.d/pve-blacklist.conf
如果是N卡还需要加入下面的配置到kvm.conf(据老外说是避免一些莫名其妙的错误):

echo "options kvm ignore_msrs=1" > /etc/modprobe.d/kvm.conf
更新内核:

update-initramfs -u
重启机器:

reboot
重启上来之后检查模块是否正常加载:

lsmod | grep vfio
有类似回显说明正常:

vfio_pci 45056 1vfio_virqfd 16384 1 vfio_pci
irqbypass 16384 13 vfio_pci,kvm
vfio_iommu_type1 24576 1vfio 28672 5 vfio_iommu_type1,vfio_pci
查看GPU设备ID:

lspci -nn | grep VGA
类似我的回显:

00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 530 [8086:1912] (rev 06)
再执行下面的命令:

lspci -vvv -s 00:02.0
看有没有Kernel driver in use这一行,正常情况下应该是没有的。

如果有那么就说明你之前肯定是哪里没配置好(一般是i915的驱动没屏蔽成功)。

现在把需要直通给虚拟机的设备ID写到vfio.conf内,注意这次这里的ID不是00:02.0而是自己查看自己设备的ID,ID查看在上面回显里:

echo "options vfio-pci ids=8086:1912" >> /etc/modprobe.d/vfio.conf
回到Proxmox的WEB界面,给需要直通GPU的虚拟机添加对应的PCI设备:

切记直通核显不要勾选这个主GPU的选项:

来自于https://www.proxmox.wiki/?thread-32.htm

Last modification:May 25th, 2020 at 07:04 pm
如果觉得我的文章对你有用,请随意赞赏