Home

【VMware ESXi】ESXi 8.0U3h 集成 Realtek 网卡驱动 Fling 并解决安装后无网卡

最近在一台使用 Realtek 网卡的机器上安装 ESXi 8.0U3h,遇到了一个比较典型的问题:原版 ISO 可以启动安装程序,但安装过程中和安装完成后都无法正常识别网卡。

这类问题在家用主板、小主机、软路由硬件上比较常见。ESXi 8.x 官方镜像默认不一定包含对应 Realtek 网卡驱动,所以需要把 Realtek Network Driver Fling 集成进安装介质。

本文记录这次完整处理过程,包括 ISO 集成、启动失败修复、安装后 DCUI 无网卡的原因,以及最后如何把驱动持久化到 ESXi 的 bootbank。

参考文章:

Installing Realtek Network Driver Fling using Free ESXi 8.0 Update 3e ISO

驱动下载

Realtek Network Driver Fling 的下载入口不太好找,这里把本次使用的驱动包单独整理出来,方便后续复现。

校验值如下:

365b5b2ee604111ea651dd123d8d7167bd1513a20ec217520d26923395cfba9d  VMware-Re-Driver_1.101.01-5vmw.800.1.0.20613240.zip
9b82f310947d62d98f52879a2f72161ac539f516f432c4542f4bb2b277b83124  IFRE.V00

环境信息

本次使用的文件如下:

VMware-VMvisor-Installer-8.0U3h-25067014.x86_64.iso
VMware-Re-Driver_1.101.01-5vmw.800.1.0.20613240.zip

注意:William Lam 原文示例是 ESXi 8.0 Update 3e,我这里实际使用的是 ESXi 8.0 Update 3h。处理思路相同,但文件名和版本号需要按自己的 ISO 为准。

问题现象

原版 ISO 安装时看不到网卡,或者安装完成后进入 DCUI 页面,在 Network Adapters 中没有任何物理网卡。

这里要注意一个判断点:即使没有插网线,ESXi 也应该能看到物理网卡接口,只是 Link 状态可能是 Down。如果 DCUI 中完全没有 vmnicX,说明驱动没有加载成功,和网线是否插入没有直接关系。

一、从 Realtek Offline Bundle 中提取驱动

下载到的 Realtek 驱动是一个 offline bundle zip,里面包含真正的 VIB 文件。

先查看压缩包内容:

unzip -l VMware-Re-Driver_1.101.01-5vmw.800.1.0.20613240.zip

可以看到其中包含:

vib20/if-re/vmw_bootbank_if-re_1.101.01-5vmw.800.1.0.20613240.vib

解出 VIB:

mkdir -p work/extract work/vib
unzip -q VMware-Re-Driver_1.101.01-5vmw.800.1.0.20613240.zip 'vib20/if-re/*.vib' -d work/extract

VIB 本质上可以用 ar 解开:

cd work/vib
ar x ../extract/vib20/if-re/vmw_bootbank_if-re_1.101.01-5vmw.800.1.0.20613240.vib

解开后能看到:

descriptor.xml
ifre
sig.pkcs7

其中 ifre 就是后面需要放进 ESXi 启动介质里的驱动 payload。为了和 ESXi 启动模块命名保持一致,将它复制为 IFRE.V00

cp work/vib/ifre work/iso-add/IFRE.V00

二、修改 BOOT.CFG 加载 IFRE.V00

ESXi ISO 中有两份启动配置需要关注:

/BOOT.CFG
/EFI/BOOT/BOOT.CFG

其中 modules= 行列出了启动时要加载的所有模块。需要在这一行末尾追加:

--- /IFRE.V00

修改后的形式大致如下:

modules=/jumpstrt.gz --- /useropts.gz --- /features.gz ... --- /imgpayld.tgz --- /IFRE.V00

这里建议两个 BOOT.CFG 都修改,避免 BIOS 启动和 UEFI 启动行为不一致。

三、重新生成 ISO

这一步我一开始踩了坑。

第一次使用 xorriso -boot_image any replay 在原 ISO 基础上追加文件,表面看目录和启动项都在,但真机 UEFI 启动时报错:

Loading /EFI/BOOT/boot.cfg
UEFI Secure Boot is not enabled
Failed to load crypto64.efi: Not found
Falling back to internal crypto suite
Loading /b.b00
Fatal error: 15 (Not found)

这个报错说明启动器已经读取到了 boot.cfg,但后续按配置加载 /b.b00 时失败。后面检查发现,重打包后的 UEFI El Torito boot image 的 load size 和原厂 ISO 不一致:

原厂 ISO: UEFI load size = 1
错误 ISO: UEFI load size = 2048

所以这里不要只看 ISO 目录里有没有文件,还要检查 El Torito 启动参数。

最后改用 mkisofs 重新生成,并显式指定 UEFI boot image 的 load size 为 1

mkisofs \
  -relaxed-filenames \
  -J \
  -R \
  -V 'ESXI-8.0U3H-25067014-STANDARD' \
  -o VMware-VMvisor-Installer-8.0U3h-25067014-Realtek-ifre.iso \
  -b ISOLINUX.BIN \
  -c BOOT.CAT \
  -no-emul-boot \
  -boot-load-size 4 \
  -boot-info-table \
  -eltorito-alt-boot \
  -eltorito-platform efi \
  -b EFIBOOT.IMG \
  -no-emul-boot \
  -boot-load-size 1 \
  work/fulliso

生成后检查启动参数:

xorriso -indev VMware-VMvisor-Installer-8.0U3h-25067014-Realtek-ifre.iso -report_el_torito plain

关键结果如下:

El Torito boot img :   1  BIOS  y   none  0x0000  0x00      4
El Torito boot img :   2  UEFI  y   none  0x0000  0x00      1
El Torito img path :   1  /ISOLINUX.BIN
El Torito img path :   2  /EFIBOOT.IMG

确认 UEFI 对应的 Ldsiz1,这点和原厂 ISO 保持一致。

同时确认 IFRE.V00 已经在 ISO 内:

xorriso -read_fs norock -indev VMware-VMvisor-Installer-8.0U3h-25067014-Realtek-ifre.iso -find / -maxdepth 2 -type f | grep IFRE

输出:

'/IFRE.V00'

四、安装后 DCUI 仍然没有网卡的原因

这次 ISO 修好后,ESXi 可以正常安装成功,但安装完成进入 DCUI 后,Network Adapters 中仍然看不到任何网卡。

这个现象一开始容易误判为驱动没集成成功,其实原因是:

ISO 中的驱动只保证安装器环境可以加载,安装完成后的 ESXi 系统还需要把驱动写入安装目标盘的 bootbank。

也就是说,安装器启动时能用到 IFRE.V00,不代表安装后的系统重启时也会自动加载它。

所以安装完成后,还需要做一次持久化处理。

五、把驱动写入 BOOTBANK1 和 BOOTBANK2

安装完成后不要急着拔 U 盘。继续使用定制 ISO 启动到 ESXi Installer 环境,然后按 Alt + F1 进入 Shell。

先确认安装器里有没有 Realtek 驱动模块:

ls -l /tardisks/*ifre* /tardisks/*IFRE*

如果能看到类似 IFRE.V00ifre.v00 的文件,就可以复制到两个 bootbank:

cp /tardisks/IFRE.V00 /vmfs/volumes/BOOTBANK1/ifre.v00
cp /tardisks/IFRE.V00 /vmfs/volumes/BOOTBANK2/ifre.v00

如果实际文件名是小写,就使用小写路径:

cp /tardisks/ifre.v00 /vmfs/volumes/BOOTBANK1/ifre.v00
cp /tardisks/ifre.v00 /vmfs/volumes/BOOTBANK2/ifre.v00

然后修改两个 bootbank 的 boot.cfg,让安装后的 ESXi 每次启动都加载 ifre.v00

sed -i '/^modules=/ s#$# --- /ifre.v00#' /vmfs/volumes/BOOTBANK1/boot.cfg
sed -i '/^modules=/ s#$# --- /ifre.v00#' /vmfs/volumes/BOOTBANK2/boot.cfg

确认配置已经写入:

grep -i ifre /vmfs/volumes/BOOTBANK1/boot.cfg /vmfs/volumes/BOOTBANK2/boot.cfg
ls -l /vmfs/volumes/BOOTBANK1/ifre.v00 /vmfs/volumes/BOOTBANK2/ifre.v00

确认无误后重启主机。

六、重启后验证网卡

进入 ESXi 后,即使没有插网线,也应该能看到 vmnicX。如果没有插线,状态可能是 Down,这是正常的。

可以在 ESXi Shell 中执行:

esxcli network nic list

查看具体某一块网卡:

esxcli network nic get -n vmnic0

查看驱动模块是否加载:

vmkload_mod -l | grep -i re

如果还是看不到网卡,再检查 PCI 设备是否存在:

lspci -v | grep -i -A5 -E 'ethernet|network|realtek'

如果 lspci 能看到 Realtek 网卡,但 esxcli network nic list 看不到 vmnicX,说明驱动没有绑定成功,下一步就要核对这块网卡的 PCI ID 是否在当前 if-re 驱动支持范围内。

总结

这次处理有两个关键点:

  1. ISO 集成时,不只是把 IFRE.V00 放进 ISO,还要确保 BOOT.CFG 会加载它,并且 UEFI El Torito 启动参数不能被破坏。
  2. 安装成功不代表驱动已经写入目标系统,安装后的 ESXi 还需要把 ifre.v00 放进 BOOTBANK1BOOTBANK2,并修改两个 bootbank 的 boot.cfg

如果只是解决安装器识别网卡,做到第一步可能就够了;但如果安装完成进入 DCUI 后仍然没有网卡,就一定要检查 bootbank 持久化这一步。

VMware ESXi Realtek 网络