ESXi定制ISO指南:用ESXi-Customizer-PS集成网卡驱动解决No Network Adapters
发布时间:2026/10/1 9:27:11 作者:尧图编辑部 阅读量:1,286

如果你玩过ESXi大概率遇到过这种尴尬镜像已经写进U盘安装界面跑完引导结果弹出一句No Network Adapters Found整个流程直接卡死。我上个月给一台二手工作站装ESXi 8.0就撞上了——板载的Realtek R8125B完全不认最后是靠ESXi-Customizer-PS这个PowerShell脚本把网卡驱动的第三方VIB直接集成进官方ISO才把系统顺利装起来。这篇文章不是复述官方文档而是把我实际操作的完整过程、踩过的坑、以及那些文档里不会写的经验和盘托出。内容包括为什么非得在镜像阶段集成驱动、ESXi-Customizer-PS的工作逻辑、环境准备、一条命令的实战记录、最容易翻车的几个环节以及装完系统后怎么验证驱动真的生效。适合两类人看一类是homelab玩家想在非白名单硬件上装ESXi另一类是运维需要把OEM厂商驱动打到镜像里用于批量部署。1. 为什么必须在安装镜像阶段就集成驱动很多从Linux转过来的朋友会有一个固有认知驱动装不上系统起来之后补装不就行了在ESXi上这个思路大部分时候行不通得先从它的驱动机制说起。1.1 ESXi的驱动加载机制和普通Linux的根本区别Linux发行版的驱动是内核模块安装介质里带了一大批通用驱动系统起来之后可以通过modprobe等机制动态加载所以绝大多数硬件都能先装上系统再补驱动。ESXi完全不是这个路数。它的驱动被打包成一种叫VIB的安装包VIB在镜像构建阶段就被写入系统分区里一个叫bootbank的启动区域。VMkernel在引导过程中从bootbank加载驱动模块这个加载发生在文件系统可用之前、在你能执行任何命令之前。所以ESXi更像是一个嵌入式hypervisor驱动和系统镜像深度绑定改驱动就像改固件包不能指望运行后再动态塞一个模块进去。另一个关键点ESXi对硬件有一套严格的兼容性列表官方ISO默认只带HCL中认证过的驱动。不在列表里的硬件比如很多家用板载网卡ESXi官方镜像里根本没有对应驱动自然就出现“找不到网卡”“找不到控制器”的报错。1.2 哪些硬件最常卡在驱动上根据我在各种社区和实际装机中看到的案例以下几类设备最常见硬件类型典型型号常见驱动来源板载网卡Realtek RTL8111/8125B/8125G、Intel i225/i226硬件厂商网站、社区维护的VIB包USB转RJ45网卡Realtek RTL8153、AX88179社区VIB、厂商offline bundleSATA/RAID控制器部分板载SATA控制器、入门级RAID卡OEM厂商官方VIB、depot包NVMe控制器部分消费级NVMe在老旧服务器上社区VIBOEM定制硬件HP/Dell/Lenovo服务器设备OEM官网的定制depot包其中网卡驱动占了至少七成因为很多人装ESXi就是在普通台式机、二手工作站、软路由设备上玩这些机器的板载网卡大概率不在官方兼容列表里。我自己这次就是Realtek网卡的问题。1.3 装完系统再补驱动为什么不推荐少部分情况确实可以在系统装完后通过esxcli software vib install补装驱动但我不推荐你走这条路原因有三个。第一安装过程中如果识别不到网卡安装界面会卡住压根进不了后续流程。除非机器上刚好还有一张被ESXi认出的网卡或者你能把安装文件放到本地磁盘再继续否则这一步就把你堵死了。第二即使你通过某种方式装完了系统再补装驱动一旦后续打补丁、小版本升级ESXi的软件栈会重建第三方VIB很可能被移除或者报兼容性错误驱动就掉了得重新补很折腾。第三存储控制器、NVMe这类驱动如果不在bootbank里引导阶段可能连系统盘都认不到直接启动失败。这种问题不是进了系统能解决的。所以结论很简单如果设备的驱动需要第三方VIB最稳妥的做法就是在镜像层面搞定一次性生成一个定制好的安装ISO之后所有安装、重装、批量部署都拿这个ISO说话。2. 搞清楚ESXi-Customizer-PS的工作逻辑再动手工具名里带个PS指的就是PowerShell脚本版早期还有一个图形界面的ESXi-Customizer工具很多人分不清两者的关系和区别这里把底层的逻辑说清楚。2.1 它和图形版ESXi-Customizer、VMware官方Image Builder的关系ESXi-Customizer是早期一个Windows下的图形化小工具操作简单把ISO和驱动包拖进去点个按钮就完事。但问题在于它已经很久不更新了对ESXi 6.7之后的版本支持不好遇到底层depot结构变化就容易翻车。ESXi-Customizer-PS是VFrontDe社区作者维护的PowerShell脚本版可以看作图形版的继任者。它的本质并不是一个全新的工具而是把VMware官方提供的PowerCLI中的Image Builder模块封装成了几条更友好的命令。VMware官方的Image Builder本身能力很强但用起来麻烦你得先装PowerCLI然后手动执行Add-EsxSoftwareDepot添加软件源用Get-EsxImageProfile查看镜像配置New-EsxImageProfile创建新配置Add-EsxSoftwarePackage往里面加软件包最后Export-EsxImageProfile导出ISO。这一串命令每一条都有十几个参数很容易写错。ESXi-Customizer-PS做的事情就是把你从这些命令里解放出来你只需要给它一个官方ISO、一个装驱动文件的目录它会在脚本内部自动调用Image Builder完成整个工作流。2.2 核心工作流程拆解我在实际使用中总结它内部主要做了这样几件事加载VMware PowerCLI模块连接并初始化Image Builder把官方ISO注册为一个软件仓库depot把-pkgDir目录下的VIB或offline bundle包注册为附加软件仓库克隆一个现有的镜像配置文件覆盖新的驱动VIB解析驱动依赖确保新加入的VIB和当前ESXi版本匹配导出成一个全新的定制化ISO这里要特别注意第3步它支持的是VIB文件和offline bundle两种输入格式。VIB是单个驱动包offline bundle是打包好的一组VIB一般是一个zip压缩包。你把这两种文件放进同一个目录都行脚本会全部识别并集成。另外为什么脚本运行时经常会去访问VMware的在线depot因为Image Builder在做依赖解析时需要确认一些基础模块的版本关系如果某个依赖不在你的本地包里它就会尝试从VMware默认的在线仓库拉取。这就是为什么很多人在网络条件不好的环境下运行会卡住。后面我会讲离线处理方案。2.3 三种定制方式怎么选方式上手难度对新版本ESXi的支持批量操作友好度使用场景图形版ESXi-Customizer极低差老版本工具低老版本ESXi应急用ESXi-Customizer-PS低好社区持续更新中可脚本化绝大多数单机定制原生PowerCLI Image Builder高最好官方维护高可完全脚本化需要精细控制的复杂定制如果你只是想把几个第三方驱动打进ISO不涉及复杂的依赖关系直接用ESXi-Customizer-PS就够了。如果后续要维护几十台机器的驱动版本、做标准的补丁升级流程建议还是抽时间学一下原生Image Builder的命令虽然繁琐但可控性最强。3. 集成前的准备PowerShell环境、脚本、驱动包和源ISO磨刀不误砍柴工准备阶段是我看到翻车最多的地方。把环境整理清楚后面一条命令跑通很顺环境不行光报错就能折腾一晚上。3.1 确认PowerShell环境并安装VMware PowerCLIESXi-Customizer-PS依赖PowerShell和VMware PowerCLI这两个缺一个都跑不起来。第一步检查PowerShell版本。Windows 10/11自带的Windows PowerShell 5.1够用你要装PowerShell 7也能跑但注意要用64位版本。判断方法很简单在PowerShell里输入$PSVersionTable.PSVersion如果显示的是4.0以下先升级。新版本一般都在5.1以上不用太担心。第二步设置执行策略。默认情况下Windows禁止运行ps1脚本第一次使用会直接报错最好提前放开Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser第三步安装VMware PowerCLI。这是ESXi-Customizer-PS的底层依赖它负责提供所有与ESXi镜像相关的命令。安装只需要一条命令Install-Module -Name VMware.PowerCLI -Scope CurrentUser -Force下载过程可能会有点慢因为模块包不小。装完之后可以顺手设置一下证书验证避免实时连接vCenter或ESXi主机时被证书问题拦住Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false3.2 下载脚本本体并规划目录ESXi-Customizer-PS本身是一个单独的ps1脚本文件从它的GitHub仓库或社区发布页下载即可。下载后不要直接放在桌面或带空格的路径里建议建一个纯英文短路径的目录比如D:\ESXi-Customizer里面再建一个drivers子目录用来放驱动包。整个目录结构大概这样D:\ESXi-Customizer\ ESXi-Customizer-PS-v2.8.1.ps1 VMware-ESXi-8.0-20513097.iso drivers\ net-r8125-8125b-1.0.0.vib脚本文件名里的版本号以你实际下载到的为准后面实际使用命令时改成对应文件名。3.3 驱动包VIB、Offline Bundle和获取渠道驱动包经常让新手一头雾水这里把概念理清楚。VIB是VMware的独立软件包格式相当于ESXi世界里的.exe安装包一个VIB通常对应一个驱动或功能模块文件扩展名是.vib。Offline Bundle则是一个zip压缩包里面包含多个VIB以及它们的元数据、依赖关系说明适合批量部署离线安装场景。ESXi-Customizer-PS的-pkgDir目录下这两种格式可以混放。脚本启动时会扫描整个目录把里面所有的VIB和zip包都作为软件源添加进来。获取渠道上我的经验是按优先级来硬件厂商官网直接提供ESXi驱动下载比如Intel官网、某些存储控制器厂商会提供offline bundleVMware官方社区驱动的Flings项目Intel的i225/i226网卡驱动就在那厂商OEM官网比如你的是HP机器去HP官网下载对应版本的ESXi定制depot包社区论坛里特定芯片的VIB包比如Realtek网卡社区维护的包比厂家自己提供得还勤快下载时务必确认两件事驱动包的对应ESXi版本是几以及该包对应的硬件芯片版本是什么。Realtek同系列网卡还分RTL8125B和RTL8125BGVIB版本不匹配装了也认不出设备。3.4 官方源ISO与网络准备定制镜像需要一个干净的官方ISO作为底包不要用什么精简版、二次封装版不然出了问题没法定位是我们集成的问题还是底包的问题。官方ISO需要VMware账号从官网下载一般选标准版Standard即可。下载时注意镜像的版本号比如ESXi 8.0 GA版本号是20513097后面可能会有u1、u2版本不同对应的VIB兼容性也不一样尽量和你的驱动包声明支持的版本保持一致。网络方面由于脚本运行时可能需要访问VMware的在线depot做依赖解析建议在能正常访问VMware官方下载服务器的网络环境下操作。如果你网络条件不好也别急我在下一章会详细说离线定制怎么做。4. 实战记录一条命令把Realtek驱动打进ESXi 8.0镜像进入正题。我以Realtek R8125B网卡驱动为例演示完整的实战过程。4.1 命令格式与参数说明打开PowerShell先切换到脚本所在目录cd D:\ESXi-Customizer然后执行.\ESXi-Customizer-PS-v2.8.1.ps1 -izO .\VMware-ESXi-8.0-20513097.iso -pkgDir .\drivers -nsc -v80逐个拆解参数参数作用-izO指定源ISO文件或离线bundle zip文件i代表inputz代表zipO代表ISO所以是-i-z-O三个字母的组合注意大小写-pkgDir指定存放驱动包的目录脚本会自动扫描该目录下所有VIB和zip包-nsc跳过社区支持包检查第三方驱动本身不在官方支持列表里加上这个参数可以避免脚本在兼容性检查阶段卡住-v80指定目标ESXi版本为8.0如果脚本版本较新能自动识别也可以不写但显式指定更稳这里要提醒一句不同脚本版本的参数名称和写法可能有细微差异尤其是我上面用的-v80这种指定版本的参数在旧版脚本里可能不存在。最稳妥的办法是执行一次不带任何参数的脚本它会直接打印出帮助信息列出当前版本支持的所有参数.\ESXi-Customizer-PS-v2.8.1.ps1看到帮助输出后再按对应参数名组装自己的命令。4.2 执行过程全记录命令敲下去之后脚本会先加载PowerCLI模块这步通常会花个十几秒。加载成功后会看到一堆PowerCLI的初始化输出中间可能会弹出PowerCLI的配置提示按回车确认即可。接下来脚本开始处理ISOAdding your source ISO to the depot... The ISO file contains: ESXi-8.0.0-20513097-standard Adding packages from D:\ESXi-Customizer\drivers... Importing package net-r8125... Successfully imported 1 VIB(s). Cloning the image profile... Creating new image profile: ESXi-8.0.0-20513097-standard-customized Injecting package net-r8125 into the profile... Writing ESXi image now... This may take a couple of minutes...看到Writing ESXi image now就说明进入最后的镜像导出阶段了这步主要看磁盘性能快的一两分钟慢的五六分钟。完成后脚本会输出新ISO的存放路径Image written successfully to: D:\ESXi-Customizer\VMware-ESXi-8.0.0-20513097-customized.iso这就意味着镜像已经生成可以拿去做启动盘了。4.3 网络受限时的离线定制方案有时候你会碰到这种情况所有准备工作都好了脚本一跑卡在添加VMware在线depot那一步提示连不上VMware下载服务器。这不是脚本问题是网络环境问题。这时有两个思路。思路一如果脚本版本支持离线参数可以在命令后面加上-offline参数表示不访问在线仓库完全使用本地文件。但要注意这种方式要求你的驱动包和ISO之间不存在未满足的依赖否则会因为找不到在线仓库而报错。思路二在有网络的机器上提前把VMware官方对应版本的offline bundle文件下载到本地然后把zip文件也放进-pkgDir目录里再执行命令。这样脚本在依赖解析时会优先从本地仓库中查找不依赖在线仓库就能完成任务。我自己的经验是如果机器网络不好别干等直接用思路二把需要用到的bundle文件准备好离线执行的成功率反而更高。另外脚本运行时会在目录下生成一些缓存文件如果连续多次运行出现奇怪的报错把脚本目录下的depotCache等缓存文件夹手动删掉再试很多灵异问题都能解决。5. 踩坑实录最容易翻车的几个环节定制镜像本身不难难的是过程中各种莫名其妙的报错。我把实际遇到过的以及身边朋友踩过的问题集中复盘一下省得你再走一遍弯路。5.1 执行策略拦截和杀毒软件误报第一次运行脚本就在加载阶段挂掉大概率是执行策略问题报错内容里会出现UnauthorizedAccess或NotAllowed字样。解决方法就是前面提到的Set-ExecutionPolicy把当前用户执行策略改成RemoteSigned。还有一个容易被忽略的因素是杀毒软件。ESXi-Customizer-PS在运行时会释放临时脚本、调用PowerCLI模块并生成大型镜像文件有些杀毒软件的启发式引擎会把这种操作判定为异常行为把临时文件隔离或直接终止进程表现就是脚本跑到一半突然消失或报错无权限访问某个文件。遇到这种情况先把脚本所在目录加入杀毒软件的白名单再重新执行。不要关杀毒软件容易给自己留隐患加白名单就够了。5.2 脚本卡在下载或连接VMware depot这个坑前面提过表现是脚本运行到添加在线软件源时长时间不动最后报超时或网络错误。排查步骤我建议这么来先用浏览器访问VMware的下载页面确认当前网络是否能正常访问VMware的下载服务器如果确认访问不了直接切换到离线模式或使用本地bundle方案如果浏览器能访问但脚本连接失败检查是否有防火墙或安全软件拦截了PowerShell进程的对外连接另外注意脚本如果中途断过电、强杀过进程下次运行可能会报缓存损坏别犹豫删除脚本目录下的缓存文件夹再跑一遍。5.3 VIB的acceptance level与镜像不匹配运行过程中如果报出这样的错误信息The VIB net-r8125-x.x.x requires acceptance level [CommunitySupported] but the image profile requires [VMwareCertified]这是因为ESXi对软件包有一套信任分级机制从高到低分别是VMwareCertified、VMwareAccepted、PartnerSupported、CommunitySupported。官方ISO默认要求VMwareCertified而第三方驱动包大概率是CommunitySupported两者不匹配。常见的解决办法是在原生PowerCLI中用Set-EsxImageProfile -AcceptanceLevel CommunitySupported把镜像配置接收级别降下来再导出ISO。ESXi-Customizer-PS在一些版本中会自动降级处理并给出提示如果你的脚本版本没自动处理就要转用原生PowerCLI来处理这一步。但我要提醒一句acceptance level降低之后镜像的安全性边界会放宽只应用在自己可控的设备上没问题如果是要给生产环境批量部署尽量找acceptance level更高的官方驱动包别为了省事无脑降级。5.4 镜像集成成功安装时仍然找不到设备这是最让人血压升高的情况脚本输出成功ISO也生成了U盘也写好了结果进安装界面还是提示找不到网卡。这种问题一般是三个原因第一驱动芯片型号对不上。RTL8125B和RTL8125BG是两个不同的芯片版本VIB驱动可能只支持其中一种装了不匹配的驱动等于白装。确认方式很简单看驱动包描述里对pci vendor id和device id的声明再对照自己硬件的ID。第二写入U盘的方式不对。ESXi ISO的引导方式和传统Windows不太一样用Rufus刻录时较新版Rufus默认写入方式可能有问题建议在写入时选择DD镜像模式能兼容更多引导场景。第三驱动包版本不是针对当前ESXi版本的。ESXi 8.0发布后旧版7.0驱动的VIB结构不兼容装进去之后不报错但也不生效。遇到这种情况只能去驱动发布页面找对应8.0版本的包。排查顺序建议是先确认驱动包确实被注入再确认硬件ID匹配最后重新用DD模式刻录U盘测试。5.5 PowerShell和PowerCLI的版本兼容性问题新版PowerCLI对系统环境的要求越来越高如果安装的是比较新的PowerCLI版本首次运行脚本时可能会自动安装一些依赖模块表现为执行后长时间没有输出其实是它在后台检测并安装模块。另一种情况是PowerCLI装了一部分但没装完整跑起来报找不到VMware.VimAutomation.Core模块解决方法是重新执行Install-Module -Name VMware.PowerCLI -Scope CurrentUser -Force强制装全。还碰到过一种场景机器上装了PowerShell 7和Windows PowerShell 5.1两套环境用户在PowerShell 7里运行脚本部分底层命令不兼容导致奇怪报错。我现在的固定习惯是用Windows PowerShell 5.164位来跑ESXi-Customizer-PS少掉很多兼容性麻烦。5.6 后续补丁升级时第三方驱动被冲掉这个坑比较隐蔽发生在你成功完成定制并装好系统之后的几个月。官方发布ESXi 8.0 Update 1你想着打个补丁结果补丁打完后发现第三方网卡驱动消失了或者网卡正常但驱动版本被官方基础包覆盖了。原因在于ESXi的补丁机制会重置bootbank软件包状态第三方VIB如果没有标记为可持久保留就可能被清理或覆盖。应对方案就是老实用前面定制ISO的方式重新做一个补丁版ISO不要图省事在线打补丁。我现在的工作习惯是每次官方发布新版本就重新跑一遍ESXi-Customizer-PS把定制ISO更新到最新版本再在测试机上验证一遍网络和存储都正常再推广到其他机器。虽然多花点时间但很稳妥。6. 集成之后怎么确认驱动真的生效了烧录、安装都做完之后别急着以为万事大吉验证驱动是否真正生效是最后一道工序。6.1 安装界面和DCUI的第一层判断如果你在安装流程中直接看到了网卡被识别说明集成成功了一大半。但有些情况下网卡在安装界面显示为未知或未就绪这时候不要慌装完系统再进管理界面看更准确。进入ESXi的Direct Console UI后选择Configure Management Network如果能看到网卡出现在Network Adapters列表里并且可以勾选说明驱动已经成功加载并处于可用状态。如果这里看不到后面用命令行的方式进一步排查。6.2 用esxcli命令精确验证最精确的验证方式是打开SSH功能在另一台机器上远程登录ESXi主机执行以下命令查看网络网卡信息esxcli network nic list输出里应该能看到类似这样的内容Name PCI Device Driver Link Status Speed Duplex MAC Address vmnic0 0000:02:00.0 r8125 Up 1000 Full xx:xx:xx:xx:xx:xxDriver列显示的是r8125这个就是刚才集成进去的第三方驱动名称而不是系统默认的vmxnet3或其他通用驱动。再确认一下当前系统里所有已安装的VIBesxcli software vib list | grep -i realtek如果能看到对应的VIB名称比如net-r8125且状态是normal那驱动就完全在正常工作状态。还可以进一步查看网卡硬件信息确认链路速率、PCI设备号都没问题esxcli network nic get -n vmnic06.3 驱动管理要单独建档这里是我自己的一个习惯每台定制过驱动的ESXi主机我会单独建一个文档记录三样东西定制时用的官方ISO文件名和版本号、驱动包文件名和版本号、ESXi-Customizer-PS的完整命令。为什么要这么干因为这三次信息缺一不可。半年后官方出升级包你要重新做定制ISO时如果找不到当时用的那几个驱动包就得从头开始在网上找还可能找到过时版本浪费时间还容易出错。另外每隔一段时间检查一下驱动发布页面有没有更新版本的VIB如果遇到性能问题或者稳定性问题新版驱动往往能解决。更新驱动的方式也很简单用新版VIB重新执行一次定制流程再重装系统就行。如果你装的系统已经在运行不想重装也可以尝试用esxcli software vib update在线升级单个VIB但前提是当前驱动处于工作状态不然升级失败系统网络就断了。ESXi定制第三方驱动这件事说穿了就是一个把VIB塞进ISO的过程难的不是命令本身而是理解它背后的机制、选对驱动包、处理好环境问题。第一次跑通之后第二次、第三次就是一分钟的事。之后再装ESXi遇到不认硬件我第一反应已经从“换硬件”变成“拿ESXi-Customizer-PS定制一个镜像出来”这个工具对我来说已经成了装ESXi的标配。