ESXi 7.0 + R8168 / R8169 安装笔记

在一台不受支持的设备上安装 ESXi 是一件很考验运气的事。运气不好的我就发现电脑自带的网卡是 Realtek R8168 —— 一张 ESXi 不再支持的网卡。

在 ESXi 6.x 时代,我们可以添加 net55-r8168 驱动让 ESXi 支持这张网卡,但 ESXi 7.x 禁用所有依赖 Linux 的驱动后,这个方法就行不通了。

USB Network Native Driver for ESXi

USB NIC

幸运的是,ESXi 现在提供了几款热门 USB 网卡的原生驱动(ASIX88179, RTL8152/RTL8153, AQC111U)。我们可以购买一个支持的 USB NIC 适配器,然后制作包含 VMKUSB-NIC-FLING 驱动的镜像来安装 ESXi。

安装流程可以参考 Tips for using USB Network Adapters with VMware ESXi

安装后,如果每次开机后都要重新勾选网卡才能联网,则需要参考这里,添加开机脚本,使系统自动识别 USB 网卡:

# /etc/rc.local.d/local.sh

vusb0_status=$(esxcli network nic get -n vusb0 | grep 'Link Status' | awk '{print $NF}')
count=0
while [[ $count -lt 20 && "${vusb0_status}" != "Up" ]]
do
    sleep 10
    count=$(( $count + 1 ))
    vusb0_status=$(esxcli network nic get -n vusb0 | grep 'Link Status' | awk '{print $NF}')
done

esxcfg-vswitch -R

R8168 Passthrough

为了不浪费原先 R8168 网卡的网口,同时提升性能(USB 网卡会影响性能),我们可以将 R8168 网卡直通(Passthrough)到 ESXi 中的某一台虚拟机中继续使用。

然而实际配置好后,这张破网卡又开始出问题了——每隔几分钟就会断一次网。此时在虚拟机的 /var/log/kern.log 可以看到如下错误:

ubuntu kernel: [ 2581.050902] ------------[ cut here ]------------
ubuntu kernel: [ 2581.050905] NETDEV WATCHDOG: ens100 (r8169): transmit queue 0 timed out
ubuntu kernel: [ 2581.050921] WARNING: CPU: 0 PID: 0 at net/sched/sch_generic.c:472 dev_watchdog+0x270/0x280

搜索后发现可能是 Linux 自带的驱动有问题。我们可以安装 Realtek 提供的驱动尝试解决。在 Ubuntu 下使用 apt 命令即可直接安装:

apt install r8168-dkms

重启后问题解决。

Coxxs

发表回复

您的电子邮箱地址不会被公开。