ESXi 安装USB网卡驱动

科学上网 - IYIO.NET

通过给ESXi宿主机安装USB驱动,可以实现兼容虚拟机无法驱动的硬件。如果虚拟机本身已经兼容了该硬件,可以参考《ESXI+爱快+OpenWRT 使用2.5G USB网卡 RTL8156》设置USB芯片组直通,获得更好的性能体验。

驱动下载地址 vmware官网下载

注:
根据官网说明,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网卡添加到虚拟交换机。

科学上网 - IYIO.NET

添加端口组

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

科学上网 - IYIO.NET

新建网络适配器

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

科学上网 - IYIO.NET

检查适配器状态

科学上网 - IYIO.NET

重新打开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代码之前。


发表评论

© IYIO.NET. All rights reserved. Developed by IYIO.NET