轶哥

📚 Having fun with AI Agent. Always learning.

    ESXi 安装USB网卡驱动
    •   更新:2022-04-24 07:24:15
    •   首发:2021-03-02 14:26:05
    •   教程
    •   30447

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

    驱动下载地址: https://flings.vmware.com/usb-network-native-driver-for-esxi

    注: 根据官网说明,flings是实验性的,不应该用于生产环境。

    支持的ESXi版本:6.5.0,6.7.0,7.0.0,7.0.1。建议升级到ESXi 7.0 Update 1以获得最佳体验(参考《ESXi 7.0.0 升级到 ESXi 7.0 Update 1》)。低版本可能导致重启后USB网卡无法正常工作且无法恢复。

    Linux系统参考《Linux 2.5G USB网卡驱动安装RTL8156/8156B》。

    支持的网卡型号

    • 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文件部分代码,推测还支持以下型号(未实测)。查询USB网卡实际芯片型号,参见文章《Linux安装无线网卡驱动通用方法》。

    /* 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驱动该网卡。

    添加虚拟交换机

    image.png

    将USB网卡添加到虚拟交换机。

    添加端口组

    image.png

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

    新建网络适配器

    image.png

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

    检查适配器状态

    image.png

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

    打赏
    交流区

    暂无内容

    尚未登陆
    发布
      上一篇 (ESXi无法添加网络适配器问题解决)
    下一篇 (ESXi 7.0.0 升级到 ESXi 7.0 Update 1)  

    评论回复提醒