一、确认自己的主板CPU是否支持Vt-d功能

不支持就搞不了直通。intel要b75以上芯片组才支持。也就是说intel4代酷睿处理器以上,都支持。amd不明。如果支持,需要先去主板开启vt-d。

二、开启iommu

vi /etc/default/grub

在里面找到:GRUB_CMDLINE_LINUX_DEFAULT="quiet"

然后修改为:GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"

如果是amd cpu请改为:GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"

修改完成之后,直接更新grub

update-grub

*#AMD cpu也可以执行

pve-efiboot-tool refresh

三、加载相应的内核模块

echo vfio >> /etc/modules
echo vfio_iommu_type1 >> /etc/modules
echo vfio_pci >> /etc/modules
echo vfio_virqfd >> /etc/modules

或者使用vi /etc/modules 在末尾添加

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

然后重启PVE

四、验证是否开启iommu

重启之后,在终端输入

dmesg | grep 'remapping'

出现如下例子。则代表成功

AMD-Vi: Interrupt remapping enabled
或者
DMAR-IR: Enabled IRQ remapping in x2apic mode

此时输入命令

find /sys/kernel/iommu_groups/ -type l
*#出现很多直通组,就代表成功了。如果没有任何东西,就是没有开启

开始PCI-E直通

1、屏蔽显卡

查看显卡,很多设备,自己看是哪个

lspci   

83:00.0 3D controller: NVIDIA Corporation GP106 [P106-090] (rev a1)


其中83:00 是代表组名。83:00.0 是代表83:00组的第一个设备

lspci -n -s 83:00      #查看  83:00 组的所有pci设备

83:00.0 0302: 10de:1c09 (rev a1)


直接屏蔽,直接让系统不启用它。

echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf 
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf 
echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf 
echo "blacklist nvidiafb" >> /etc/modprobe.d/blacklist.conf 
echo "blacklist amdgpu" >> /etc/modprobe.d/blacklist.conf 
echo "blacklist snd_hda_intel" >> /etc/modprobe.d/blacklist.conf 
echo "blacklist snd_hda_codec_hdmi" >> /etc/modprobe.d/blacklist.conf 
echo "blacklist i915" >> /etc/modprobe.d/blacklist.conf 

把显卡添加到直通组

echo "options vfio-pci ids=10de:1381,10de:0fbc" > /etc/modprobe.d/vfio.conf

*#注意,上面这条命令,ids=后面跟直通组的所有设备。中间以英文逗号隔开。自己的设备自己替换。


上述操作完成之后,再检查一下,是否将例子内容替换成自己的。使用以下命令查看。

cat /etc/modprobe.d/blacklist.conf
cat /etc/modprobe.d/vfio.conf

检查无误之后,重启

2、开始直通

首先确定自己的显卡是否支持UEFI。
一般情况下,amd r9以后的显卡都支持uefi。nvidia,9代以上显卡均支持UEFI。

uefi的显卡,需要用ovmf bios。也就不能使用win7。

新建一个虚拟机。bios类型,根据显卡支不支持uefi选择。cpu类型设置为host,并且开启muma,内存一定要为静态内存,也就是最大最小都为一样。

系统安装好之后。开始配置直通

vi /etc/pve/qemu-server/100.conf       #请把这里的100替换成自己的vmid

添加

hostpci0: 83:00,pcie=1,x-vga=on    

以上就是直通设置。