PVE开启硬件直通功能

PVE开启网卡直通,显卡直通,USB直通。

2021年9月更新

新版本的pve,例如pve7.0,无需做驱动屏蔽。请直接开启iommu之后,在pve面板上,虚拟机类型选择Q35,添加直通设备即可。

NVIDIA已经开放GPU on VM,也就是说使用最新版本的驱动,可以顺利直通N卡,并且不会出现43代码。

######以下是老教程##########

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

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

第二步:开启iommu

#编辑grub
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

重启主机

第四步 验证是否开启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直通

直通要求:

满足前面所有条件。虚拟机芯片组一定要q35。

显卡直通

AMD RADEON 5xxx, 6xxx, 7xxx, Navi 5XXX(XT), NVIDIA GEFORCE 7, 8, GTX 4xx, 5xx, 6xx, 7xx, 9xx, 10xx and RTX 16xx/20xx 都可以成功直通

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)

10de:1c09 是 厂商ID:设备ID 。我这显卡没有声卡,所以就一个设备。正常的GPU,有2个设备,一个是显卡,一个是声音。

正常的GPU都会有2个设备,就像下面

lspci -n -s 01:00
01:00.0 0300: 10de:1381 (rev a2)
01:00.1 0403: 10de:0fbc (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=后面跟直通组的所有设备。中间以英文逗号隔开。自己的设备自己替换。

对于nvidia显卡,需要

echo "options kvm ignore_msrs=1" > /etc/modprobe.d/kvm.conf

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

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

检查无误之后,重启

2、开始直通

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

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

vi /etc/pve/qemu-server/100.conf       #请把这里的100替换成自己的vmid
添加 
hostpci0: 83:00,pcie=1,x-vga=on        #请把这里的83:00 替换成需要的直通组。注意留空

附自己的配置

cat /etc/pve/qemu-server/100.conf
agent: 1
audio0: device=ich9-intel-hda,driver=spice
balloon: 2048
bios: ovmf
bootdisk: virtio0
cores: 4
cpu: host
efidisk0: nvme960:100/vm-100-disk-1.qcow2,size=128K
hostpci0: 83:00,pcie=1,x-vga=on
ide0: local:iso/virtio-win-0.1.173.iso,media=cdrom,size=385322K
ide2: local:iso/cn_windows_10_enterprise_ltsc_2019_x64_dvd_9c09ff24.iso,media=cdrom
machine: q35
memory: 4096
name: PCIE
net0: virtio=8E:D0:4B:FA:22:48,bridge=vmbr1,firewall=1
numa: 1
ostype: win10
scsihw: virtio-scsi-pci
serial0: socket
smbios1: uuid=ce49834c-1340-4010-9631-1fa50f39384d
sockets: 1
spice_enhancements: foldersharing=1,videostreaming=all
usb0: spice,usb3=1
vga: qxl
virtio0: nvme960:100/vm-100-disk-0.qcow2,cache=none,size=60G
vmgenid: 952920f7-1d6d-40ec-89a8-cbfe2e2cc76f

配置完成之后,开机就行。开机如果报错,就需要看报错类型了。

P106直通成功,能不能用,还要再测试

补充说明

有些时候,pcie 口不兼容,需要换一个口。

评论

  1. 1
    1 年前
    2022-12-07 19:33:38

    p106直通成功,驱动不成功

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇