10
2022
11
10:18:14

ESXi 7.0 开启 NVIDIA 2070 显卡直通 Win10 - 折腾成功的经历

c27417602147c775f807aaa067be8f54_v2-b1c586825f70e1a26eb1d91aaca8c3b4_1440w_source=172ae18b.jpg

Keywords: ESXi 7.0.3, NVIDIA GeForce 2070, Passthrough, Windows 10, walkthrough, no OpenCL

https://zhuanlan.zhihu.com/p/558154956

搜了半天攻略没想到最后有个大坑,写一下。本文部分文字借用自参考资料

0. 食用本文之前,假设你已经安装好了ESXi 7.0,并在里面装好了Windows虚拟机。本文不包括这一部分

1. 在机箱里装好显卡

2. 在管理—>硬件PCI设备中搜索nvidia,勾选其中一个后,选择切换直通 。这里我遇到一个很扯淡的情况,就是我的2070显示的4个设备里,随便勾选哪一个,四个勾选框就开始疯狂跳动,网页也基本卡死,点不到切换直通,换了浏览器也不行。最后多刷新几次,勾选了过后马上点才点到了。刷新看下,显示“活动”就弄好了。这步完成后不用重启。

image.png


3. 打开SSH(主机-操作-服务-启用SSH),然后ssh进入ESXi

3.1 输入 lspci -v | grep NVIDIA -A1 找到显卡

[root@localhost:~] lspci -v | grep NVIDIA -A1
0000:03:00.0 Display controller VGA compatible controller: NVIDIA Corporation TU106 [GeForce RTX 2070]
         Class 0300: 10de:1f02
--
0000:03:00.1 Multimedia controller Audio device: NVIDIA Corporation TU106 High Definition Audio Controller
         Class 0403: 10de:10f9
--
0000:03:00.2 Serial bus controller USB controller: NVIDIA Corporation TU106 USB 3.1 Host Controller
         Class 0c03: 10de:1ada
--
0000:03:00.3 Serial bus controller : NVIDIA Corporation TU106 USB Type-C UCSI Controller
         Class 0c80: 10de:1adb

找到你显卡最主要的那一条,就是有显卡型号的那一条,比如我这里就是第一条。

然后记录下两个信息,

(1) 第一行开始0000开头的数字,比如我这里是 0000:03:00.0

(2) 第二行的Class最后面的两堆数字,比如我这里是 10de 和 1f02


3.2. 编辑这两个文件

echo '/device/0000:03:00.0/owner = "passthru"' >> /etc/vmware/esx.conf 

echo '10de  1f02  bridge   false' >> /etc/vmware/passthru.map
echo '10de  1f02  link     false' >> /etc/vmware/passthru.map
echo '10de  1f02  d3d0     false' >> /etc/vmware/passthru.map

其中第一个命令里device后面的序号 和 后面命令里前面两列echo的信息,换成你显卡的上面记录的信息。完成后退出SSH,现在仍然不用着急重启。


6. 打开虚拟机设置,重点为

6.1 预留全部内存

8937434264e9b9bb88629755fb4738ab_v2-f2a40ac0f7608d5f7c75282dcb889951_r.jpg
这是借的别人的图,7.0是一样的

6.2 添加高级参数:虚拟机选项——>高级——>编辑配置参数——>添加参数(hypervisor.cpuid.v0:FALSE

e0d9e03dd4ac7a4b6de2f16e9802a26c_v2-27aa334360ed58dd73cdb6c78de31bb9_r.jpg

6.3 添加显卡进虚拟机:添加其它设备——>PCI设备 ,有多少加多少,比如上面我的显卡是4条,那就添加4个。如果提示不能添加,则需要关闭[虚拟机选项]里的VBS(基于虚拟化的安全性),和关闭CPU选项下面的所有“向客户机操作系统公开***”

739189f5da83e35b900f981926fdcc3d_v2-0ec61eaf8dc0aec9350ac893c9a9c5a6_r.jpg

7. 重启主机,完成后重启虚拟机。进设备管理器,【显示适配器】一开始可能识别到了,但是没装驱动所以显示出一个很怪的名字,不担心,直接等一会刷新,win10会自动装驱动

dd6895edc70088f42479cb83265ffb87_v2-e1b9cee05b5004c53fa47182514dac0e_r.jpg
借的图,我是2070的卡

8. 上面都是基本公开的攻略。重点来了,下面我遇到的坑。首先虽然在设备管理器里有显卡,任务管理器里也显示,但使用率极低,打开视频或者游戏还是CPU狂装,gpu不动。

解决方案:在显卡上插个显示器,或者插一个显卡欺骗器(淘宝),然后注意,【在win10里面重启电脑】,不要用ESXi控制重启win10。

重启后,win10会检测到两个显示器,只保留其中显卡对应的拿一个。显示设置里,选择【仅在2上显示】,不行就改用另一个。怎么看改好没有——打开任务管理器,查看GPU,点击开始菜单,看看gpu负载上去没有,上去了就对了。否则,重新选一下显示的屏幕

e00dbdc718e44201c13a1d9841ce6f0a_v2-7937ca3df527b441426fdd0d2fd5f400_r.jpg


9. 我还遇到另一个问题,就是这之后只要在ESXi里重启了win10,就会识别不出来显卡(任务管理器里没有)。解决也很简单,在win10内部重启一次即可。


10. 后续坑1:没有OpenCL。在GPU-Z里显示OpenCL不可用;passmark跑分也显示OpenCL不可用;命令行直接输入clinfo不报错但完全无输出。查了大量资料过后终于找到了解决(下面参考资料2)

方法:

(1) 在system32下搜索(也可直接用everything搜索)nvopencl,找到nvopencl32.dll和nvopencl64.dll两个文件的路径

(2) 打开注册表编辑器,展开到 HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors 。这里如果Khronos下面没有OpenCL目录,则需要手动添加。在Vendors下添加一个Dword32键

键的名称为上面搜到的nvopencl64.dll的路径,比如我的是C:\Windows\System32\DriverStore\FileRepository\nvmii.inf_amd64_995a8ca55addcada\nvopencl64.dll

键值为0即可

(3) 注册表编辑器展开到 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Khronos\OpenCL\Vendors],添加一个Dword32键

键的名称为上面搜到的nvopencl32.dll的路径,比如我的是C:\Windows\System32\DriverStore\FileRepository\nvmii.inf_amd64_995a8ca55addcada\nvopencl32.dll

键值为0即可

然后命令行输入clinfo就有一大堆信息了,GPU-Z显示OpenCL启用,passmark跑分不报错。


主要参考资料:

  1. https://blog.csdn.net/weixin_45409343/article/details/122478397

  2. windows-opencl-call-failed" class=" wrap external" target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043" style="text-decoration-line: none; cursor: pointer; border-bottom: 1px solid rgb(128, 128, 128);">Windows: opencl call failed





推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/2890.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: