前言

闲着没事,今天看到了那个经典图片放大工具——Waifu2x,想起来这玩意好像可以自己部署到本地,于是我就看了一下,发现需要N卡的CUDA技术支持,然后我想着是在服务器上部署,于是我就顶着我服务器破硬盘掉盘的风险(最后还是掉盘了,焯),再试了一次显卡直通。为啥要说再?其实之前有试过,但是当时没成功,而且也掉盘,搞得我很难受,就放弃了,主要是老报错43,后来查的时候说是显卡不支持巴拉巴拉的,就放弃了。今天尝试了一下,发现其实是支持的,当然也成功了(不然哪有这文章),主要是之前有一个步骤没做好,所以一直报错。那么现在就开始写下操作记录。

正文

准备工具

1.ESXi服务器(本人测试环境是ESXi6.7)
2.显卡一张(A卡和N卡有点小差别,后面说一下,这里用的是GT730)

操作步骤

1.首先把显卡插上(这不是废话么),然后在ESXi的web配置界面获取需要用的东西,并启用直通。
具体操作:
管理-硬件-PCI设备,找到你要直通的显卡。点上前面的勾,然后点击启用直通
显卡一般都会有个配套的音频处理的设备,一般点击其中一个,两个都会自动勾选上。这里需要获取显卡设备部分的一些信息,由于强制自动勾选两个的原因,需要使用搜索功能,不然当两个都勾选上的时候就会无法看到具体信息
例如我这里是GT730,下面是我设备信息:

名称参数名称参数
显卡名称GF108 [GeForce GT 730]
ID0000:04:00.0Vendor NameNVIDIA Corporation
Device ID0xf02Class ID0x300
Vendor ID0x10deSubdevice ID0x0
Function0x0Subvendor ID0x0
Bus0x4Slot0x0

这里需要记住两个加粗的信息:Device IDVendor ID,后面会有用。
此处完成后先重启一下服务器。

2.使用ssh连接到ESXi命令行后台,修改相关配置信息。
命令行输入:/etc/vmware/passthru.map,然后拉到后面,找到#Nvidia,如果没有就手动添加。
一般情况下会显示以下内容:

# NVIDIA
10de  ffff  bridge   false

这里解释一下每4个部分:
10de:是设备的供应商ID
ffff:是设备的硬件ID
bridge:是连接模式,模式有三个:link、bridge、d3d0
false:(不是很清楚,这里先保留)

然后回去看下第一步记录的Vendor IDDevice IDVendor ID对应的是设备的供应商ID,Device ID对应的是设备的硬件ID,那么就可以直接插入内容,以我上面的GT730为例:

# NVIDIA
10de  ffff  bridge   false
10de  0f02  link     false
10de  0f02  bridge   false
10de  0f02  d3d0     false

有三点需要注意:
首先,第一步获取的ID,0x是不用写上去的,只需要写后面部分;
其次,有些Device ID或者Vendor ID只有三位数,最好直接再前面补一个0,例如我这里本来是f02的,我在前面补一个0组成0f02作为参数填写进去;
最后,就是连接模式,这个连接模式三个的区别是什么我不清楚,不过网上有人说写link,也有人说只写d3d0,具体我也不知道,我个人只写了iink和d3d0,也测试可用,如果不行最好都加上看看。

AMD的区别主要是在这一步上面,就是配置这个信息会有点出入,其他操作都是一样的。

完成这里之后再重启一次。

3.虚拟机添加显卡设备。
虚拟机关机状态下,打开编辑模式,选择增加其他设备,选择新PCI设备,然后找到你要直通的显卡设备,选择保存。
然后再进入编辑模式VM选项,找到高级,找到配置参数,编辑配置,添加以下参数:

Key键Value值
hypervisor.cpuid.v0FALSE

最后保存,启动虚拟机,安装相关驱动即可

总结

百度下来有很多问题,普遍教程都是抄自CSDN这坑货,都缺少了中间第二步的内容,所以每次弄完都是43错误码,然后第二步的内容很多都是省略,只告诉你在这个文件里面输入这些内容,没有具体说清楚这些ID怎么来,这次直接写一个整体的,方便以后自己查阅。现在距离我以后想搞虚拟服务器在家做网吧更进一步了。

参考文献

1.ESXi直通NVIDIA GeForce显卡
2.ESXI直通显卡的那些事