在一台不受支持的设备上安装 ESXi 是一件很考验运气的事。运气不好的我就发现电脑自带的网卡是 Realtek R8168 —— 一张 ESXi 不再支持的网卡。
在 ESXi 6.x 时代,我们可以添加 net55-r8168 驱动让 ESXi 支持这张网卡,但 ESXi 7.x 禁用所有依赖 Linux 的驱动后,这个方法就行不通了。
USB Network Native Driver for ESXi
幸运的是,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
叉叉你好,我是你的熟人(过去的,五六年啦,不知道你能不能猜出来
:))现在我在做运维的工作哦
我记得以前你有一个站status.c**.me,是您的服务的监控面板,记得当时是开源的来着,目前有需要用到,但我并没有在你的Github找到他,您方便再公开一下吗。