双路E5平台PVE7.0系统GTX1060 显卡直通

编程知识 更新时间:2023-04-17 10:52:17

双路E5平台PVE7.0系统GTX1060 显卡直通

刚通,熟悉的错误消失了,有点失落,有点不知所措。直通成功了,开机能跑好几套系统(win10系统还能直通显卡玩游戏)。

使用鲁大师对比物理机和虚机的性能,结果如下:

项目全国物理机平均分虚机实测分
处理器Xeon 2680v446w41w
显卡gtx1060 5G18w17w

搞直通过程很曲折,成功很突然,一时竟不知从何说起。一开始是参考他人流程,拷贝粘贴命令,但错误很多,始终是失败,而且错得不知所云。
隔两天收拾心情,潜心研究各方面的信息,尝试失败,如此循环。久病成医,渐入门径,之后善用dmesg工具,有方向的定位和解决问题,最后找到合适的参数,搞定。

我的结论是,没法提供一个必成教程。只能尽人事听天命,尽量多写点实际经历,给大家参考。
本文分两段,第一段是无脑操作指南,能成功算运气。后面内容提供给能潜心研究的哥们,做参考。


第一段:无脑操作指南

!!! 想无脑莽一波就能成功的前提是,你使用了类似的硬件平台,见下:

类别项目备注
CPU2680v4 x2咸鱼装机卖家
主板x99华南金牌f8d
DDR4三星ECC2133 128G16Gx8 镁光
散热器冰弘6管单扇
HD金士顿500G
HD海康紫盘WD40PURX 4Tx2CMR
显卡1060 5G 一线品牌
电源AK700 600w主动
机箱玩嘉荣光亚克力拉门

准备

!!!!除了PVE主机之外,请准备一台辅助电脑,windows开共享目录。如果家庭网络不方便访问github,最好辅助电脑开一个http服务器(我用easyWebServer),将服务目录指向该共享目录路径。

!!!!PVE主机安装显示器(不要用HDMI欺骗器)
可以体会各个阶段显卡的反应

!!!!在安装PVE之前,请带显卡在windows中启动,使用gpuz软件提取vbios的rom,命名为“nvidiaGTX1060_gpuz_dump.rom”,放入辅助机器共享目录。

!!!!请下载Nvidia显卡驱动,放入辅助机器共享目录

如果你是GTX1060,请下载 466.77版本,后详。

!!!! BIOS 开启VT-d x2apic

其他准备:

  • 软件环境 Proxmox VE 7.0 (自己搞定)
  • 创建VM虚机,安装win10 系统 (自己搞定)

VM要点:

  • 加载win10.iso和win_virio.iso virio驱动,安装qemu agent(方便看ip)
  • BIOS:OFMV, machine:Q35
  • 先不急添加 PCI显卡设备

要求:

  • win10虚机装好
  • 各种vfio的驱动打好
  • win10里面把guestAgent跑起来
  • 使能RDP远程桌面登录

下面运行指令,都是在web页面的shell中操作,请熟悉PVE -> shell 的命令行工具。

找显卡的PCI地址

lspci -v

找到有nvidia的行:

82:00.0 VGA compatible controller: NVIDIA Corporation GP106 [GeForce GTX 1060 5GB] (rev a1) (prog-if 00 [VGA controller])
        Subsystem: ZOTAC International (MCO) Ltd. GP106 [GeForce GTX 1060 5GB]
        Physical Slot: 14
        ...
82:00.1 Audio device: NVIDIA Corporation GP106 High Definition Audio Controller (rev a1)
        Subsystem: ZOTAC International (MCO) Ltd. GP106 High Definition Audio Controller
        ...

留意 82:00.0 和 82:00.1,输入指令:

lspci -n -s 82:00

输出:

82:00.0 0300: 10de:1c04 (rev a1)
82:00.1 0403: 10de:10f1 (rev a1)

留意 10de:1c04, 10de:10f1 ,下面有用。

开始为PVE内核添加参数,开启iommu 和其他 PCI相关的配置

    nano /etc/default/grub

找到:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet"

修改为:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction nofb nomodeset video=vesafb:off video=efifb:off vfio-pci.ids=10de:1c04,10de:10f1"

Ctrl+x Y 保存。

其中 10de:1c04,10de:10f1 是 上面找到显卡和附属声卡(HDMI音频)的参数。

更新grub启动参数:

    update-grub

加载vfio的驱动

nano /etc/modules

添加:

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

保存退出。

更新并重启PVE:

    update-initramfs -u -k all && reboot now

启动之后,我们检查一下效果:

    dmesg | grep -e DMAR -e IOMMU -e AMD-Vi
# 注意三个关键项

[    0.337693] DMAR: IOMMU enabled
...
[    0.789391] DMAR-IR: Enabled IRQ remapping in x2apic mode
...
[    2.319816] DMAR: Intel(R) Virtualization Technology for Directed I/O

如果有错误提示,自己想办法解决一下。
我之前发现有提示 x2apic没打开,bios里操作一下,就没有什么错误了。

看一下iommu的分组:

find /sys/kernel/iommu_groups/ -type l
/sys/kernel/iommu_groups/91/devices/0000:82:00.1
...
/sys/kernel/iommu_groups/90/devices/0000:82:00.0

确保GPU PCI不要和不相关设备在相同组里。

禁止host驱动GPU

nano /etc/modprobe.d/pve-blacklist.conf

添加:

options vfio_iommu_type1 allow_unsafe_interrupts=1
options kvm ignore_msrs=1
options kvm-intel nested=Y
blacklist nouveau
options nouveau modeset=0
blacklist nvidiafb
blacklist amdgpu
blacklist radeon
blacklist nvidia
blacklist snd_hda_codec_hdmi
blacklist snd_hda_intel
blacklist snd_hda_codec
blacklist snd_hda_core

保存

    update-initramfs -u -k all && reboot now

启动好,检查一下相应设备是否没有驱动程序。

    lspci -nnk
82:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP106 [GeForce GTX 1060 5GB] [10de:1c04] (rev a1)
        Subsystem: ZOTAC International (MCO) Ltd. GP106 [GeForce GTX 1060 5GB] [19da:4437]
        Kernel modules: nvidiafb, nouveau
82:00.1 Audio device [0403]: NVIDIA Corporation GP106 High Definition Audio Controller [10de:10f1] (rev a1)
        Subsystem: ZOTAC International (MCO) Ltd. GP106 High Definition Audio Controller [19da:4437]
        Kernel driver in use: snd_hda_intel  <------- 这个是示例一下,上面正确列入黑名单,这里消失的
        Kernel modules: snd_hda_intel

上面信息中 须没有 “Kernel driver in use” 字样,表示GPU没有被驱动。

至此,host机已经搞好了,显卡已经放开了。

为VM添加PCI显卡设备

VM -> 硬件 -> 添加PCI设备

找到Nvidia字样项目,不要添加附属音频设备。

VM硬件中,添加USB设备,有鼠标键盘什么的添加上(假如直通成功,可以直接鼠标键盘登录)。

VM启动,看看显示器是否会有变化,如果依然黑屏,那么通过VNC或者远程桌面进入系统。

VM内安装显卡驱动

远程桌面进入系统,设备管理器里面应该出现有问题的PCI硬件,为其安装GPU驱动。

如果继续黑屏,显卡错误码43,那么尝试为虚机挂vbios的rom。

VM挂载vbios的ROM

感谢大神提供的 NVIDIA vBIOS VFIO 修补程序(此工具仅与 NVIDIA GPU 的 Pascal 系列 (1xxx) 兼容)。

下载:

https://github/Matoking/NVIDIA-vBIOS-VFIO-Patcher/raw/master/nvidia_vbios_vfio_patcher.py

放入辅助机器的共享目录(PVE中直接下载github文件可能会有困难,所以先想办法下载下来,在本地转给PVE)。

PVE shell中:

cd /usr/share/kvm
wget http://192.168.31.xxx/nvidia_vbios_vfio_patcher.py
python3 nvidia_vbios_vfio_patcher.py -i nvidiaGTX1060_gpuz_dump.rom -o nvidiaGTX1060_gpuz_dump_patched.rom

上面是对GPU的vbios做补丁处理,我猜是PVE的虚拟机BIOS需要引导GPU所以需要vbios吧。

下面在虚拟机配置文件中挂上该ROM。

nano /etc/pve/qemu-server/100.conf

#相应行改动,romfile参数缺省路径是 /usr/share/kvm
hostpci0: 0000:82:00,pcie=1,romfile=nvidiaGTX1060_gpuz_dump_patched.rom

保存,重启虚拟机。

保佑你能点亮屏幕。

注意:为虚拟机提供vbios的Rom是最为关键的步骤。使用这个步骤,我很早就成功的将显示器点亮,一度以为接近成功(能进入win界面)。当时情况是:分辨率始终很低,且有小光标始终存在(win界面下始终闪烁),设备管理器中始终异常43,即使禁止显卡设备,显示器依然显示。
我估计是参数没有设定到位。

https://ghost.adrianpazon/proxmox-gpu-passthrough/ 该教程平台与我类似,参考作者提供的参数,才完美驱动显卡。

如果你不行,我也没辙了,看看第二段是否有参考价值吧。

第二段:入各种坑指南

如果你没有搞定,但是依然打算慢慢来,打持久战,那么我会给一些指点,让你进坑快点。
下面的内容不分先后,可能在合适的时候你才能发现它的作用。

先看看 稍微靠谱点的教程

权威参考,官方的材料一定要细心研读,搞明白各阶段操作意义之前,不要过多追求网络上教程:
https://pve.proxmox/pve-docs/pve-admin-guide.html#qm_pci_passthrough

reddit详细教程,可以参考:
https://www.reddit/r/homelab/comments/b5xpua/the_ultimate_beginners_guide_to_gpu_passthrough/

强烈建议,显卡安装显示器

不要用HDMI欺骗器。
屏幕显示内容变化,可以体会各个操作阶段显卡的反应,慢慢就能感受到驱动的状态了。

PVE启动的时候显示器会显示内容,如果PVE加载了驱动,那么会进入高分辨率模式;

在禁止host驱动显卡步骤完成之后,再重启host,就不会进入高分辨率模式了,而且也不会再有login的光标闪烁;

启动VM时,会先显示proxmox的黄黑BIOS界面,如果你能在屏幕上看到,那么就离成功不远了。

如果你要卸载显卡驱动,请用DDU

显卡驱动分版本,我在测试不同版本驱动时,需要在安全模式下使用DDU来卸载。

VM虚机的参考配置

web图形界面配置VM,收敛的参数都在这个文件里:/etc/pve/qemu-server/xxx.conf。

参考我的VM完整配置:

PVE -> shell

nano /etc/pve/qemu-server/100.conf
agent: 1        #guestAgent
bios: ovmf
cpu: host
sockets: 2
cores: 8
machine: pc-q35-6.0
efidisk0: local-lvm:vm-100-disk-1,size=4M
ide0: local:iso/virtio-win-0.1.217.iso,media=cdrom,size=519096K
ide2: local:iso/Win10_x64_enterprise_2019LTSC.iso,media=cdrom
memory: 32768
name: win10Nvidia
net0: virtio=9A:B0:30:A2:EE:56,bridge=vmbr0
numa: 1
ostype: win10
scsi0: local-lvm:vm-100-disk-0,cache=writeback,size=52G
scsihw: virtio-scsi-pci
smbios1: uuid=6e79f1a3-68be-43f6-99ad-33b9794c304c
usb0: host=2-4,usb3=1
vga: none
vmgenid: 5625cecf-026a-4a79-99ef-cb9fbaa48ce3
boot: order=scsi0;ide2;net0;ide0
hostpci0: 0000:82:00,pcie=1,x-vga=1,romfile=nvidiaGTX1060_gpuz_dump_patched.rom

N卡驱动很重要,一要支持虚拟化,二要防止负优化,请选择合适版本

nvidia声称R465以后版本驱动都可以支持单显卡直通:

https://nvidia.custhelp/app/answers/detail/a_id/5173/~/geforce-gpu-passthrough-for-windows-virtual-machine-%28beta%29

Q: Which driver is GeForce virtualization (beta) supported on?
A: GeForce virtualization (beta) is supported on R465 or higher drivers.

Q: Which GeForce GPUs and Windows OSes support virtualization?
A: The feature is enabled on all GeForce/TITAN GPUs supported in the R465 driver (Kepler and later for Desktop; Maxwell and later for Notebook) for Windows 10.

且有牛人对GTX1060做了全面驱动测试,参见: https://www.bilibili/read/cv16150421

结论很清晰,我选择了 466.77版本。

关闭不了的虚拟机 怎么办

关闭不了的虚拟机一般都是被lock了,使用

qm unlock 101
qm stop 101

若反馈

Error: can’t lock file ‘/var/lock/qemu-server/lock-101.conf’ – got timeout

在PVE的console中:

ls /run/lock/qemu-server

反馈类如:

lock-100.conf  lock-101.conf  lock--1.conf

删除相应文件即可:

rm -f /run/lock/qemu-server/lock-101.conf
qm stop 101

绝望了么,还有一线生机~

可以在PVE的shell中,使用下面命令跟踪错误:

dmesg --follow

绝望时必备。

我用它的提示,找到可能的错误,反复测试,挑选出适合自己的配置。

最后成功之后,该指令就没有太多的错误了。

GPU bios 网上也可以下载到,实际测试然并卵

有教程在讨论vbios的来源时提到可以直接去下载vbios,
下载地址:https://www.techpowerup/vgabios

我的是Zotac GTX10605GD5 毁灭者M1
https://www.techpowerup/vgabios/239764/239764
https://www.techpowerup/vgabios/201568/201568

看着型号再一致,实测没用,后来还是使用gpuz提取自己的显卡的rom才搞定的。这里提一嘴。


搞显卡直通,我遇到了很多困难,也许你会运气很好,加油吧~

20220525 ws_d1 记录完毕

更多推荐

双路E5平台PVE7.0系统GTX1060 显卡直通

本文发布于:2023-04-13 22:24:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/80bc8485bf1de7f4df46f46bc86829d3.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:显卡   系统   平台   双路

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 73765文章数
  • 14阅读数
  • 0评论数