简介:面向 VMware ESXi 平台的瑞昱网卡驱动离线包,适用于 ESXi 8.0 Update 3 及以上、9.x 及以上版本,主要解决瑞昱 RTL8111、RTL8125、RTL8126、RTL8127 系列 PCIe 有线网卡在虚拟化环境中不被识别、无法上网的问题。该驱动源自 VMware Fling 社区,由社区工程师自主开发,并非瑞昱官方出品,但能有效激活千兆、2.5G、5G 和万兆网卡,适合虚拟化运维、家庭服务器改造、软路由装机等需要直装 ESXi 的场景。压缩包共含 4 个文件,包括两个 XML 元数据清单、一个 ZIP 驱动组件包和一个 VIB 离线安装包,整体大小仅为 205KB,轻量易携带,可通过命令行离线导入到 ESXi 主机。目前已有 442 人学习下载。资源内包含可用的 bootbank VIB 驱动文件及完整元数据索引,用户下载后无需编译即可完成装载或移除,驱动版本信息保留完整,便于在 ESXi 8/9 环境中进行排错、版本对比与批量部署。
1. 这个驱动版本号到底在说什么:先别急着装
如果你手里的安装包长这样——VMware-Re-Driver-1.101.01-5vmw.800.1.0.20613240——大概率不是官网下载页上看到的,而是从硬件兼容性讨论或第三方驱动仓库里扒出来的。这个包本质是VIB驱动包,5vmw.800.1.0.20613240指向ESXi 8.0系列的一个具体build,1.101.01才是驱动自己的版本;Re-Driver是发布者贴的标签,表示它把硬件厂商驱动重新打包成了VMware格式。你需要它,通常是因为某块网卡、阵列卡或显卡在ESXi 8.0下没有官方驱动,设备认不到、直通做不了,或者官方驱动性能不对。这篇文章从下载到落地、验证到回滚讲完整流程。第一次手动装驱动的按步骤走;装过几次的重点看第5章的坑和第6章的镜像固化。
2. VIB、Offline Bundle 与内置驱动:先看清要装的是哪种形态
2.1 三种分发形态长什么样,别把安装命令搞混
ESXi上的驱动不像Windows那样双击exe就完事,它的分发形态有三种:单个VIB文件、Offline Bundle(zip压缩包)和内置在系统镜像里的驱动。单个VIB就是一个.vib结尾的文件,对应一个软件包;Offline Bundle是把若干个VIB连同metadata描述文件打包成zip,发布者为了方便你通过depot方式安装;而内置驱动是ESXi安装镜像里自带的那些模块,正常情况下不涉及手动安装。
实践里怎么区分?拿到文件后先在Linux工作站或ESXi shell里看一眼。
# 在ESXi shell里查看zip包内容(如果ESXi没装unzip,直接用tar也能看) unzip -l driver-bundle.zip | grep -E '\.(vib|xml)$' # 查看单个vib的描述信息(vib本质是一个tar归档) tar -tf driver-re.vib | head -20逻辑说明:第一条命令列出zip内容,过滤出vib和xml文件名,看到这些就说明它是Offline Bundle,安装时用-d参数;第二条命令把vib当tar包打开,看到descriptor.xml和payload目录,说明它是个标准VIB,用-v参数。
参数说明:-l表示只列出不解压,grep -E是支持正则的过滤;tar -tf列出归档内容而不解包,head -20限制输出行数,防止文件列表刷屏。如果ESXi shell里没有unzip,把文件传到本地Linux机器上再判断,不建议为了看包在ESXi上额外装工具。驱动装不装得上,有时候确实带点玄学,但分不清安装参数这个纯粹是人为翻车。
这一点之所以要先确认,是因为后面安装命令不一样:vib用-v,offline bundle用-d,搞错的报错信息会让人怀疑是包坏了。我给别人讲这个流程的时候,见过有人拿着一个zip包用-v去装,报了好几遍找不到文件,最后发现是指定错了参数。所以多花一分钟看清形态,后面省半小时。
2.2 从文件名反推兼容性:5vmw.800.1.0 到底在说什么
很多人在这一步直接跳过,文件名里全是数字,懒得看。但我建议你还是花30秒读一下,因为装不装得上、要不要先升级ESXi补丁,都藏在这个版本号里。这个标题的版本号可以拆成五段理解。
| 字段 | 含义 |
|---|---|
| 1.101.01 | 驱动自身版本号,对应硬件厂商的驱动版本 |
| 5vmw | 打包者标记,vmw表示VMware兼容体系,5是打包修订 |
| 800 | 目标ESXi主版本,表示面向 ESXi 8.0 编译 |
| 1.0 | 该VIB的发布修订号 |
| 20613240 | ESXi平台的build号,对应8.0系列的某个补丁级别 |
简单说,800说明它只能在ESXi 8.0上装,拿到7.x主机上依赖检查大概率过不了;20613240要求你的ESXi build不能低于这个值,如果当前主机build比它低,安装时会报类似requires esx-version >= 8.0.x的依赖错误。正确做法是先升级ESXi补丁,而不是跳过依赖硬装。你可以用vmware -v或esxcli software profile get查看当前主机的build号。
补充一点,Re-Driver不是VMware官方的命名格式,看到它基本可以默认是社区驱动。社区驱动不是不能用,但装之前先记录当前VIB列表、确认业务影响,心里要有数。如果发布者在说明里明确写了它对应哪个硬件和哪个模块,就以那个为准,不要靠文件名猜设备类型。
2.3 先确认主机版本:当前 build 够不够
在下载驱动之前,最好先确认自己的ESXi主机在什么版本。如果你已经在跑生产,这个动作尤其重要,因为装驱动的操作需要在维护模式下进行,而维护模式会迁移或关停该主机上的虚拟机。
# 查看ESXi版本和build号 vmware -v # 查看当前生效的profile名称和build esxcli software profile get # 查看当前接受级别(关系到社区驱动能不能装) esxcli software acceptance get逻辑说明:vmware -v输出里的build号直接和20613240对比;esxcli software profile get确认你用的profile是不是官方标准profile,如果已经被别人改成自定义名字,说明这台机器动过手脚,后面排查问题要更谨慎;acceptance get决定社区VIB能不能正常装。
参数说明:如果build号大于等于20613240,理论上可以继续。但还要看接受级别,如果显示VMwareAccepted或VMwareCertified,直接装社区驱动会被拒绝,需要先调整接受级别,命令是esxcli software acceptance set --level=CommunitySupported。这个操作有安全含义,等于告诉系统以后社区签名的包也能装,不是特殊情况不建议在生产上改。
3. 在 ESXi 8.0 上安装驱动的完整命令与参数
3.1 把驱动包传到主机:别往 /tmp 传
安装的第一步是让ESXi能访问到文件。常见做法是用scp、sftp或者vSphere Client的数据存储浏览器把文件传到/vmfs/volumes/datastore1/这类数据存储目录。ESXi的/tmp是内存盘,重启后文件会消失,所以不要为了图方便传/tmp。虽然VIB在重启前会写入bootbank,但源文件如果丢了,后面卸载或排查时少一个参照物。
# 从工作站上传到ESXi数据存储的根目录 scp VMware-Re-Driver-1.101.01-5vmw.800.1.0.20613240.vib root@esxi-host:/vmfs/volumes/datastore1/逻辑说明:scp会把本地文件拷贝到远程ESXi主机的/vmfs/volumes/datastore1/,这是数据存储的根路径。文件名很长时,我习惯在本地先改名成简短的名字再传,省的后面shell里敲长路径,但注意别改错扩展名,vib还是vib,zip还是zip。
参数说明:root@esxi-host换成你的管理IP;路径里的datastore1是数据存储名,如果名字不一样,先执行esxcli storage vmfs list查看。传完文件后建议用ls -lh /vmfs/volumes/datastore1/确认文件大小和名字完整,我见过传一半断掉导致后续解包失败的情况。
3.2 安装前的状态确认:主机版本、现有VIB、硬件ID
动手安装之前,先把下面这三条命令跑一遍,可以避免很多问题。尤其是当这台机器已经跑着业务、管理员换过好几任的时候,系统里可能已经装过同名驱动。
# 1. 确认ESXi版本和build号是否支持这个VIB vmware -v # 2. 确认当前有没有装过同名或同家族的驱动 esxcli software vib list | grep -iE 'driver|re-driver' # 3. 确认目标PCI设备是否出现在总线上,以及当前驱动状态 esxcli hardware pci list | grep -iE 'vendor|device|driver'逻辑说明:第一条检查build,低于20613240就先升级;第二条查有没有已安装的同名VIB,如果已有旧版本,安装时要先卸载旧版或加--force;第三条看设备在PCI总线上是否可见,如果设备压根不出现,问题不在驱动,而在硬件、BIOS或直通配置层面。
参数说明:grep -iE是大小写不敏感的正则匹配。esxcli hardware pci list输出很长,只看vendor、device和driver三列,必要时先输出到文件再慢慢看。如果设备已经绑定了一个驱动,你后面卸载时要先确认它不在生产使用中,否则网口会瞬间断开。
3.3 正式安装:VIB 与 Offline Bundle 两种命令
这是本章核心。顺序是固定的:先开维护模式,再安装,再关维护模式。缺了第一步,ESXi会直接拒绝安装。
# 第一步:开启维护模式(timeout设为0表示不自动退出) esxcli system maintenanceMode set --enable --timeout 0 # 第二步:如果是单个vib文件 esxcli software vib install -v /vmfs/volumes/datastore1/VMware-Re-Driver-1.101.01-5vmw.800.1.0.20613240.vib --no-sig-check # 第二步(备选):如果是offline bundle(zip) esxcli software vib install -d /vmfs/volumes/datastore1/re-driver-bundle.zip --no-sig-check # 第三步:关闭维护模式 esxcli system maintenanceMode set --disable逻辑说明:维护模式会把主机上所有虚拟机迁移或关停,确保安装过程中没有负载干扰;--no-sig-check是因为社区VIB没有VMware官方签名,不加这个参数会直接报签名校验失败。安装命令结束后会输出Installation Result,里面带有Reboot Required: true或false,如果显示true,重启后再做第4章的验证。
参数说明:-v后跟单个vib文件路径,-d后跟离线仓库或zip包路径,两条二选一;--no-sig-check只是跳过签名,不等于跳过依赖检查;如果你的驱动支持live install,可以加--live-install-allowed试试,但社区驱动多数不支持,报错就老实重启。安装输出里的warning通常可以先忽略,error才需要停下来。
提示:如果系统里已经有同名的旧版VIB,安装时可能提示版本冲突,先执行
esxcli software vib remove -n <vib-name>卸载旧版,再装新版。我一般升级社区驱动时都主动remove再install,多一步但干净。
常用的命令参数可以存一份速查,后面排查时好用。
| 参数 | 作用 | 什么时候用 |
|---|---|---|
| -v | 安装单个VIB | 拿到的是.vib文件 |
| -d | 安装离线仓库/zip | 拿到的是Offline Bundle |
| --no-sig-check | 跳过签名校验 | 社区驱动无官方签名时 |
| --force | 跳过冲突和依赖检查 | 确认风险后覆盖安装 |
| --ok-to-remove | 安装时自动移除指定冲突VIB | 依赖冲突明确时 |
3.4 安装之后立即做的两个动作:确认写入镜像、留好回滚路径
在重启之前,我习惯先确认VIB是写进了当前bootbank,而不是只挂在运行中的系统上。这一步很多人会跳过去,直到重启后驱动消失了才回头查。
# 查看当前引导的bootbank esxcli system bootbank get # 查看下一次重启后会加载的VIB列表 esxcli software vib list --rebooting-image逻辑说明:ESXi有bootbank 0和bootbank 1两个引导分区,安装VIB默认写入当前bootbank。如果当前bootbank已是1,下次重启仍用1,VIB生效;但alternate bootbank是旧的,一旦当前bootbank损坏,回滚到旧bootbank后驱动就会消失,所以要提前知道当前状态。
参数说明:bootbank get查看当前引导槽和备用引导槽;--rebooting-image展示的是下次重启时生效的VIB快照,比直接vib list更准确。如果这个参数在你的build上不支持,直接对比vib list的输出也行。看到驱动名出现在重启镜像列表里,再重启才稳妥。
回滚路径也要提前准备好。如果重启后出现异常,在维护模式下执行卸载命令即可;如果主机关机后起不来,物理控制台重新开机时进入引导界面,选择alternate bootbank就能回到安装前的环境。这条后悔药必须提前知道,而不是等出事了再查。
4. 装完怎么确认驱动是真的在干活:四级验证
4.1 第一级:VIB 是否被系统注册
重启后第一件事不是看设备,而是先看软件层面。很多时候驱动没生效,第一步就卡在VIB根本没被系统接受。
# 确认VIB出现在系统软件库中 esxcli software vib list | grep -i 're-driver' # 查看VIB的完整信息 esxcli software vib get -n <vib-name>逻辑说明:vib list能看到这个VIB,说明它已经写进当前系统的软件库;vib get显示更完整的版本号、厂商、接受级别和依赖关系。特别关注Acceptance Level,如果是CommunitySupported,说明它确实是社区包,后续固化镜像或升级补丁时要格外注意。
参数说明:第一列vib name用于后续remove或get,注意它是VIB名不是文件名。这一步看到驱动,只能说明软件包装上了,模块和设备是否正常工作,还要看下面几级。
4.2 第二级:内核模块是否加载
VIB注册了不等于模块加载了。ESXi里模块加载状态用esxcfg-module看,这个命令比lsmod更全面,能看到模块是否被禁用、启动顺序和加载参数。
# 列出所有可加载模块,过滤出目标模块 esxcfg-module -l | grep -i <module-name> # 查看该模块的详细加载参数和状态 esxcfg-module -g <module-name>逻辑说明:-l列出所有可加载模块,grep到你的模块名说明它已经出现在模块列表里;-g显示该模块当前的加载参数和加载状态,如果显示disabled,说明VIB虽然装了但模块被禁用了。
参数说明:模块名不等于VIB名,比如某个网卡驱动的VIB名可能是net-xxx,模块名是xxx,具体以系统中实际加载的为准。如果状态是disabled,用esxcli system module set --enabled=true --module=<module-name>启用后重启。看到Enabled,再进行下一级验证。
4.3 第三级:PCI 设备是否被驱动绑定
模块加载了,设备还没绑定的话,等于白装。这一步用lspci和esxcli hardware pci list确认,重点看设备的Driver字段。
# 在ESXi shell里直接执行,能看到设备PCI地址和Driver字段 lspci | grep -i <vendor-name> # 更详细的设备信息 esxcli hardware pci list | grep -A 10 -i <device-name>逻辑说明:lspci能看到设备在PCI总线上的地址、厂商、设备名和Driver字段;esxcli hardware pci list输出更详细,里面包含Vendor、Device、Driver和模块名。如果Driver是你装的模块名,说明绑定成功;如果Driver是别的模块,说明被其他驱动抢占了。
参数说明:如果设备显示Driver为空,说明设备处于无人认领状态,需要确认设备的vendor:device ID是否在这个驱动的支持列表里。常见驱动包里会带一个支持设备ID列表,esxcli hardware pci list里可以看到完整的设备ID,和VIB描述文件里的supported models比对一下。
4.4 第四级:从日志里看有没有报错
设备工作是否正常,单靠lspci看不出来。丢包、超时、异常复位这类问题,只能从内核日志里找线索。
# 查看模块加载过程日志 dmesg | grep -i <module-name> # 查看最近的内核日志 tail -100 /var/log/vmkernel.log | grep -i <module-name>逻辑说明:dmesg能看到模块加载过程,比如分配了哪个中断、设备链路是否正常建立;vmkernel.log是ESXi的主内核日志,驱动报错、IO超时、链路抖动都记录在这里。
参数说明:如果日志里出现reset、fail、timeout字样,不要放过。网卡驱动偶发一次reset可能没事,频繁出现就是参数需要调整。可调参数通过esxcfg-module -s <module-name> <param>=<value>设置,具体参数名用esxcfg-module -i <module-name>查看。如果是网卡驱动,还可以用esxcli network nic list确认链路状态和速率是不是正常。
5. 避坑指南:驱动装不上、不生效的 5 个高频翻车点
5.1 签名校验失败:The VIB is not signed
现象:安装命令执行后直接报错,提示VIB没有被签名或Signature check failed,有些版本连参数都没认就退出了。
原因:社区重新打包的VIB没有VMware官方私钥签名,ESXi默认校验签名,非官方包直接被拦下来。这不是命令写错了,而是包本身的属性决定的。
解决:加--no-sig-check参数。注意这是绕过校验而不是补签名,包从哪里来、内容是否可信,要自己先判断。我的习惯是下载后先用tar -tf看一眼descriptor.xml里的厂商和依赖,确认它指向的模块确实是需要的那个,再装。生产环境上这个参数能不加就不加,加了就要在变更记录里写明原因。
5.2 依赖不满足:requires 一堆东西
现象:报错信息里出现Requires: xxx not available或conflicts with yyy,有时还会直接提示具体模块版本要求。
原因:驱动VIB依赖ESXi的内核模块或基础包,最常见的是依赖vmklinux、esx-base这些基础VIB的某个版本。当你的ESXi build太低或太高,依赖对不上就装不进去。
解决:先看requires的是哪个VIB、版本要求是多少。如果只是build太低,正确做法是先升级ESXi补丁,而不是强装;如果依赖的模块在当前系统里存在但版本号对不上,评估用--no-dep-check加--force。血泪经验:别一上来就--force,我见过有人把网卡驱动强装进去,结果系统启动时模块加载顺序乱了,主机直接失联,最后只能进引导界面回滚。
5.3 忘记维护模式:安装操作被拒
现象:安装命令执行到一半直接失败,提示operation requires maintenance mode或类似信息。
原因:ESXi要求VIB安装操作在维护模式下执行,防止运行时替换驱动导致正在运行的虚拟机出问题。很多人按Linux装驱动的经验,上来就装,于是翻车。
解决:安装前执行esxcli system maintenanceMode set --enable --timeout 0,装完再set --disable。注意开启维护模式会把该主机上所有虚拟机迁移走或关机,操作前先确认业务影响。如果是单台主机且没有vMotion环境,等于要停机维护,要跟业务方打招呼。
5.4 VIB装完,但设备还是没驱动
现象:esxcli software vib list里能看到驱动,lspci里设备也出现了,但Driver字段是空的,或者显示成别的模块。
原因:设备的PCI ID不在这个驱动的支持列表里,或者设备被别的模块抢先绑定,驱动之间抢设备。有些社区驱动编译时只针对特定硬件ID,换一个型号就不认了。
解决:先查设备完整的vendor:device ID,再到驱动描述文件里确认支持列表。如果ID不在支持列表里,装什么版本都白搭,只能找匹配该硬件ID的驱动包;如果设备被其他模块绑了,用esxcli system module set --enabled=false --module=冲突模块禁用冲突模块,再启用目标模块,然后重启。禁用前确认冲突模块不在被其他设备使用,否则会牵连其他接口。
5.5 重启后VIB还在,但驱动没加载,甚至主机失联
现象:重启后驱动没生效,vib list却显示驱动在;或者驱动生效了,但管理网络不通、主机完全连不上。
原因:两种情况分开看。VIB在但模块没加载,通常是模块被禁用,或者它依赖的模块没加载;失联通常是强装或依赖错乱导致模块加载顺序出问题,或者网卡驱动装错导致管理口绑不上。
解决:能进Shell就先esxcfg-module -g查模块状态,用esxcli system module set --enabled=true启用后重启。失联就只能去物理控制台操作,重启时进引导界面选alternate bootbank回到安装前状态,进去后用esxcli software vib list确认驱动是否还在,然后vib remove卸载。这也是为什么我一直强调:装社区驱动前必须知道怎么回滚,不然就是拿生产环境赌运气。
6. 进阶:把驱动固化进自定义镜像,一劳永逸但别乱来
手动vib install只解决单台主机的问题。如果有一批相同硬件的主机,挨个SSH上传安装不仅慢,还容易漏。常见做法是用PowerCLI的Image Builder把驱动封装进自定义ESXi安装镜像,后面装机直接使用这个镜像。
# 添加官方depot和驱动depot Add-EsxSoftwareDepot C:\esxi\official-depot.zip Add-EsxSoftwareDepot C:\esxi\driver-bundle.zip # 从官方profile克隆一个自定义profile $profile = New-EsxImageProfile -CloneProfile (Get-EsxImageProfile).Name -Name "Internal-8.0-driver" -Vendor "internal" # 把目标驱动加入profile Add-EsxSoftwarePackage -ImageProfile $profile -SoftwarePackage "<vib-name>" # 导出ISO Export-EsxImageProfile -ImageProfile $profile -ExportToIso -FilePath C:\esxi\internal-8.0-driver.iso逻辑说明:Add-EsxSoftwareDepot注册软件仓库,官方depot和驱动depot都要加;New-EsxImageProfile -CloneProfile克隆官方profile,避免直接修改官方镜像;Add-EsxSoftwarePackage把目标VIB加进profile;Export-EsxImageProfile导出ISO供安装使用。
参数说明:-CloneProfile后面的名称从Get-EsxImageProfile的输出里复制,不要手打,容易拼错;-SoftwarePackage填的是VIB名,不是文件名,VIB名从第4章第4.1节的vib list第一列拿。导出后先用Get-EsxImageProfile | Select-Object Name, AcceptanceLevel确认接受级别,再在测试机装上验证。
有一个坑:如果驱动VIB的接受级别是CommunitySupported,而profile的接受级别是VMwareCertified,Add-EsxSoftwarePackage会直接拒绝。有人会去调低profile的接受级别来绕过,但这样做会让整个镜像接受所有社区签名包,安全隐患很大。我的建议是:如果官方补丁里已经包含这个驱动的官方版本,优先用官方版本,不要继续依赖社区驱动。我以前图省事,给几台同型号主机挨个SSH装驱动,有一台少传了一个文件,等到现场装机时才发现镜像里没驱动,又折腾半天。后来改成先把驱动固化进镜像,再批量安装,再也没出过这种低级问题。有条件的话,建议在测试环境把安装、验证、固化、回滚整个流程走一遍,再拿到生产上。希望帮到你。
本文还有配套的精品资源,点击获取