ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

ESXi不认网卡?用ESXi-Customizer-PS注入驱动制作自定义ISO

ESXi不认网卡?用ESXi-Customizer-PS注入驱动制作自定义ISO 玩VMware ESXi的人十个里有八个都卡过这么一关官方ISO下载好了U盘做好了启动安装也都顺利偏偏一进到选择存储或者准备开Web管理页面的时候发现自己的网卡根本不被系统识别只能盯着屏幕发愣。这事情在DIY主机、软路由、老服务器上尤其常见我自己就帮朋友处理过好几台螃蟹网卡认不出来的机器。ESXi-Customizer-PS就是专门解决这个问题的工具它是ESXi-Customizer的PowerShell脚本版核心用途是把第三方驱动注入到ESXi离线包中重新生成一个带驱动的自定义ISO再用这个ISO去安装ESXi。如果你手头是Realtek网卡、板载螃蟹卡、部分USB转网卡这类官方镜像里不带驱动的硬件这篇文章可以直接当作一套完整操作手册来用。这套方法我从ESXi 6.x用到7.x一直觉得很稳。下面不绕弯子直接从为什么需要它开始逐步讲到原理、环境准备、完整实操和故障排查。整个过程不算复杂一台Windows电脑加上几样素材就能搞定但要真正跑通有几个细节必须留意。1. 这工具解决什么问题装完ESXi不认网卡的根源1.1 VMware官方镜像的驱动范围有限很多人第一次接触ESXi是从官网下了一个标准ISO开始。这个ISO里包含了VMware Hypervisor本体和一批经过认证的驱动覆盖常见服务器厂商的硬件。但问题恰恰出在覆盖范围上——VMware做兼容性测试的硬件池主要是戴尔、惠普、联想、超微这些服务器品牌大批消费级主板、软路由网卡、家用NAS板载网卡并不在测试清单里。ESXi系统启动后要靠vmkernel里的网卡驱动去识别物理网卡如果镜像里没有对应驱动网卡就不会出现在网络管理界面里。更尴尬的是ESXi和普通Linux发行版不一样你不能随便进系统敲几条命令装个驱动包它是一个封闭的Hypervisor系统驱动需要在镜像层面提前集成好。这就是为什么我们需要ESXi-Customizer-PS去开小灶。另外要理解ESXi的驱动以VIB格式存在。VIBvSphere Installation Bundle相当于ESXi世界的驱动安装包里面包含了驱动二进制文件和对应的元数据。官方ISO只内置经过认证的VIB第三方VIB想要进入系统要么在构建镜像时注入要么在已安装的ESXi里用esxcli命令安装。1.2 ESXi-Customizer-PS 和它的前辈们老玩家可能听过ESXi-Customizer那个是图形界面工具早期很多人用它给ESXi 5.x、6.0注入驱动。后来作者又推出了PowerShell脚本版也就是ESXi-Customizer-PS支持通过命令行操作可以自动化、批量处理而且对离线包的兼容性更好。现在网上能找到的教程大多围绕脚本版展开原因很简单图形版停止更新很久了新版本ESXi支持不理想脚本版却一直有社区维护API调用也更灵活。脚本版的本质是利用VMware官方的Image Builder组件来构建自定义镜像。你可以把它理解为用PowerShell脚本包装了官方镜像构建流程脚本负责解析离线包、加载驱动、选择镜像配置文件、导出ISO把原本要敲一堆PowerCLI命令才能完成的操作压缩成一行命令。1.3 你该不该用这个方案这个方案不是给所有人准备的。如果你的服务器在VMware官方兼容列表里老老实实用官方ISO肯定最省事毕竟自定义镜像在官方技术支持层面是不受认可的。但对于玩家用机、DIY软路由、All in One主机的人来说这几乎是唯一的出路。我见过不少人因为网卡不认只好去买一张Intel的服务器网卡替换其实先用ESXi-Customizer-PS试试多半能省下这笔钱。还有一个使用场景是批量装机。单位里有一批相同配置的机器需要部署ESXi手动给每台机器装系统后再逐个注入驱动太浪费时间直接把驱动合入ISO装机一步到位效率完全不一样。这也是脚本版比图形版更有价值的地方。2. 原理和准备脚本是怎么把驱动塞进镜像的2.1 脚本背后的机制Image Builder 离线打包ESXi-Customizer-PS的运作原理核心是VMware PowerCLI中的Image Builder模块。Image Builder支持两种操作模式在线模式和离线模式。在线模式需要连接vCenter或者ESXi主机从线上depot拉取软件包离线模式则是直接操作本地下载好的离线包Offline Bundle从Zip文件里解析Image Profile和VIB。脚本用的就是离线模式。它会把ESXi离线包Zip里的所有VIB读取出来再把你准备的第三方VIB一并加入一个临时depot中然后基于你指定的Image Profile创建一个新配置把第三方VIB以额外扩展的形式加入最后导出为ISO。整个过程在Windows本地完成不需要ESXi主机参与。有人可能会问为什么不直接在装好的ESXi里用esxcli software vib install安装驱动这当然也可以但存在一个先有鸡还是先有蛋的问题ESXi装好了但网卡不识别你根本没法通过网络把VIB传到主机上。虽然可以用esxcli的交互式操作或者维护模式从本地路径安装但对新手来说门槛明显更高。离线注入的好处是从安装源头解决系统装完驱动就在一个U盘就能部署到任意相同硬件的机器上。2.2 环境准备Windows PowerShell 5.1 PowerCLIESXi-Customizer-PS运行在Windows环境下严格说是Windows PowerShell环境下。这里有个容易踩的坑脚本对PowerShell 7也就是PowerShell Core支持不好最稳妥的是用系统自带的Windows PowerShell 5.1。环境准备分四步走第一步打开Windows PowerShell。在开始菜单搜索PowerShell右键选择以管理员身份运行这一点很重要否则后面安装模块和修改执行策略都可能失败。第二步调整执行策略。Windows默认禁止运行脚本需要先执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser执行后会提示确认输入Y即可。这一步的意思是只允许运行本地脚本和经过签名的远程脚本既保证安全又不会卡住后续操作。第三步安装VMware PowerCLI模块。PowerCLI是VMware官方的PowerShell管理模块ESXi-Customizer-PS依赖它来调用Image BuilderInstall-Module -Name VMware.PowerCLI -Scope CurrentUser如果网络环境允许这个命令会从PowerShell Gallery拉取模块。安装过程中出现NuGet提供程序提示时选择是即可。整个模块体积不小需要耐心等一会儿。第四步验证安装结果Get-Module -ListAvailable VMware.PowerCLI Get-Command -Module VMware.ImageBuilder | Select-Object -First 5能看到命令列表说明Image Builder模块已经就位。提示新版PowerCLI首次加载时可能提示是否加入CEIP客户体验改进计划按需选N或Y都可以不影响功能使用。如果公司网络有代理PowerShell Gallery连接不上的话可以考虑配置代理或者换一个网络环境这个属于基本网络问题这里不展开。2.3 素材准备ESXi离线包与第三方VIB驱动包环境搭好之后需要准备两份核心素材ESXi离线包和第三方VIB驱动包。ESXi离线包长得和普通安装ISO不一样它不是.iso文件而是.zip格式名字通常类似VMware-ESXi-7.0U2-xxxxxxx-depot.zip。这个zip包可以从VMware官网下载现在Broadcom接管之后需要注册账号并关联产品授权下载路径变了几次但找 VMware vSphere Hypervisor 的离线包入口总归能找到。注意离线包和ISO是两个东西下载的时候别搞混了Image Builder只认zip格式的depot包。第三方VIB驱动包就需要根据自己的硬件去对应厂商找。以最常见的Realtek网卡为例官方会提供ESXi驱动下载下载到一个zip压缩包里面可能包含.vib文件、离线bundle以及一个说明文档。一些硬件厂商社区也会整理驱动下载页面。拿到驱动包之后先解压目标是找到以.vib结尾的文件。有的下载包解压后还是一个包含vib的zip离线包那就再解压一层。ESXi-Customizer-PS扫描-pkgDir参数指定的目录时会找.vib后缀的文件直接把多级嵌套的压缩包丢进去是不行的。注意VIB驱动和ESXi版本必须配套。ESXi 6.7的驱动就别指望注入到7.0的离线包里还能正常工作反过来也一样。驱动厂商一般会在下载页面标注支持的ESXi版本下载前务必看清楚。3. 实操生成带第三方驱动的ESXi安装ISO3.1 目录规划和脚本解压素材备齐后先规划一个干净的工作目录。我的习惯是把所有东西集中在一个文件夹下避免后面路径写错。比如在C盘根目录建一个ESXi-Customizer文件夹下面再分几个子目录C:\ESXi-Customizer\ ├── ESXi-Customizer-PS-v2.6.0.ps1 ├── ESXi-7.0U2-depot.zip └── drivers\ ├── 8105b.vib └── r8125.vibESXi-Customizer-PS脚本本身是一个独立PowerShell脚本文件从社区下载或者从网上仓库拉取都可以。下载后核对一下脚本版本确认支持的ESXi版本范围。虽然脚本主体已经稳定很久了但下载来源一定要可靠毕竟要对安装镜像动刀脚本被篡改过会出大问题。注意脚本文件的扩展名必须完整显示有些下载工具可能把.ps1后缀弄丢检查一下文件类型确保能在PowerShell中正确加载。3.2 执行注入命令完整参数解析准备工作完成后在管理员PowerShell窗口里切换到工作目录然后执行注入命令。最核心的命令长这样cd C:\ESXi-Customizer .\ESXi-Customizer-PS-v2.6.0.ps1 -izip .\ESXi-7.0U2-depot.zip -pkgDir .\drivers -outDir .\output -v70 -nsc -noprompts这里每个参数都有讲究下面逐个拆开说-izip参数指定ESXi离线包的位置必须指向.zip格式的depot包不能指向ISO。如果你只有一个ISO没有zip包那就需要先把ISO里的文件提取出来或者另找depot版本。其实官网下载页通常ISO和depot包都会提供直接下depot包最省事。-pkgDir参数指定存放第三方VIB的目录脚本会扫描这个目录下所有.vib文件并尝试加入镜像。这里我把所有驱动放在drivers子目录路径写相对路径即可注意路径里不要有中文也不要带空格免得解析出问题。-outDir参数指定输出ISO的目录。执行完命令后生成的自定义ISO会出现在output目录。可以自定义任意路径但同样建议用简单英文路径。-vXX参数非常重要它告诉脚本要从离线包里选哪个Image Profile。例如-v60对应ESXi 6.0-v65对应ESXi 6.5-v67对应ESXi 6.7-v70对应ESXi 7.0。如果不填脚本可能会默认选择第一个profile或者因为无法确定而报错。这里建议每次执行都显式写好版本参数避免意外。-nsc参数是跳过支持检查Support Check。ESXi社区版或者一些第三方驱动包在VMware官方支持检查里过不了加上这个参数可以跳过检查减少报错。如果执行时不加脚本偶发提示不支持容易中断流程所以通常直接加上。-noprompts参数是关闭交互提示让脚本一路上自动运行。如果不加脚本中途可能会问是否接受EULA、是否覆盖文件等交互问题人盯着还好万一离开一会儿脚本卡住就尴尬了。脚本参数解释可以看脚本开头注释不同版本可能略有差异但这个版本基本是稳定的。执行后能看到类似这样的输出流程加载depot、解析VIB、创建Profile、添加VIB、导出ISO。整个过程持续几分钟主要取决于离线包大小和电脑性能。看到导出ISO文件成功并且生成类似ESXi-7.0U2-customized.iso的文件就说明注入完成。3.3 注入成功后的检查和验证ISO生成后先别急着去装机花一分钟做个快速验证。可以用7-Zip打开生成的ISO看看里面有没有vm.gz、efi目录等关键文件。如果ISO能正常打开、目录结构完整至少说明导出过程没出错。更严谨的验证方式是把ISO挂载到虚拟机上或者直接用VMware Workstation建个虚拟机从ISO启动看启动界面是否正常。不过这需要额外时间如果只是物理机装机直接做启动U盘去目标机器上试也行。我第一次操作时直接在真机上试了好在一次通过。这里有一个经常被忽略的细节ISO里驱动是否真的进去用肉眼是看不出来的。真正判断标准是装完ESXi后进入DCUIDirect Console User Interface按F2打开管理界面看网卡是否被识别。只要网卡出现在配置界面里驱动注入就算成功了。这也是我后来装机改用的验证方式——效率最高直接一步到位。3.4 用自定义ISO安装ESXi的完整要点ISO生成后需要把它做成启动U盘。网上常用的工具是Rufus选择ISO文件后会提示写入模式默认的ISO模式即可不需要强制选择DD模式。写入完成后把U盘插到目标机器上开机进BIOS设置从U盘启动。安装过程中有几个点需要特别注意。首要的一点是Secure Boot问题。ESXi 7.0之后默认支持Secure Boot但自定义ISO里注入的第三方VIB没有VMware官方签名在开启Secure Boot的UEFI模式下极可能启动失败。所以装机前进BIOS把Secure Boot关闭。如果是一台需要严格安全环境的服务器那就不要用第三方驱动老老实实买兼容硬件。其次是引导模式的选择。如果是家用主板UEFI和Legacy模式都支持建议BIOS里开启UEFI引导然后关闭Secure Boot这和主流U盘的引导兼容性最好。某些老主板默认Legacy引导Rufus写入的U盘也能适配不要纠结能启动就行。安装完成进入系统后建议执行一条命令确认驱动状态esxcli software vib list | grep 驱动名称关键词比如装了Realtek的r8125网卡驱动就grep r8125能看到对应驱动条目以及版本号驱动就确认到位了。这一步不是必须的但可以帮助判断问题方向后面排查也方便。4. 常见问题与排错速查4.1 脚本无法启动或命令不识别很多人卡在最开始的一步执行脚本时PowerShell直接报无法加载文件因为在此系统上禁止运行脚本。这个报错基本可以断定是执行策略没有放开。解决方法是回到第二章说的Set-ExecutionPolicy RemoteSigned记得要以管理员身份运行PowerShell。还有一种情况是即使用管理员身份依然提示模块找不到、New-PSDrive之类命令不识别。这通常意味着VMware PowerCLI安装不完整或者PowerShell路径加载不到模块。可以先重启PowerShell窗口再执行Get-Module -ListAvailable VMware.PowerCLI确认模块是否存在。如果模块列表里没有重新安装一次PowerCLI就好。我遇到过挺特殊的报错是在Windows PowerShell和PowerShell 7混用的情况下产生的明明PowerCLI在PowerShell 7里装了脚本却用Windows PowerShell去跑两边模块路径不一样自然找不到。所以建议统一使用Windows PowerShell 5.1跑完整流程不要把两个版本混着用。4.2 驱动注入后启动失败Secure Boot与签名这是自定义ISO最容易翻车的地方。装好系统后虚拟机或者物理机启动卡在引导阶段屏幕出现红色报错或者直接黑屏十有八九和Secure Boot有关。前面提到VMware 7.0及以后版本对UEFI Secure Boot支持更严格。注入的VIB如果没经过官方签名验证Secure Boot会拒绝加载直接导致启动失败。解决办法就一个进BIOS关掉Secure Boot。这一步不复杂开机按Del或者F2进BIOS找到Secure Boot选项设置为Disabled保存重启即可。装完系统后如果没有硬性安全需求也可以一直保持关闭。不过需要说明的是不是所有第三方驱动都会在启动阶段生效有些驱动是加载型的引导时不参与到系统起来后才加载这类驱动在Secure Boot开启下反而能正常用。问题在于我们无法百分百预判某个驱动的行为所以还是关闭Secure Boot最稳妥。4.3 驱动注入不生效的几种情况生成ISO看着没问题安装也顺利但进系统网卡依旧不出现。这种情况通常是以下三个原因之一。第一个原因是VIB版本和ESXi版本不匹配。比如往7.0的depot里塞6.5的驱动脚本可能不加提示就完成了注入但驱动内核接口对不上启动后加载失败。这种问题只能去驱动厂商页面重新下载对应ESXi版本的VIB。第二个原因是驱动VIB文件本身损坏或不完整。有些下载链接给的zip解压时因为压缩工具版本问题导致vib文件截断。建议重新下载、重新解压用比较标准的解压工具处理后再次注入。第三个原因是VIB包里的驱动对应的硬件型号和实际不符。比如你网卡是RTL8125B下载的VIB只支持RTL8125A型号不完全匹配照样识别不了。所以下载驱动时建议根据网卡实际芯片型号仔细核对必要时用设备管理器确认硬件ID再找驱动。4.4 安装阶段的认知误区还有一类问题属于教程看少了的误会。有人把自定义ISO做好后直接用UltraISO改原版ISO的方式来加驱动这不靠谱。ESXi驱动集成不是往ISO文件里塞个驱动文件就能生效的必须通过Image Builder构建镜像配置VIB注册到系统仓库里驱动才会在启动时被正确加载。也有人问能不能在装好的ESXi上用虚拟机方式解决驱动问题这类软件层面的歪门邪道都是行不通的。ESXi的物理网卡驱动必须存在vmkernel层面虚拟机里做不了只能从镜像层解决。4.5 常见问题速查表现象直接原因解决办法脚本被禁止运行执行策略未放开Set-ExecutionPolicy RemoteSigned找不到PowerCLI命令模块未安装或版本混用管理员PowerShell重装VMware.PowerCLI打开depot失败离线包路径错误或文件损坏检查-izip路径核对sha256没有匹配的Image Profile-v版本参数和depot版本不一致修改-v参数为对应版本注入后启动失败Secure Boot阻止无签名VIB关闭BIOS中的Secure Boot装完网卡仍不识别VIB版本/型号不匹配核对驱动版本与硬件型号ISO文件无法引导U盘写入方式不对用Rufus标准ISO模式重写U盘这些坑我基本都踩过一遍现在回头总结其实问题都不复杂关键是顺序别乱。执行策略、模块安装、命令参数、BIOS设置这四样都对了流程基本就顺畅了。5. 最后一件事驱动宁可少而精不要贪多最后分享一个我自己踩坑后的操作习惯。用ESXi-Customizer-PS集成驱动的时候驱动目录里永远只放这台机器真正需要的VIB绝不贪多。市面上能找到的各种驱动合集包看起来很省事一塞就是十几个VIB但副作用是ISO体积变大、排查问题更麻烦甚至可能出现多个驱动抢占同名网卡的情况。我最早就是图省事把所有能找到的网卡驱动全塞进去结果某次装完系统驱动列表里一团乱麻反而不好判断默认加载了哪个驱动。现在我的做法是先确认主板型号和网卡芯片去厂商页面找对应ESXi版本的VIB单独下载后注入。这套流程用下来成功率几乎百分百。ESXi-Customizer-PS这个脚本我从6.x一直用到7.x操作逻辑基本没大变希望这篇文章也能帮你省下一个周末。
返回列表