
通过给ESXi宿主机安装USB驱动,可以实现兼容虚拟机无法驱动的硬件。如果虚拟机本身已经兼容了该硬件,可以参考《ESXI+爱快+OpenWRT 使用2.5G USB网卡 RTL8156》设置USB芯片组直通,获得更好的性能体验。
注:
根据官网说明,flings是实验性的,不应该用于生产环境。
支持的ESXi版本:6.5.0,6.7.0,7.0.0,7.0.1。建议升级到ESXi 7.0 Update 1以获得最佳体验。低版本可能导致重启后USB网卡无法正常工作且无法恢复。
支持的网卡型号
- ASIX USB 2.0千兆网络ASIX88178a
- ASIX USB 3.0千兆网络ASIX88179
- Realtek USB 3.0千兆网络RTL8152 / RTL8153
- Aquantia AQC111U
具体支持的型号远不止以上列出的。根据Realtek官网给出的RTL8152 USB NIC驱动,可以看到RTL8156也是被支持的(在绿联2.5G usb网卡实测通过)。可以确定兼容型号:
- RTL8150
- RTL8152 / RTL8152B (10/100M Fast Ethernet > USB 2.0)
- RTL8154 / RTL8154B (10/100/1000M Gigabit Ethernet > USB 2.0)
- RTL8153 / RTL8153B (10/100/1000M Gigabit Ethernet > USB 3.0)
- RTL8156 / RTL8156B (2.5G Gigabit Ethernet > USB 3.0)
- AX8817x
(2021年03月14日,LEDE正式支持RTL8152)
根据上述驱动中的r8152.c文件部分代码,推测还支持以下型号(未实测)。
/* table of devices that work with this driver */ static const struct usb_device_id rtl8152_table[] = { /* Realtek */ {REALTEK_USB_DEVICE(VENDOR_ID_REALTEK, 0x8050)}, {REALTEK_USB_DEVICE(VENDOR_ID_REALTEK, 0x8152)}, {REALTEK_USB_DEVICE(VENDOR_ID_REALTEK, 0x8153)}, {REALTEK_USB_DEVICE(VENDOR_ID_REALTEK, 0x8155)}, {REALTEK_USB_DEVICE(VENDOR_ID_REALTEK, 0x8156)}, /* Microsoft */ {REALTEK_USB_DEVICE(VENDOR_ID_MICROSOFT, 0x07ab)}, {REALTEK_USB_DEVICE(VENDOR_ID_MICROSOFT, 0x07c6)}, /* Samsung */ {REALTEK_USB_DEVICE(VENDOR_ID_SAMSUNG, 0xa101)}, /* Lenovo */ {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x304f)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3052)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3054)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3057)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3062)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3069)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3082)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3098)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x7205)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x720a)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x720b)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x720c)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x7214)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x721e)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x8153)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0xa359)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0xa387)}, /* TP-LINK */ {REALTEK_USB_DEVICE(VENDOR_ID_TPLINK, 0x0601)}, /* Nvidia */ {REALTEK_USB_DEVICE(VENDOR_ID_NVIDIA, 0x09ff)}, /* LINKSYS */ {REALTEK_USB_DEVICE(VENDOR_ID_LINKSYS, 0x0041)}, {} };
安装方法
参考https://flings.vmware.com/usb-network-native-driver-for-esxi#instructions进行安装,不再赘述。
需要注意的是:
esxcli software component apply -d
后面必须跟着绝对路径,否则将导致驱动安装失败。esxcli software vib install -d
也一样。- 必须参考
Persisting USB NIC Bindings
进行配置。否则重启后USB网卡无法正常工作。
绑定到OpenWRT
以绑定到LEDE为例,说明当虚拟机不兼容USB网卡的时候,如何通过ESXi驱动该网卡。
添加虚拟交换机
将USB网卡添加到虚拟交换机。

添加端口组
在上一步添加的虚拟交换机的基础上,添加端口组。

新建网络适配器
将虚拟机关机,然后添加网络适配器
,选择对应的端口组。

检查适配器状态

重新打开OpenWRT虚拟机。在lan口可以看到多出来了几个网卡。其中前几个就是虚拟网卡。添加新的网络适配器会打乱OpenWrt的以太网适配器顺序,可以进入SSH通过ifconfig -a
查询Mac地址来识别网卡。
默认虚拟网卡的速率是万兆的。虚拟交换机搭建起了虚拟万兆网卡和USB网卡通讯的桥梁。
其它
需要特别注意的是,如果你有一张或多张网卡,在进行Persisting USB NIC Bindings
设置的时候,需要相应改写代码。如果是参考上述内容进行了虚拟交换机设置,则启动时还需要以代码的方式控制虚拟交换机
和端口组
。参考代码:
if [ "${vusb0_status}" = "Up" ]; then esxcfg-vswitch -L vusb0 vSwitch1 esxcfg-vswitch -M vusb0 -p "VM USB0" vSwitch1 fi
请注意,无论是官方给出的Persisting USB NIC Bindings操作,还是上述示例代码,都必须添加到done代码之前。