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

您所在的位置:网站首页 1060显卡驱动黑屏 双路E5平台PVE7.0系统GTX1060 显卡直通

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

2023-08-16 10:18| 来源: 网络整理| 查看: 265

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

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

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

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

在这里插入图片描述

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

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

第一段:无脑操作指南

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

类别项目备注CPU2680v4 x2咸鱼装机卖家主板x99华南金牌f8dDDR4三星ECC2133 128G16Gx8 镁光散热器冰弘6管单扇HD金士顿500GHD海康紫盘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 硬件 -> 添加PCI设备

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

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

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

VM内安装显卡驱动

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

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

VM挂载vbios的ROM

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

下载:

https://github.com/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.com/proxmox-gpu-passthrough/ 该教程平台与我类似,参考作者提供的参数,才完美驱动显卡。

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

第二段:入各种坑指南

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

先看看 稍微靠谱点的教程

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

reddit详细教程,可以参考: https://www.reddit.com/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.com/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.com/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.com/vgabios

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

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

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

20220525 ws_d1 记录完毕



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3