我的:Intel Corporation HD Graphics 630
其实修改配置文件不是难事,我找vt-d找了半天,开启了vt之后,才发现华硕的vt-d跟他的虚拟化技术不在同一个地方,后面翻了半天,在下面一个选项里面找到了。
1.、首先编辑GRUB配置文件:
nano /etc/default/grub
开启IOMMU支持:
GRUB_CMDLINE_LINUX_DEFAULT=“quiet intel_iommu=on iommu=pt video=efifb:off”
其中“iommu=pt”不是必须的,PT模式只在必要的时候开启设备的IOMMU转换,可以提高未直通设备PCIe的性能,建议添加。
如果是AMD的CPU:
GRUB_CMDLINE_LINUX_DEFAULT=“quiet amd_iommu=on video=efifb:off”
更新GRUB:
update-grub
2、添加所需的系统模块(驱动):
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
3、更新内核:
update-initramfs -u
4、重启机器:
reboot
5、重启上来之后检查模块是否正常加载:
lsmod | grep vfio
有类似回显说明正常:
vfio_pci 53248 1
vfio_virqfd 16384 1 vfio_pci
irqbypass 16384 3 vfio_pci,kvm
vfio_iommu_type1 32768 1
vfio 32768 5 vfio_iommu_type1,vfio_pci
查看GPU设备ID:
lspci -nn | grep VGA
类似我的回显:
00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 630 [8086:5912] (rev 04)
再执行下面的命令:
lspci -vvv -s 00:02.0
看有没有Kernel driver in use这一行,正常情况下应该是没有的。
如果有那么就说明你之前肯定是哪里没配置好(一般是i915的驱动没屏蔽成功)。
题外话:
查看核显以及声卡的供应商和设备ID:
lspci -n | grep -E “0300|0403”
回显如下:
00:02.0 0300: 8086:5a85 (rev 0b)
00:0e.0 0403: 8086:5a98 (rev 0b)
其中“8086:5a85”和“8086:5a98”分别就是核显和声卡的供应商ID和设备ID,把它们绑定到vifo模块:
echo “options vfio-pci ids=8086:5a85,8086:5a98” > /etc/modprobe.d/vfio.conf
注意,这里是华擎J3455-ITX主板的数据,其他主板或CPU核显和声卡的硬件ID会不一样,请根据实际情况添加。
参考:第一个参考
第二个参考



