NUC 10 上配置 ESXi 虚拟机的显示输出

2021-04-14 coding ESXi NUC hypervisor VT-D VT-X Hardware Virtualization

NUC10 是一个非常小巧的主机,具有一个HDMI 2.0b 和两个基于 USB Typc-C的DP 1.4 接口,显示接口不可谓不丰富。可是,当我们在 NUC 10 上安装了 ESXi 系统后,默认显示输出是 ESXi DCUI 的界面。我们很难把Windows 10虚拟机内的内容直接通过 HDMI 或者 DP 接口输出到显示器上。

踩坑-使用 Type-C 扩展坞

我之前尝试过使用 Type-C 扩展坞,我的思路是:ESXi能够将USB设备直连给虚拟机使用,那么只要将HDMI转换器的直通给Windows 10 虚拟机,就可以输出画面了。 可是事实证明我的想法太美好了,当我把扩展坞接到NUC10 上的时候,ESXi 根本找不到HDMI转换器的USB 设备,HDMI接口输出的内容依旧是 DCUI 界面。

后来,我想明白原因了。我的这款绿联的 Typc-C 扩展坞的显示芯片是 IT6564,是一款将 DP(Type-C)转换为HDMI、VGA的转换器。也就是说,显示的数据之间通过DisplayPort协议输出,而根本不是USB 协议,也没有办法直通给虚拟机使用。 DisplayPort 依旧是连接在CPU 的核心显卡上的,因此输出的内容就是ESXi 的 DCUI 界面。

解决

发现了问题所在,那么解决办法就非常明确了。 其实最佳解决办法就是直接购买一个基于雷电3接口的外接显卡坞,直接将显卡直通给Windows 10虚拟机,然后就通过独立显卡的HDMI接口就能直接输出显示内容给显示器了。

可是购买一个独立显卡扩展坞是非常昂贵的。在当今(21年4月)的这个时间点,显卡价格都被炒上天了,现在购买显卡是非常不明智的。 另外,我个人是没有太多游戏需求的,对显卡的要求并不高。购买一个独立显卡扩展坞似乎有一点浪费了。

因此,最终,我选择了购买一个基于USB 3.0 的带有外置显卡的HDMI转换器。归根到底,受限于 USB 3.0 接口的带宽,这样的显示效果显然是比不上独立显卡坞,但是胜在体积小巧、价格便宜。

我购买的型号是 j5create JUA365,价格大概在 300 块钱左右,体积倒是很小巧。这个转换器内部是内置一个 USB 3.0 协议的独立小显卡,支持 4K 30 帧以及 2K(2048x1152) 60帧的两个HDMI输出。

当我把这个设备接入到USB 3.0 接口上的时候,ESXi 可以识别到一个 USB 设备。我们将这个设备直通给Windows 10 虚拟机后,Windows 10 系统会自动安装驱动便能够正确的显示输出了。

值得注意的是,如果在之前开启了核心显卡直通并设置了 hypervisor.cpuid.v0 = FALSE, 那么此时显示器虽然接收到了信号,但是却无法使用。只有放弃核心显卡直通,将hypervisor.cpuid.v0设置为TRUE 才能够正确显示。

取舍问题: 目前笔者没有弄清楚为什么,但是核显直通和外接显示器并不能够互相兼容。 当我们需要核显显卡进行编解码的时候,我们可以将其设置为核显直通,已获得最佳的3D和编解码性能。但是此时我们只能远程登录进系统,显示效果其实并不大好。 当我们需要外接显示器的时候,我们只能够打开 ESXi 提供的硬件加速的 SVGA 显卡(记得开启硬件 3D 加速),此时显卡的计算能力虽然比较弱,但是可以外接显示器,也获得不错的显示效果。

其他解决办法(未正式)

其实,如果不拘泥与 ESXi 系统的话,那么可以使用 PVE 作为 Hypervisor 操作系统。因为在 PVE 系统中同样可以将核心显卡直通给虚拟机使用。不仅如此,我们还可以设置核心显卡映射到虚拟机中的的PCI-E地址固定为 0000:00:02.0 (和物理显卡PCI-E地址相同),那么理论上我们就可以直接使用内置的 HDMI 接口了。

如果是特别看重显示输出的话,那么也可以考虑使用 Windows Server 作为 Hypervisor 操作系统。

本人保留对侵权者及其全家发动因果律武器的权利

版权提醒

如无特殊申明,本站所有文章均是本人原创。转载请务必附上原文链接:https://www.elliot98.top/post/tech/esxi-igpu-hdmi-output/

如有其它需要,请邮件联系!版权所有,违者必究!