简介:面向需要在 ESXi 6.7U3b 与 7.0U2a 上启用 Intel I129-V 网卡的用户,离线驱动包解决了系统安装或升级后网卡不被识别、宿主机无法管理的问题。资源包含 ne1000 驱动 vib 文件、offline bundle 压缩包及配套的 index.xml 与 vendor-index.xml 元数据文件,共 4 个文件,压缩后仅 181KB。其中 vib 文件是实际驱动安装体,xml 记录包名、版本与依赖关系,zip 内为封装好的离线 bundle,便于无外网环境下通过 esxcli 直接导入。包内驱动版本为 ne1000_0.8.4,适配 ESXi 6.7U3b 与 7.0U2a,已在两种版本上实测可用,免去自行编译或寻找第三方驱动的麻烦。对机房运维、虚拟化实验或使用该网卡搭建家庭 ESXi 的用户来说,这是一套即取即用的驱动方案,目前已有 3651 人学习下载。
1. ESXi 装完找不到 Intel-I129V 网卡:先别急着退货,问题多半在驱动层
新装一台 ESXi 主机,系统装完,浏览器敲管理地址没反应,接上显示器才看到提示:网络未配置。这类“ESXi 装完找不到网卡”的场景,我遇到十次有八次都跟一个名字相关——Intel-I129V 网卡驱动。I129V 是 Intel 在不少台式机主板上常用的板载网卡方案,但 VMware 官方镜像只内置服务器网卡驱动,消费级网卡经常裸奔。这篇文章顺着 I129V 这个具体型号,把确认设备、注入驱动、定制集成 ISO、踩坑恢复整条路走一遍,适用两类人:刚装好 ESXi 发现没有 vmnic 的折腾党,以及要给十几台同配置主机批量部署的运维。别急着换网卡,驱动层的问题多半半小时内能解决。
2. 先确认两件事:网卡到底叫什么、ESXi 认不认它
讲驱动安装之前,有个被忽略的前提:ESXi 的驱动不是 Windows 那种“下个驱动双击安装”的逻辑,它走的是 VIB 包体系。装错了不会弹窗报错,只会在 vmkernel 日志里无声无息地失败。所以拿到一台没有网卡的 ESXi,我一般先不急着找驱动,而是花五分钟把两件事坐实:第一,这张 I129V 在 PCI 总线上的真实身份;第二,ESXi 当前把它识别成哪个状态。这两件事决定了后面是装驱动、改 BIOS、还是先解直通,省得白折腾。
进入 ESXi Shell 之前,先要在 DCUI 的 Troubleshooting Options 里把 ESXi Shell 和 SSH 都打开,这是 ESXi 8.0 装完默认关闭的。不开这个,后面所有命令都没地方敲。顺便提醒,操作前把该主机的虚拟机迁移或关机,后面一旦进维护模式,运行中的虚机网络会闪断。
2.1 用 lspci 确认 PCI 设备 ID,别被系统命名骗了
在 ESXi Shell 里,第一件事是看 PCI 总线上的设备。I129V 在不同主板上显示的名字可能不一样,有的 BIOS 把它写成 “Ethernet Connection”,有的直接显示 I129V,但这些软名都不可靠,唯一硬指标是 PCI 设备 ID。
# 列出所有 Intel 设备,找到网卡那一行 lspci -n | grep -i 8086 # 带上上下文确认设备类别是不是 Ethernet Controller lspci -v | grep -i -A3 -B3 ethernet输出里会出现类似0000:02:00.0 0200: 8086:xxxx的行。0200是设备类别,表示 Ethernet Controller;8086是 Intel 的 PCI vendor ID;后面四位xxxx才是关键的 device ID。把lspci -n拿到的 device ID 记下来,不管是去查 VIB 离线包还是对比驱动名称,都以这串 ID 为准。同一块主板上有多个网卡时会有多行输出,注意区分哪一行对应哪个物理口,后面给 vmnic 对应物理网口时会用到。
很多人在这步就翻车:拿着主板说明书上的“I129V”字样直接搜驱动,搜回来的 VIB 跟实际 PCI ID 对不上,装完自然没效果。另外提醒一句,ESXi 8.0 的lspci -v输出行数较多,可以先lspci -n缩小范围,再用lspci -v -s 02:00.0单独看那一个设备。
2.2 三种识别状态:直通、未驱动、完全不认
确认完 PCI ID 之后,用下面两条命令看 ESXi 对这张网卡的认知状态:
# 查看当前网络适配器列表,重点看有没有 vmnic 开头的东西 esxcli network nic list # 列出当前已安装的网卡驱动 VIB esxcli software vib list | grep -i -E "net-|igc|e1000e|igb"对照这张表判断当前卡在了哪个环节:
| 状态 | 判断方式 | 下一步 |
|---|---|---|
| 完全没驱动 | nic list 为空,vib list 里没有对应 net 包 | 装 VIB,见第 3 章 |
| 有驱动但无链路 | nic list 里有 vmnic,但 Link Status 为 Down | 查网线、BIOS 网卡开关、固件 |
| PCI 里都看不到 | lspci 没有 8086 开头的 Ethernet 行 | 查 BIOS 是否禁用、是否被直通 |
第三种状态最容易迷惑人。不少主板的 BIOS 默认把板载网卡关在 CSM/Legacy 模式里,或者之前做过 PCI passthrough 把设备绑给了虚拟机。ESXi 里如果设备被直通,宿主机 vmkernel 就看不见它,lspci里依然有,但esxcli network nic里没有。我踩过一次:把 I129V 直通给软路由虚拟机后,重启母机找不到管理口,排查半天才想起直通列表里还挂着这块卡。所以只要lspci能看到设备但 nic list 为空,先去确认直通配置,别直接跳到重装。
“ESXi 不认网卡”这个现象本身也分轻重:驱动没装、驱动冲突、设备被直通,三个问题三个解法。这也是为什么把确认状态放在第一优先——看准了再动手,后面每一步都有据可依。
2.3 顺手把 SSH 与维护模式打开,后面的步骤才不卡壳
确认完状态,如果确定要装驱动,先把环境准备到位。ESXi 的 VIB 安装在 live 系统上涉及 vmkernel 模块加载,不开维护模式直接装,正在跑的虚拟机网络会闪断,严重的直接丢管理连接。
# 打开维护模式,所有虚拟机要先迁移或关机 esxcli system maintenanceMode set --enable true # 确认确实进入了维护模式 esxcli system maintenanceMode getmaintenanceMode set --enable true是 ESXi 8.0 操作维护模式的标准命令,get用来核对当前状态。这里有个细节:维护模式只是不让虚拟机继续运行,不代表你可以随便拔网线——如果你是通过 SSH 远程操作,装完驱动重启前,确保管理网口对应的 vSwitch 配置还在,否则远程就断了。更稳的做法是本地接显示器操作,或者确认 IPMI/iLO 可用。准备工作做完,进入第 3 章的正式注入环节。
3. 给 ESXi 打 Intel-I129V 网卡驱动:VIB 注入的两条路线
I129V 这类消费级网卡,官方 ESXi 镜像不带驱动,社区里普遍以离线包形式发布驱动 VIB。拿到离线包之后,有两条路:直接往运行中的主机装 VIB,或者把驱动打进安装 ISO 再重装。选哪条取决于场景:单机试通、不想动现有系统,走路线一;新装机、批量部署、系统已经装好一大半,走路线二。这两条路不冲突,我通常先路线一试通,确认驱动有效再打包 ISO 固化。
在动手之前,先明确 VIB 是什么。VIB 是 VMware Installable Bundle,ESXi 的驱动打包格式,相当于 Linux 的 rpm、Windows 的驱动安装包。ESXi 8.0 对 VIB 有签名校验,社区驱动大多没有 VMware 官方签名,所以命令里要带--no-sig-check,这不算绕过安全机制,而是社区驱动的常规操作,装完后留意来源即可。
3.1 路线一:直接往运行中的主机装 VIB(最快,适合单机试通)
先把驱动离线包传到 ESXi 的数据存储。常见的办法是 scp 到能访问到的目录,我一般放到 datastore1 根目录,路径短好敲:
# 用 scp 从本地把离线包传到 ESXi(在你的电脑上执行) scp net-i129v-offlinebundle.zip root@<esxi-ip>:/vmfs/volumes/datastore1/ # 进入维护模式(如果还没开) esxcli system maintenanceMode set --enable true # 从数据存储安装离线包,--no-sig-check 跳过签名校验 esxcli software vib install -d /vmfs/volumes/datastore1/net-i129v-offlinebundle.zip --no-sig-check # 退出维护模式并重启 esxcli system maintenanceMode set --enable false reboot参数说明:-d表示后面跟的是 offline bundle(离线包),它可能包含多个 VIB;如果手里只有一个.vib文件,用-v指定文件路径。--no-sig-check是关键,不带这个参数,ESXi 8.0 会直接拒绝安装并报签名错误,这不是驱动坏了,是校验没过。装完重启是必须的,VIB 安装只把文件写到系统分区,模块要重启后才加载。
这条路适合测试驱动能不能用。如果重启后esxcli network nic list里出现了 vmnic,说明驱动有效,再决定要不要把它固化进 ISO。注意,这种装法只在当前系统生效,重装 ESXi 或者升级大版本后驱动会消失,这不叫失败,是预期行为,后面第 4 章和第 6 章会讲怎么让它长期存在。
3.2 路线二:离线打包 ISO(适合批量部署与后续重装)
单机装 VIB 简单,但你要是有十几台同样主板的机器,每一台都手动 scp、安装、重启,效率太低。社区里常说的“ESXi 8.0 U3K 集成驱动版”,本质就是有人把网卡驱动用 Image Builder 打进了官方 ISO。这个流程你自己也能做,前提是有一台 Windows 机器并装好 PowerCLI。
# 导入官方 offline bundle 和网卡驱动 offline bundle Add-EsxSoftwareDepot C:\iso\ESXi-8.0U3k-offlinebundle.zip Add-EsxSoftwareDepot C:\iso\net-i129v-offlinebundle.zip # 克隆一个全新的镜像描述文件,继承官方所有软件包 $profile = New-EsxImageProfile -CloneName "ESXi-8.0U3k-I129V" -Vendor "local" -Name "ESXi-8.0U3k-I129V" # 把网卡驱动包加进这个 profile Add-EsxSoftwarePackage -ImageProfile $profile -SoftwarePackage "net-igc" # 如果驱动包接受级别高于默认,把 profile 的接受级别降一档 Set-EsxImageProfile -ImageProfile $profile -AcceptanceLevel PartnerSupported # 导出成 ISO Export-EsxImageProfile -ImageProfile $profile -ExportToIso -Destination C:\iso\ESXi-8.0U3k-I129V.iso -Force命令逻辑:Add-EsxSoftwareDepot先把两个离线包注册进来,New-EsxImageProfile -CloneName克隆官方镜像描述,继承全部原生包,Add-EsxSoftwarePackage把 I129V 的驱动包加进新 profile。Set-EsxImageProfile -AcceptanceLevel PartnerSupported这步容易漏:社区驱动包的接受级别往往是 PartnerSupported 或 CommunitySupported,比默认的 VMwareCertified 低,不改级别导出时直接报错。Export-EsxImageProfile -ExportToIso生成安装 ISO。
-SoftwarePackage "net-igc"里的包名要跟实际离线包里的 VIB 名字一致。不确定的话,先跑Get-EsxSoftwarePackage | Where-Object {$_.Name -match "i129|igc|e1000e"}查一下 depot 里到底注册了哪些包,别照抄我这里的示例名。打包 ISO 不需要正在运行的 ESXi 主机,在 Windows 上离线完成,所以适合在部署前准备好。
3.3 装完必须做的收尾:加载驱动、确认 vmnic 出现
不管走哪条路线,装完重启后都要做一次完整确认。这一步没做好,后面出了网络问题会分不清是驱动没生效还是配置错误。
# 看 I129V 对应的驱动模块有没有加载 vmkload_mod -l | grep -i -E "igc|igb|e1000e" # 看 vmnic 是否出现 esxcli network nic list # 看具体网卡的 link 状态、速率、MAC esxcli network nic get -n vmnic0vmkload_mod -l是列出已加载的 vmkernel 模块,grep 之后能看到驱动模块名和状态。如果模块没加载,esxcli network nic list里就不会出现 vmnic。esxcli network nic get -n vmnic0能看 Link Status、Speed、MAC,用来确认物理层是否协商成功。如果 vmnic 出现了但 Link Status 是 Down,先别怀疑驱动,拿根网线插到别的口试试,或者检查对端交换机端口——这是新手最容易浪费半小时的地方。
到这里,I129V 网卡驱动已经能用了。但要说“稳定上线还差一步”——驱动目前只是装进了这一台机器,还没固化到安装介质里。第 4 章把打包 ISO 的细节和坑讲透。
4. 把驱动固化进安装镜像:ESXi 8.0 U3K 离线 ISO 定制实操
第 3 章把打包 ISO 的命令过了一遍,这一章展开细节。Image Builder 是个黑匣子,命令顺序、depot 冲突、接受级别这几个点都是翻车高发区。我踩过的坑,基本都集中在“VIB 装进去了但 ISO 导出失败”和“ISO 能导出但装完网卡还是不通”这两类。所以这一章按解包检查、打包参数、装后验证三步走。
4.1 先解包确认 VIB 兼容性:从 acceptance level 开始
拿到一个 offline bundle,别急着导入。先在本地(Windows 或 Linux)解包看结构,确认里面的 VIB 是不是 ESXi 8.0 能认的格式。
# 在本地查看离线包里有什么 unzip -l net-i129v-offlinebundle.zip | head -40 # 列出包含 VIB 文件的项目 unzip -l net-i129v-offlinebundle.zip | grep -i "\.vib"offline bundle 本质是 zip,里面至少有一个.vib文件和一个描述文件。unzip -l先看清单,确认不是解压出来一堆没用的东西。这一步能在本地完成,不要在 ESXi Shell 里折腾 zip,ESXi 的 Shell 功能有限,解包这种事交给桌面系统更顺手。
解包只是第一步,真正的兼容性检查要把 bundle 注册进 depot 再看:
# 在 ESXi Shell 上直接看这个离线包里有哪些 VIB 及其接受级别 esxcli software sources vib list -d /vmfs/volumes/datastore1/net-i129v-offlinebundle.zipesxcli software sources vib list -d是检查离线包内容的专用命令,它会列出每个 VIB 的名称、版本、以及最重要的 acceptance level。看到VMwareAccepted或者PartnerSupported都算正常,如果出现CommunitySupported,打包时就要把 profile 的接受级别调成一致或更低,否则导入阶段就报错。这一步花两分钟,能省掉后面导出 ISO 时反复失败的一小时。
4.2 离线打包时注意的三个参数:软件包选择、接受级别、导出格式
Image Builder 打包失败,十次有八次是接受级别没对齐。剩下的两次是软件包选错——把包加进了 profile,但那个包依赖另一个包,或者跟现有包冲突。
# 导入两个 depot Add-EsxSoftwareDepot C:\iso\ESXi-8.0U3k-offlinebundle.zip Add-EsxSoftwareDepot C:\iso\net-i129v-offlinebundle.zip # 查看 depot 里跟网卡相关的软件包,确认包名 Get-EsxSoftwarePackage | Where-Object {$_.Name -match "i129|igc|e1000e"} # 克隆 profile,指定名称和厂商 $profile = New-EsxImageProfile -CloneName "ESXi-8.0U3k-I129V" -Vendor "local" -Name "ESXi-8.0U3k-I129V" # 加入驱动包 Add-EsxSoftwarePackage -ImageProfile $profile -SoftwarePackage "net-igc" # 检查 profile 的接受级别,必要时调整 $profile.AcceptanceLevel Set-EsxImageProfile -ImageProfile $profile -AcceptanceLevel PartnerSupported # 导出 ISO Export-EsxImageProfile -ImageProfile $profile -ExportToIso -Destination C:\iso\ESXi-8.0U3k-I129V.iso -Force这段命令和第 3 章的区别在于多了检查和确认。Get-EsxSoftwarePackage用来核对包名,我见过有人把包名拼错导致Add-EsxSoftwarePackage报“找不到包”,其实 depo 里清清楚楚写着正确名字。$profile.AcceptanceLevel可以看当前 profile 的级别,如果你加的是 PartnerSupported 的包而 profile 是 VMwareCertified,导出时报错信息会写明“vib does not meet acceptance level”,这时候用Set-EsxImageProfile调低一档即可,别怀疑包坏了。
另外,导出格式不止 ISO 一种。Export-EsxImageProfile还支持-ExportToBundle生成 offline bundle,方便用esxcli software profile install方式升级现有主机。如果你已经有跑着的 ESXi,只是想升级到 8.0 U3K 并保留网卡驱动,导出 bundle 比 ISO 更实用。但我建议新装机还是用 ISO,省一步。
4.3 定制 ISO 装完后的确认清单
定制 ISO 装完,系统起来后不要急着配 IP,先跑一套确认清单,确保驱动确实来自你打包的 ISO,而不是装系统时碰巧从别处加载的。
# 查看当前安装的 ESXi 版本和 profile esxcli software profile get # 确认网卡驱动 VIB 来自定制包 esxcli software vib list | grep -i -E "net-|igc" # 确认设备在 PCI 总线上正常识别 lspci -n | grep -i 8086esxcli software profile get会显示 profile 名称,如果显示的是你定的ESXi-8.0U3k-I129V,说明安装镜像生效了。esxcli software vib list看驱动 VIB 是否在列,lspci确认设备可见。到这里,定制 ISO 链路闭合:解包确认、打包、安装验证三步走完。
5. 避坑:I129V 网卡驱动反复失败的五条踩坑记录
驱动这块的坑,很多不是技术方案不对,是细节没对齐。下面五条是我折腾 I129V 以及同类消费级网卡时攒下的血泪经验,每条按现象、原因、解决三个层次写,读完能帮你少走大弯。
5.1 现象:esxcli 报错 “VIB … is not signed”
装 VIB 时报签名错误,命令被拒绝。原因很简单:ESXi 8.0 默认只接受 VMware 签名或经过 VMware 认证的 VIB,社区驱动、自打包驱动都没有这个签名。解决方法是安装命令加--no-sig-check:
esxcli software vib install -d /vmfs/volumes/datastore1/net-i129v-offlinebundle.zip --no-sig-check注意,--no-sig-check要放在离线包路径后面,位置写错会被当成未知参数。另外,这个参数只跳过签名校验,不改变 VIB 的实际内容,所以前提是你清楚离线包来源可靠。
5.2 现象:驱动装上了,esxcli network nic list 还是空的
这个坑最磨人。VIB 装成功、重启也正常,但esxcli network nic list里就是没有 vmnic。原因通常是两个:一是 BIOS 里板载网卡被禁用或锁定在 Legacy 模式;二是设备被 PCI passthrough 直通给了虚机,vmkernel 无权访问。解决方法是先确认设备在lspci里是否可见,再排除直通:
# 确认设备在 PCI 总线上 lspci -n | grep -i 8086 # 查看设备当前被哪个驱动接管 esxcli hardware pci list | grep -i -A5 8086如果lspci里根本没有,去 BIOS 找网卡开关,或者把 PCIe 设备从直通列表里移除,然后重启。特别提醒:做过直通的机器,重装后直通配置可能残留,优先查这一项,不要反复重装驱动浪费时间。
5.3 现象:重装 ESXi 或升级后驱动又没了
“VMware 重装之后没有虚拟网卡驱动”这个场景太常见了。原因不算 bug:VIB 装在系统分区,重装系统必然清空;esxi upgrade 时 profile 更新会移除不在新 profile 里的驱动。解决思路是升级前留快照,升级后对比差异:
# 升级前导出驱动清单 esxcli software vib list > /vmfs/volumes/datastore1/vib-before-upgrade.txt # 升级完成后导出新的清单 esxcli software vib list > /vmfs/volumes/datastore1/vib-after-upgrade.txt # 对比 diff /vmfs/volumes/datastore1/vib-before-upgrade.txt /vmfs/volumes/datastore1/vib-after-upgrade.txtdiff命令会直接列出哪些 VIB 被移除、哪些是新增的。看到网卡驱动被移除,再用第 3 章的命令重新装一次即可。如果不想每次升级都手动装,就把驱动打进定制 ISO 或离线 bundle,用esxcli software profile install方式整体升级。
5.4 现象:网络能通,但断电重启后网口时好时坏
这个现象很玄学:驱动在、vmnic 在、配置没问题,但每次断电重启后,网口要么不通要么要过几分钟才起来。原因大概率在 BIOS 的省电策略和网卡 PHY 初始化时序。主板开启了 ErP、Fast Boot 或 Deep Sleep 时,网卡在 POST 阶段可能没有被完全供电,vmkernel 加载驱动时 PHY 还没 ready。解决方法是进 BIOS 关闭 Fast Boot、ErP 这类省电选项,并把“来电自动启动”场景下网卡供电策略设为常规模式。另外,如果机器是通过远程电源管理定时开机,建议在 BIOS 里开启 AC Power Loss 为 Always On,同时关掉网卡的 Wake on LAN——WOL 在 ESXi 下没什么用,反而会拖慢初始化。
5.5 现象:管理地址能 ping 通,但流量一大就掉包
现象是网络能通,但跑虚拟机备份或大流量同步时 ping 延迟飙高甚至掉包。原因一是网卡和交换机协商成了低速率或半双工,二是省电以太网(EEE)功能导致的延迟抖动。解决方法是先看协商结果:
# 查看网卡协商速率和双工模式 esxcli network nic get -n vmnic0 | grep -i -E "speed|duplex|link"如果 Speed 显示 10Mbps 或 100Mbps,把交换机端口强制成 1000Mbps/Full,别依赖自动协商。如果速率正常但延迟抖动,大概率是网卡的 EEE 省电功能在作祟,在交换机端口关闭 EEE,或者在驱动参数里关掉对应的节能特性。这个问题的共性在于:驱动没问题、硬件没问题、配置的锅。排查顺序应该是先看协商,再看交换机端口,最后才怀疑驱动。
6. 让 I129V 网卡在重启和升级后依然稳定:三个顺手技巧
6.1 装完驱动的第一件事:跑一套验证三板斧
驱动装完,别急着配 IP,先跑这三条命令,把输出存到文件里。这套输出以后就是你的“体检报告”:
esxcli network nic list esxcli software vib list | grep -i net vmkload_mod -l | grep -i -E "igc|igb|e1000e"可以把输出重定向到一个文件,比如/vmfs/volumes/datastore1/nic-baseline.txt。下次网络出问题,先 diff 这个基线,就能快速判断是驱动丢了、模块没加载还是物理层变了。
6.2 升级 ESXi 前留好后悔药
升级前除了导出 VIB 清单,还要把网络配置一并导出。ESXi 的网卡配置不像 Linux 那样分散在多个文件里,一条命令就能拿到全量快照:
esxcli network nic list > /vmfs/volumes/datastore1/nic-$(date +%Y%m%d).txt$(date +%Y%m%d)会拼出一个带日期的文件名,方便保留历史版本。升级后如果发现 vmnic 顺序、网卡状态跟之前对不上,拿这份快照对照排查。比起凭记忆重配,这算是最实在的后悔药。
6.3 出问题时的排查顺序:别一上来就重装
最后说一个经验性的排查顺序,遇到 I129V 网卡不通,按这个顺序走,能省掉一半冤枉路:先lspci -n看设备在不在,再esxcli software vib list看驱动在不在,然后vmkload_mod -l看模块加载没加载,接着esxcli network nic list看 vmnic 出现没出现,最后esxcli network nic get看物理协商。前四步查的都是软件栈,最后一步才碰物理层。我见过有人网线松了,重装三遍系统都没找到根因——驱动没丢,是物理层断了。养成这个顺序,以后遇到类似问题不慌。
Intel-I129V 网卡驱动这件事,说到底就四步:确认 PCI ID、装 VIB、固化进镜像、留好快照。我最早也以为装驱动就是扔个 VIB 进去,结果在直通残留和 BIOS 省电上各翻了一次车,才意识到网卡驱动只是链路上的一环,前后还有 BIOS、直通、协商速率这些环节等着你。希望帮到你。
本文还有配套的精品资源,点击获取