ESXi 8.0U1 关键故障排除指南

谭永东

<p class="ql-block">前后折腾了两个星期,解决了若干的疑难杂症。</p><p class="ql-block">整理一下,备查。</p><p class="ql-block">也供遇到相同问题的朋友们参考。</p><p class="ql-block">虚拟机不是那么好玩的,全凭年轻时玩儿Unix系统积累的一些经验。</p><p class="ql-block">一台物理机,装个esxi系统,实现物理机的虚拟化,然后装各种虚拟机,路由器、NAS、win10…等,值得一试。</p><p class="ql-block">——————</p><p class="ql-block">总结一下ESXI8.0U1几个关键故障的排除方法。</p><p class="ql-block">(1)UEFI不兼容导致屏幕显示卡住;(2)USB驱动不兼容导致键盘鼠标不能识别,换用720202PCIeUSB卡,解决键盘输入问题;</p><p class="ql-block">(3)vmk0网卡误删后如何恢复?</p><p class="ql-block">(4)实现ipv6地址设置永久化;</p><p class="ql-block">等硬核疑难问题!</p> <p class="ql-block"><b style="color:rgb(22, 126, 251);">经过这一轮折腾, ESXi 8.0U1 已经不是普通安装调试,而是一次典型的非官方硬件平台运行企业级虚拟化系统的深度适配过程。涉及 BIOS/UEFI、PCIe、USB 驱动、网络栈、VMkernel 配置恢复等多个层面。</b></p><p class="ql-block">在折腾 ESXi 8.0 Update 1</p><p class="ql-block">(尤其是非官方认证的消费级主板或工控机)时,这类硬件兼容性与网络误操作极具代表性。</p><p class="ql-block">总结这四个核心故障的触发机理与标准排查/修复方案:</p><p class="ql-block"><br></p><p class="ql-block"><b style="font-size:20px;"> 一</b><b style="font-size:20px; color:rgb(22, 126, 251);">. UEFI 不兼容导致的引导/显示卡住</b></p><p class="ql-block">在引导 ESXi 8.0U1 时,经常在 Relocating modules and starting up the kernel... 或 Initializing Shifted I/O... 处黑屏或卡住。</p><p class="ql-block">Shutting down firmware service...</p><p class="ql-block">Using 'simple offset' UEFI RTS mapping policy</p><p class="ql-block">Relocating modules and starting up the kernel...</p><p class="ql-block">之后屏幕无输出或 DCUI 无法显示,但网络可能仍通(能 ping 通)。</p><p class="ql-block"><br></p><p class="ql-block">故障原因</p><p class="ql-block">ESXi 8.0 对硬件 GOP(Graphics Output Protocol)和 CSM(兼容性支持模块)的要求非常严格。许多消费级主板(或带核显的 CPU)在 UEFI 下无法正确为 ESXi 内核分配帧缓冲区(Framebuffer)。</p><p class="ql-block"><br></p><p class="ql-block"> 排查与解决方案</p><p class="ql-block">方案 A:临时修改内核启动参数(测试用)</p><p class="ql-block"> 1. 在 ESXi 引导菜单界面,迅速按下 &lt;kbd&gt;Shift&lt;/kbd&gt; + &lt;kbd&gt;O&lt;/kbd&gt; 进入内核参数编辑模式。</p><p class="ql-block"> 2. 在默认参数末尾添加空格,然后输入以下参数之一:</p><p class="ql-block"> ignoreHeadless=TRUE</p><p class="ql-block"> 或针对显卡分配问题添加:</p><p class="ql-block"> vga=keep</p><p class="ql-block"> 3. 按 &lt;kbd&gt;Enter&lt;/kbd&gt; 启动。若能顺利进入系统,说明是显卡驱动/显示输出分配失败。</p><p class="ql-block"><br></p><p class="ql-block">方案 B:BIOS 设置修正(根本解决)</p><p class="ql-block"> 开启 CSM 模拟模式:在 BIOS 中将 Boot Mode 设为 UEFI only,但开启 CSM Support(若主板支持)。</p><p class="ql-block"> 调整 Primary Display:若有独显,将主显示输出设为 PEG/PCIe;若为无显卡服务器/工控机,开启 Headless Mode。</p><p class="ql-block"> 禁用 Above 4G Decoding / Re-Size BAR:部分主板的 4G 寻址与 ESXi 启动核显冲突,可先尝试关闭。</p><p class="ql-block"><br></p><p class="ql-block">按Shift + O</p><p class="ql-block">加入启动参数:</p><p class="ql-block">norts=1 vga=TRUE</p><p class="ql-block">作用:</p><p class="ql-block">norts=1</p><p class="ql-block">关闭某些图形终端重定向功能,避免 EFI framebuffer 冲突。</p><p class="ql-block">vga=TRUE</p><p class="ql-block">强制 VGA 输出模式。</p><p class="ql-block"><br></p><p class="ql-block"><b style="color:rgb(22, 126, 251); font-size:20px;">二. USB 驱动不兼容导致键鼠失灵及 PCIe 扩展卡救急</b></p><p class="ql-block"><br></p><p class="ql-block">ESXi 8.0 彻底抛弃了旧版 vmkusb 架构中的许多 Legacy USB 驱动,导致原生主板的 USB 3.x(XHCI)控制器无法识别,直观表现为进入安装界面或 DCUI 界面后,键盘鼠标无法输入。</p><p class="ql-block">ESXi 8 删除或弱化了大量消费级 USB 控制器支持。</p><p class="ql-block">特别是:AMD X370 芯片组 USB 控制器;</p><p class="ql-block">ASMedia USB 控制器。</p><p class="ql-block">ESXi启动后:</p><p class="ql-block">BIOS阶段:</p><p class="ql-block">USB由BIOS接管;</p><p class="ql-block">进入VMkernel:</p><p class="ql-block">USB驱动接管失败。</p><p class="ql-block">所以:</p><p class="ql-block">BIOS 能用 ≠ ESXi 能用。</p><p class="ql-block"><br></p><p class="ql-block">解决逻辑与 720202 方案</p><p class="ql-block">[原生 USB 控制器] ──(ESXi 8.0U1 驱动缺失/冲突)──&gt; 键鼠失效,无法控制 DCUI</p><p class="ql-block">[加装 uPD720202 PCIe 卡] ─(原生 native 驱动良好支持)─&gt; 恢复控制,修改系统配置</p><p class="ql-block"><br></p><p class="ql-block"> 1. 为什么 NEC uPD720202 芯片有效?</p><p class="ql-block"> NEC/Renesas uPD720202 是一款极经典的 PCIe 转 USB 3.0 控制器芯片。ESXi 8.0 内置的 xhci-attach 原生驱动对其有非常完善且稳定直通的底层支持。</p><p class="ql-block"> 2. 故障解决流程:</p><p class="ql-block"> 硬件插入:插上 PCIe 转 USB 扩展卡(芯片为 uPD720202),将键鼠接在该卡的接口上。</p><p class="ql-block"> 恢复控制:启动 ESXi,键盘被成功识别,按 &lt;kbd&gt;F2&lt;/kbd&gt; 登录 DCUI 或按 &lt;kbd&gt;Alt&lt;/kbd&gt; + &lt;kbd&gt;F1&lt;/kbd&gt; 进入本地 Shell。</p><p class="ql-block"> 禁用/调整主板 XHCI 驱动:若希望主板 USB 恢复,可登录 ESXi SSH,尝试调整 vmkusb 参数:</p><p class="ql-block"> # 查看当前 USB 控制器状态</p><p class="ql-block"> esxcfg-module -l | grep usb</p><p class="ql-block"> # 开启 Passthrough 或修改内核参数避免控制器抢占</p><p class="ql-block"> esxcli system settings kernel set -C -s disable_Passthru -v FALSE</p><p class="ql-block"><br></p><p class="ql-block"><b style="color:rgb(22, 126, 251);"> 三. vmk0(管理 VMkernel 网卡)误删后的紧急恢复</b></p><p class="ql-block">vmk0不是物理网卡,是:VMkernel 管理接口。</p><p class="ql-block">在 Web UI 中误删 vmk0(或对应的 vSwitch/PortGroup)会</p><p class="ql-block"><b style="color:rgb(237, 35, 8);">导致系统失去管理 IP,</b></p><p class="ql-block"><b style="color:rgb(237, 35, 8);">Web 界面和 SSH 立即断开。</b></p><p class="ql-block"><br></p><p class="ql-block">修复步骤(通过 DCUI 或 Console)</p><p class="ql-block">通过物理机接显示器和键盘(或使用前面解决的 720202 扩展卡控制):</p><p class="ql-block"><br></p><p class="ql-block">途径 A:最快恢复(DCUI 菜单还原)</p><p class="ql-block"> 1. 在物理机屏幕上按 &lt;kbd&gt;F2&lt;/kbd&gt; 登录管理员账号。</p><p class="ql-block"> 2. 找到 Network Restore Options。</p><p class="ql-block"> 3. 选择 Restore Management Network,按 &lt;kbd&gt;F11&lt;/kbd&gt; 确认。</p><p class="ql-block"> 4. 系统会重新创建默认的 vmk0 并绑定第一个可用网卡(如 vmnic0)。</p><p class="ql-block"><br></p><p class="ql-block">途径 B:命令行精准重构(控制台/SSH)</p><p class="ql-block">若 DCUI 重置失败,按 &lt;kbd&gt;Alt&lt;/kbd&gt; + &lt;kbd&gt;F1&lt;/kbd&gt; 进入 Shell(输入 root 密码),手动重构:</p><p class="ql-block"><br></p><p class="ql-block"> 1. 重新创建管理端口组(如果 PortGroup 也被删了)</p><p class="ql-block">esxcli network vswitch standard portgroup add --portgroup-name="Management Network" --vswitch-name=vSwitch0</p><p class="ql-block"><br></p><p class="ql-block">2. 创建 vmk0 接口并绑定到端口组</p><p class="ql-block">esxcli network ip interface add --interface-name=vmk0 --portgroup-name="Management Network"</p><p class="ql-block"><br></p><p class="ql-block">3. 为 vmk0 配置静态 IP(根据你的实际网段修改)</p><p class="ql-block">esxcli network ip interface ipv4 set --interface-name=vmk0 --ipv4=192.168.1.100 --netmask=255.255.255.0 --type=static</p><p class="ql-block"><br></p><p class="ql-block">4. 重新启用 vmk0 的管理服务 (Management)</p><p class="ql-block">esxcli network ip interface tag add -i vmk0 -t Management</p><p class="ql-block"><br></p><p class="ql-block">5. 刷新网络堆栈并重启服务</p><p class="ql-block">/etc/init.d/hostd restart</p><p class="ql-block">/etc/init.d/vpxa restart</p><p class="ql-block"><br></p><p class="ql-block"><b style="color:rgb(22, 126, 251);">四. 实现 IPv6 地址设置的永久化</b></p><p class="ql-block">在 ESXi 8.0 中,直接通过 ifconfig 或临时脚本追加的 IPv6 地址会在主机重启后丢包或被系统 dhcp6 / slaac 覆盖。要实现永久生效,必须将其写入 ESXi 的底层配置数据库(ConfigStore)。</p><p class="ql-block"><br></p><p class="ql-block">解决方案:使用 ESXi 8.0 标准的 esxcli 命令行固化</p><p class="ql-block"><br></p><p class="ql-block">步骤 1:开启 IPv6 支持并禁用地址自动配置(可选)</p><p class="ql-block">如果不需要运营商/路由器的临时 SLAAC 地址,先禁用自动接收:</p><p class="ql-block">开启 IPv6 模块(重启生效,若已开可跳过)</p><p class="ql-block">esxcli network ip set --ipv6-enabled=true</p><p class="ql-block"><br></p><p class="ql-block">关闭 vmk0 的 Router Advertisement (RA) 自动获取</p><p class="ql-block">esxcli network ip interface ipv6 set -i vmk0 --accept-router-advertisements=false</p><p class="ql-block"><br></p><p class="ql-block">步骤 2:配置永久(Static)IPv6 地址</p><p class="ql-block">必须使用 esxcli 显式添加 static 类型的 IPv6 地址:</p><p class="ql-block"># 为 vmk0 添加静态 IPv6 地址和前缀长度</p><p class="ql-block">esxcli network ip interface ipv6 address add -i vmk0 -I 2001:db8:1234::100/64</p><p class="ql-block"># 配置 IPv6 默认网关</p><p class="ql-block">esxcli network ip route ipv6 add -n default -g 2001:db8:1234::1</p><p class="ql-block"><br></p><p class="ql-block">步骤 3:固化配置到系统引导区(核心步骤)</p><p class="ql-block">ESXi 运行在内存文件系统中,修改配置后执行以下命令将内存状态立即同步保存到存储介质(如 U盘/NVMe):</p><p class="ql-block"># 强制保存配置数据库</p><p class="ql-block">auto-backup.sh</p><p class="ql-block"><br></p><p class="ql-block">验证方法:配置完成后,使用 esxcli network ip interface ipv6 address list 查看,静态地址的状态应带有 preferred 标识。重启 ESXi 主机后,再次运行该命令检查 IP 是否依然保留。</p> <p class="ql-block">这次 ESXi 8.0U1 不是简单“安装成功”,而是完成了一次:</p><p class="ql-block">从 BIOS 固件适配 → VMkernel 驱动补齐 → 管理网络恢复 → IPv6持久化 → PCI设备直通 的完整DIY服务器级调试。</p><p class="ql-block">对于消费级 Ryzen + X370 平台来说,这已经接近一台“小型边缘服务器”的调教过程。ESXi 8 官方支持列表之外的硬件,确实经常需要类似的驱动、固件和配置适配。</p>