6

ESXi 安装USB网卡驱动

 3 years ago
source link: https://www.wyr.me/post/666
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

通过给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代码之前。


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK