裸金属服务器频繁重启?手写UEFI整机自检工具,21项测试一键定位硬件故障
裸金属服务器又自动重启了。登录系统翻了一圈日志内存测试绿得发亮硬盘健康状态也没问题可故障就在那里像极了那种“身体检查各项指标正常但就是人难受”的状态。遇到这种情况做硬件排查和运维的人一般都缺一个趁手的工具能在不依赖操作系统的前提下把整机关键部件快速压测一遍最好界面能看得见进展最后再自动产出一份报告方便跟厂商或同事对照。市面上的免费方案我几乎都试过要么只测内存要么只扫硬盘要么依赖系统环境真正面向整机的自检工具少得可怜。商业工具倒是齐全但要么贵要么闭源个人和中小企业根本够不着。折腾了一圈之后我干脆自己写了一个跑在 UEFI 环境下的整机自检工具21 项测试、全程可视化、一键出报告。今天把这套工具的设计思路和实现过程完整盘一遍给同样被裸金属硬件故障折磨的朋友一个参考。1. 为什么自检工具要跑在 UEFI 层裸金属故障的最尴尬阶段1.1 裸金属那种“看着没坏但就是不稳定”的坑裸金属这个概念在云计算语境下被用得有点滥其实说白了就是一台完整的物理机没有中间虚拟化层。你在机房里看到的服务器、工作站全是裸金属。正因为没有虚拟化那一层可以调度、迁移、掩盖问题硬件故障一旦发生影响的往往是整个业务排查起来也完全没有头绪。我遇到最典型的一类问题某台机器频繁重启系统日志里只有 PCIe AER 报错一会儿出现在 NVMe 控制器上一会儿出现在 GPU 上位置完全不固定。你换内存、换硬盘、换电源问题依旧。这种故障最折磨人因为它不是简单的“某个部件坏了”而是某个底层通道、某条总线信号、某组供电处于临界状态。这时候最需要的是在操作系统启动之前把硬件环境完整自检一遍直接暴露早期不稳定因素。这也就是 UEFI 自检工具存在的意义它运行在固件层面绕开了操作系统和驱动看到的是硬件最原始的状态。好处我给你捋一下。首先它不依赖任何系统环境Windows、Linux 都无所谓只要主板能启动 UEFI 应用就能跑。其次它能读取 SMBIOS、ACPI 等固件层信息这些数据在某些异常场景下是判据。最后它能在驱动未加载的环境里对设备做底层访问比如直接通过 ATA 命令读 SMART直接通过内存映射地址做读写测试不容易被系统缓存机制干扰。这套逻辑下来排查效率比在系统里翻日志高不少。1.2 现有免费工具为什么解不了渴想找免费的硬件测试工具网上搜一圈出来基本都是几类。一类是 memtest86 这种内存专项工具单测内存很强但测不了整机协同。一类是 smartctl、fio、iperf 这类 Linux 工具功能专业但前提是你已经有一个能稳定运行的 Linux 环境。问题是很多硬件故障恰恰是系统根本起不来或者起来了就死机你根本没法用。再一类是厂商自带的诊断工具比如戴尔、惠普机器里的硬件诊断普遍绑定自家硬件换一台杂牌机器就失效。还有个现实问题整机自检工具基本都向商用和云化收拢了。比如 PC-Doctor 这类主要授权给大型 OEM 厂商个人用户能接触到的通道很少价格也不便宜。免费工具要么功能单薄要么界面老旧要么只能在特定系统下跑。对做裸金属运维的人来说这个工具空白长期存在很多人最后的选择是抱着一堆 U 盘每个里面装不同工具来回切换。我被这个问题困扰了很久最后的结论不如自己写一个跑在 UEFI 下的测试框架把日常排查里最高频的检查项全放进去。1.3 UEFI 自检工具的正确使用姿势先说明一个原则这个工具不是用来替代专业测试的。内存有 memtest86硬盘有厂家工具网络有 iperf这些专业工具在各自领域都比我的实现严谨。这个工具的定位是“故障边界快速收缩器”机器不稳定、系统起不来、部件疑似异常的时候开机进 UEFI 自检十分钟左右把 21 项过一遍看大概哪些区域异常再针对性用专业工具深挖。所以设计的核心原则有三条覆盖面广、过程可见、结果可带走。覆盖面广指的是测试分 CPU、内存、存储、网络、显示、传感器、固件信息几个大类不是深度极限压测而是把每个关键区域用判别性较强的测试查一遍比如 CPU 缓存一致性、内存位翻转、存储 SMART 读取和随机读写校验、网络 PHY 环回这些都能在短时间内暴露常见硬件问题。过程可见说的是界面要实时显示每项测试的进度、结果和关键日志不能让人傻等。结果可带走自然就是报告退出工具之后把文件拿到另一台机器上分析或者直接打包发给供应商沟通效率完全不同。2. 21 项测试到底测什么整机健康度拆解设计2.1 测试分组思路给自己写工具最大的好处是测试项可以完全按工作习惯来排。我分了五组计算核心、内存子系统、存储子系统、网络与外设、固件与传感器。每组 2 到 6 项加起来正好 21 项。分组不是随意的。排在最前面的 CPU 和内存是系统能启动、能稳定运行的基础也是故障率最高的两个区域。存储和网络决定数据能不能读出来、能不能传出去是业务稳定性的关键。固件与传感器则是判断隐性风险的入口比如电源电压是否异常、风扇转速是否提示散热退化、BIOS 版本是否存在已知问题。越靠前的测试越基础越靠后的越偏运维视角。这样跑下来报告的结构也很清晰从上往下就是一台机器从底层到业务层的健康度画像。这里有个设计细节测试项之间是有依赖关系的。内存测试需要先用 SMBIOS 拿到物理内存的地址范围存储测试需要先通过 ATA/Identify 拿到硬盘型号和容量网络测试要先确定网卡的 PCI 路径。所以 21 项不是简单平铺的列表而是分成了“信息采集”和“压力验证”两个阶段先采集后验证避免测试过程因为信息不足而误判。2.2 CPU 与内存先把计算核心压明白CPU 这组设计了 4 项基本信息识别、缓存一致性测试、整数与浮点运算测试、AVX 指令集压测。基本信息识别更像是取证通过 CPUID 指令读取厂商、型号、步进、核心数、特性位记到报告里方便和主板信息对照。缓存一致性测试的做法是同时对同一段内存地址发起多核读写验证 L1/L2/L3 缓存的数据同步是否正常。这个测试我吃过亏有一台机器跑编译任务偶尔出错误结果内存测试和 CPU 跑分都正常最后用缓存一致性测试才定位到 L2 缓存存在偶发错误。整数与浮点运算测试用的是固定算法算校验值异常就说明 ALU 或 FPU 相关通路可能有问题。与跑分软件不同这里不追求分数只追求二进制层面结果是否稳定可复现。AVX 指令集压测则是专门确认 AVX 相关数据通路毕竟不少计算任务都要用到 AVX/AVX2而且 AVX 负载时 CPU 温度和功耗会明显上升能在短时间内暴露散热不足的问题。内存这组有 5 项覆盖寻址范围、读写校验、位翻转、缓存一致性、ECC 状态读取。读写校验的基本思路是往内存地址写入固定模式再读回比对模式包括 0xAA/0x55、全 0x00/0xFF、步进 1 递减、伪随机序列共四轮。位翻转测试是我比较看重的它会遍历内存的每一个可寻址单元写入 0x1、0x2、0x4、0x8 这样的单比特模式再读回发现哪个 bit 对不上问题就锁定在对应存储单元上。缓存一致性测试和 CPU 那组类似但绕开 CPU 缓存直接用 memory barrier 强制刷新验证物理内存本身的一致性。ECC 状态读取通过 SMBIOS Type 17 获取内存条的 ECC 能力并在报告中标记服务器 ECC 内存如果出现可纠正错误计数说明内存已经处于亚健康状态虽然还能用但建议尽快更换。2.3 存储与网络IO 通道的验证要点存储组共 5 项。首先是控制器识别读 PCI 配置空间确认磁盘控制器型号、AHCI/NVMe 模式。然后是硬盘信息采集通过 ATA Identify Device 或 NVMe Identify 命令拿到型号、固件版本、容量、扇区大小。接下来是 SMART 状态读取ATA 的 SMART READ DATA 命令能直接拿到健康状态和关键属性比如重映射扇区数、通电时间、温度。如果重映射扇区数不为零这块盘基本就可以列入更换名单了别等到报错再处理。之后是随机读写校验测试在确保不覆盖用户数据的前提下选一个固定的空闲区域写入测试模式再读回验证数据通路是否正常。最后是盘位映射检测看磁盘在实际机箱里的盘位顺序是否和系统识别顺序一致。这个问题在机房换盘时经常踩拔错盘是很可怕的。网络组 4 项。网卡识别和 MAC 地址读取是最基本的确认网卡被固件识别MAC 地址没有被刷坏。PHY 环回测试是重点它验证 PHY 芯片、网口变压器、连接器这几个环节。操作方式是把网卡设置为内部环回模式发包再收包比对数据一致性。这里要注意它验证的是网卡自身链路测不了网线和对端交换机不要误读结果。如果机器有多个网口建议逐一口测试毕竟机房最常见的问题就是网口接触不良或 PHY 芯片老化这种问题在操作系统里很难直接定位UEFI 下反而很好查。最后是链路状态检查连接网线的情况下读取当前协商速率和双工模式如果强制千兆却协商成百兆说明网线质量或接口触点有问题。2.4 外设、传感器与固件信息细节决定故障定位效率第五组放了三个“杂项”但其实是运维排查里最提效的部分。显示输出测试会枚举当前 GOP 模式支持的分辨率做一次全屏填充和色块转换验证显存读写和显示输出路径。曾经遇到过一台老工作站系统日志毫无异常但客户说开机偶尔没有显示最后发现是 UEFI 的 GOP 切换分辨率时输出信号不稳定用这个测试一跑立刻复现。RTC 与 CMOS 检查是读取实时时钟和 CMOS 校验值验证主板电池和 RTC 芯片CMOS 校验失败就说明要么电池没电要么 RTC 芯片有问题。传感器读数则是遍历 ACPI 和 Super I/O 芯片暴露的温度、电压、风扇转速通道把 CPU 温度、主板温度、12V/5V/3.3V 电压、风扇转速记下来。固件信息采集包括 SMBIOS 信息汇总、ACPI 表完整性检查、PCIe 链路状态查询。SMBIOS 汇总会把 BIOS 版本、厂商、产品型号、序列号、内存插槽信息全部写进报告序列号和 BIOS 版本在报修时一定要填。ACPI 表完整性检查会解析 RSDT/XSDT 里的表项看是否有明显缺失或校验问题操作系统里蓝屏、睡眠唤醒失败的机器有不少就是 ACPI 表的问题。PCIe 链路状态查询则是读每个 PCIe 设备的 Capability 结构把链路宽度和速率显示出来。比如一块显卡明明插在 x16 槽上实际协商成了 x1这种问题在操作系统中很难一眼发现但在 UEFI 下读寄存器非常直接。到这里21 项测试就组成了一个小而全的整机自检矩阵。3. 可视化是怎么实现的UEFI 图形界面的“冷门手艺”3.1 为什么 UEFI 界面里画个界面都算事在 Windows 或 Linux 里做界面有现成的窗口系统、字体库和绘图 API开发者几乎不用关心像素怎么落。但 UEFI 环境完全是另一回事它没有图形栈没有字体渲染没有消息循环所谓“界面”完全要在最底层自己搞定。UEFI 标准里提供的图形相关协议是 GOPGraphics Output Protocol本质是一块线性显存你往这块显存里填像素屏幕就显示什么。听起来挺简单但真用起来才发现没有画点函数、没有字体库、没有绘制矩形的库全得从零开始。我用的思路是做一个简单的帧缓冲封装初始化 GOP 后申请一块与当前分辨率匹配的显存区域封装出画点、画线、画矩形、填充矩形这几个基础函数。字体方面UEFI 内建的 Console 输出虽然也能显示文本但只能使用 GOP 附带的字体大小和样式不可控而且只保证支持英文和少量符号。要支持中文或者更美观的排版就得进入字库开发领域但那样会带来体积膨胀的问题一个完整的中文字库动不动就几 MBUEFI 应用的加载时间和 NVRAM 空间都要考虑。所以我的工具界面默认用英文报告里保留中文描述字段在外部打开报告时再展示。3.2 图形绘制、进度反馈与交互设计确定自绘方案后界面布局就好设计了。主界面分成三个区域顶部是标题栏显示工具名称、版本号和被测机器型号左侧是测试项列表竖排 21 项状态用颜色区分正在运行的显示高亮通过显示绿色失败显示红色跳过显示灰色进度信息实时刷新右侧是详情区显示当前测试项的实时日志、关键数值和结果摘要。底部放整体进度条右侧显示健康评分全部通过后会弹出汇总结果。绘制这些元素时最需要注意的是不要阻塞。UEFI 应用是单线程的测试循环和渲染循环如果放一起画面就会卡顿。实际做的时候我在每个测试项内部设了一个回调机制定期把状态推送给渲染层渲染层再把变化区域重绘而不是一帧一帧全屏刷新。这样 CPU 占用可控进度条也能平滑滚动。另一个实用技巧是双缓冲先把整帧绘制到内存里的后备缓冲区再用 GOP 的 Blt 协议一次性刷到屏幕能显著减少闪烁。交互设计没做复杂的菜单系统只支持方向键选择单测模式或全测模式回车开始Esc 中止。自检工具的本质是让运维人员尽快得到结果不是做一个华丽的操作系统界面越简单越不容易出错这在故障现场尤其重要。界面下方会给出简短的英文操作提示方便现场工程师直接上手不需要翻说明书。3.3 从命令行到可视化自检工具的体验升级第一版工具其实是纯字符界面的在 UEFI Shell 里运行输出是连续滚动的文本。能用但问题很大。有一次给客户远程指导排障对方在电话里报测试结果念到第 14 项的时候念岔了我把“PASS”听成了“FAIL”白折腾了半小时。后来下定决心做可视化让结果“一眼看清”同一台机器在不同状态切换时也不再需要来回翻日志。可视化的价值不只是好看。通过界面颜色和状态变化现场人员可以在测试运行过程中实时判断故障位置而不是等全部测完再看报告。比如内存测试跑到第 3 项时进度停了说明该地址范围的读写校验超时这个信息比最终报告更能指导排查因为你知道了是哪个阶段、哪一类操作触发了问题。对做售后和运维的同事来说这个实时反馈省掉了大量沟通成本。另外可视化界面也让工具看起来更专业客户和供应商都更愿意配合一起排查实际沟通效率提升非常明显。4. 一键报告的实现数据怎么从固件里“带”出来4.1 报告要覆盖哪些内容报告是这个工具的灵魂不然测试完数据全浪费。报告分三大部分设备信息、逐项测试结果、附加诊断信息。设备信息部分包含厂商、产品型号、序列号、BIOS 版本、主板版本、CPU 型号与步进、内存总容量与插槽数、磁盘型号与固件版本、网卡 MAC 等全部来自 SMBIOS、CPUID 和 PCI 配置空间不需要人工填写也就杜绝了抄错序号的低级错误。逐项测试结果部分是报告主体每一项记录测试名称、唯一编号、起始时间、结束时间、耗时、结果码和结论描述。结果码设计成三类PASS、FAIL、SKIPFAIL 一定伴随错误码方便在代码里定位到具体断言。附加诊断信息部分把测试过程中采集到的原始数据也放进去比如内存位翻转失败的具体地址、SMART 的重映射扇区数、PCIe 链路协商宽度、传感器读数、ACPI 表缺失项。这些细节在报修或升级固件时非常有用。举个例子某台机器频繁死机报告里记载 PCIe 链路协商宽度只有 x2 而不是 x8供应商看完报告直接给换了一块转接卡问题当场解决。如果没有这些底层细节光是“测试不通过”几个字供应商很难判断具体环节。4.2 FAT32 文件输出与报告格式设计UEFI 内置支持的文件系统是 FAT 系列最稳妥的是 FAT32。工具启动时会遍历所有块设备找到第一个支持 SimpleFileSystem 协议的分区在根目录下创建 reports 目录用“产品型号_日期_时间”作为文件名后缀写报告。文件名要控制在 8.3 格式或至少不超过 255 字节避免在某些老旧固件的 FAT 驱动下打不开。路径问题我也踩过坑有些固件对长路径支持不好建议直接写成 “\EFI\BOOT\report.json” 这样的短路径。报告格式最终保留了两种一份 JSON 完整数据一份 TXT 摘要。JSON 给程序解析用字段名全部使用小写加下划线方便写脚本生成图表或对接工单系统。TXT 摘要是给人扫一眼的只输出关键结论比如“MEM03 FAIL at offset 0x12345678”。还有一种做法是直接生成 HTML 报告把结果渲染成表格和色块但在 UEFI 环境下自己拼 HTML 字符串有点费劲而且打开 HTML 需要额外载体目前我把它放在后续版本扩展计划里。JSON 的序列化是一个纯字符串拼接过程注意转义引号和换行不需要引入第三方 JSON 库就能搞定。4.3 报告数据的可追溯性设计可追溯性是我写报告时一直在强调的事情。所谓可追溯就是你拿到一份报告必须能回答三个问题这测试是什么时候跑的在什么设备上跑的跑的时候环境状态如何所以报告文件头会写入一个唯一时间戳、工具版本号、被测机器的序列号和 BIOS 版本。每条测试记录都带相对测试开始时间的偏移量方便还原现场节奏感。传感器读数也会被周期性地记录到报告末尾形成一个简短的时间序列虽然频率不高但在排查随机掉电、过热降频这类问题时这个时间序列是很有说服力的证据。再分享一个细节报告里每一条 FAIL 记录都要附上当时的关键上下文。内存测试失败我记录失败地址、写入模式、期望值、实际值、重试次数网络测试失败记录当前协商速率和环回模式。这些内容在屏幕上只显示一行但在报告里详细展开方便后续与供应商对接。运维报告的精髓就在于结论可以一句话证据必须足够厚。5. 构建部署与实操过程5.1 开发环境与框架选型开发 UEFI 应用主流方案有两种TianoCore EDK2 和 GNU-EFI。EDK2 是 UEFI 规范的开源参考实现包管理完善自带的 MdeModulePkg、ShellPkg、NetworkPkg 提供了大量现成协议封装开发效率高。GNU-EFI 更轻量适合写小程序但很多东西要自己手动处理比如重定位、协议声明开发体验比较原始。我的选择是 EDK2因为要读写文件、遍历 PCI 设备、读 SMBIOS、枚举网络设备这些在 EDK2 里都有库函数和示例代码能少走很多弯路。开发环境在 Ubuntu 22.04 上搭安装 build-essential、nasm、python3 和 uuid-dev克隆 EDK2 源码执行 make 编译基础工具链。进入目录后先 source edksetup.sh再把 Conf/target.txt 里的 TARGET_ARCH 设为 X64TOOL_CHAIN_TAG 选 GCC5。接着创建自定义包比如 MyDiagPkg把模块代码放进去在 .dsc 和 .fdf 里声明好用 build 命令编译。第一次搭建环境大概需要半天之后每次改动编译只消一两分钟效率还是可以的。5.2 编译与启动盘制作编译命令很直接build -p MyDiagPkg/MyDiagPkg.dsc -a X64 -b RELEASE。生成的可执行文件是 BOOTX64.EFI 格式本质上就是一个 PE/COFF 镜像但入口不是 main 而是 efi_main。编译成功后把它改名成 BOOTX64.EFI放到 FAT32 格式 U 盘的 EFI\BOOT 目录下启动时选择 UEFI 模式的 U 盘即可。要注意U 盘分区表是 MBR 也没关系关键是分区内文件系统必须是 FAT32文件路径必须准确。很多初学者把文件直接放在 U 盘根目录就开机固件根本找不到这是个高频错误。Secure Boot 的问题必须提前说清楚未签名的自制 UEFI 应用默认会被 Secure Boot 拦截测试机需要在 BIOS 里先关闭 Secure Boot或者用工具给 BOOTX64.EFI 做签名。还有一种方式是在测试机 BIOS 中开启自定义安全启动模式导入你自己生成的 KEK 和 DB 证书不过对日常排障来说直接关闭更省事但做完测试之后记得重新打开否则生产环境的安全性会打折扣。5.3 实测演示流程整个流程是这样的U 盘插进被测机开机进启动菜单选择 U 盘启动工具自动加载初始化 GOP 进入图形界面读取 SMBIOS 和设备信息显示在主界面顶部。按回车进入全测模式21 项测试从上到下依次执行。CPU 组几秒内完成内存组看容量大小32GB 内存全量走一遍位翻转测试大概需要七八分钟存储组是毫秒级到秒级网络组每口大约几秒传感器组十几秒。全部跑完屏幕底部弹出整体结论同时报告文件已写入 U 盘 reports 目录。把 U 盘拔下来插到普通电脑上用任意文本编辑器打开报告就可以直接分析。实际测试中我建议至少连续跑两轮全测。第一轮看瞬时情况第二轮看热稳定性。有些硬件问题只有在温度升高后才会出现比如内存热不稳定、CPU 缓存偶发错误、供电模块纹波变大等。第二轮跑的时候界面上的传感器数据会显示温度走势配合报告时间序列可以交叉验证。如果两轮都通过但仍然有故障现象我会建议再做 24 小时无人值守循环测试把 Esc 确认规则改成自动重启让工具持续运行并累积报告靠时间换故障复现概率。6. 踩坑实录与排查技巧分享6.1 启动阶段最容易翻车的几个点第一个坑是启动盘做好了但机器就是不从 U 盘启动。排查顺序是确认启动模式是 UEFI 而不是 Legacy确认 U 盘分区文件系统是 FAT32确认文件在 EFI\BOOT\BOOTX64.EFI确认固件启动顺序里 U 盘排在最前。如果以上都没问题再用另一台机器测试 U 盘本身是否损坏。有一回我折腾半天最后发现是 U 盘量产分区有问题重新量产一次就好。第二个坑是画面花屏或分辨率不对。不同主板 GOP 实现差异很大有的主板只能提供 1024x768有的主打 4K。我写了分辨率枚举逻辑启动时请求一个当前支持的最大模式如果设置失败就回退到 800x600 或 1024x768。花屏通常意味着显存内容没对齐绘制时注意每行像素的 stride 和 pitch 不一致的问题。GOP 的 pitch 不一定等于宽乘以每像素字节数必须用协议返回的 Pitch 值做换算否则画面会斜切或者错位。第三个坑是文件系统遍历很慢。某些 USB 3.0 U 盘在 UEFI 驱动下枚举就要几十秒不是程序卡死是驱动等待超时。解决办法是让报告输出路径支持配置或者直接固定使用 USB 2.0 口实测兼容性更好启动速度也稳定。6.2 测试结果误报的分析方法自检工具偶尔会把健康的硬件报成故障我见过几种典型情况。硬盘随机读写校验失败但磁盘本身没问题原因是测试区域选到了坏块附近或者系统其他进程在同时访问磁盘解决方法是选一个足够大且明确空闲的区域并且在报告里记录测试区域起始扇区和长度。内存测试失败也有可能是地址范围重叠多路处理器或 UMA 架构下物理地址的 Hole 区域需要特殊处理我在代码里会读取 SMBIOS Type 19 的内存阵列映射信息把保留区域排除掉。还有一种情况是网络环回测试偶尔失败但换一根网线或重插一次就通过这种多半是网口金属弹片氧化或触点接触不良真实存在但时好时坏。处理方法是测试支持三次重试连续三次失败才判 FAIL并把每次尝试结果写进报告。对于偶发性问题重试策略非常关键不能一上来就下结论但也不能无限重试掩盖严重故障三次是比较平衡的数字。6.3 常见问题速查表我把调试过程中整理出的高频问题做成一张速查表方便现场快速定位现象可能原因解决办法U 盘无法引导启动模式不是 UEFI / 文件路径不对关闭 CSM确认 EFI\BOOT\BOOTX64.EFI 路径界面花屏或黑屏GOP 分辨率设置失败 / pitch 换算错误回退到 1024x768按 GOP 返回的 Pitch 绘制Secure Boot 拦截未签名应用被固件拒绝临时关闭 Secure Boot 或导入签名证书报告文件未生成分区不是 FAT32 / 文件系统协议缺失格式化 U 盘为 FAT32换 USB 2.0 口重试NVMe 硬盘识别不到固件未加载 NVMe 驱动BIOS 中确认 NVMe 支持开启或用 AHCI 模式的 SATA 盘测试内存测试太慢位翻转测试全量遍历耗时减少轮数或只测系统内存前半段做快速筛选中文字符显示为方块UEFI 内建字库不含中文界面默认英文报告里保留中文在外部查看温度读数偏高或无读数传感器通道未正确枚举遍历 ACPI 与 Super I/O确认 SMBus 地址正确除了表里的内容还有一个经验想额外分享不要在测试机上一边跑 UEFI 自检一边通过管理卡做其他操作。某些 BMC 固件在 UEFI 环境下初始化存储或网络设备时会和自检工具争夺设备访问权偶尔导致误报。这种概率不高但遇到“换个姿势测就通过”的玄学问题先检查机房里有没有别人在同时操作管理卡。这套工具最初只是我给自己排障用的做出来之后才发现团队里的运维兄弟也在用现在出差带一个 U 盘基本能覆盖大多数现场问题。整个过程里最费时间的其实不是测试逻辑本身而是把可视化界面和报告输出打磨到能放心交给别人用的程度。如果你也想动手做我的建议是不要一上来就追求全部 21 项先把手头最常遇到的三个问题做成测试跑通界面和报告链路再慢慢往里加项目。工具是给现场用的越贴近真实场景它的价值越大。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →