3. 第3章

← 返回目录课程:《Mellanox双口25G光口网卡上手教程》
03

03 固件更新:mlxup工具烧录网卡固件与恢复出厂配置

学习使用mlxup在线
章节导航 难度:入门类型:工程实战
操作落点

掌握固件更新在固件更新中的定位、故障信号与验证顺序。

术语卡
模块接口配置流程状态
完成标志
架构图代码片段排障表检查清单
检查路径固件更新:mlxup工具烧录网卡固件与恢复出厂配置
✓固件更新定位
✓代码定位
✓命令校验
✓配置复测

固件异常定位与恢复目标:从Observe到Fix

恢复验证卡

断点固件更新中断的位置

把失败停在哪一步说清,而不是只写“运行异常”。

约束固件更新的边界条件

核对资源、版本、权限和时序是否满足。

动作单变量修正

每次只改一个点,避免把真正原因盖住。

结果稳定性与可观测性复核

把通过、失败和待复查结果分开记录。

概念块:固件更新

固件更新用固件更新、mlxup工具烧录网卡固件、恢复出厂配置连接到固件更新的调试、验证和交付动作。

  • 固件更新
  • mlxup工具烧录网卡固件
  • 恢复出厂配置
  • 学习使用mlxup在线

固件更新要确认的对象和结果

在数据中心运维中,网卡固件损坏或版本不匹配是导致链路中断、性能降级(例如无法协商到预期的 5g 速率)的常见根因。本节的核心意图是建立一套可复现的固件故障处理流程:从现象观察(Observe)到问题定位(Locate),再到触发修复动作(Fix/Recover)。你将掌握使用 mlxup 工具在在线(Online)与离线(Offline)两种模式下完成固件烧录,并学会在固件完全损坏时通过恢复出厂配置(Factory Defaults)让网卡重新可识别

整个流程的触发器(Trigger)通常是网卡指示灯异常、系统日志(dmesg)报错或 ibstat/ethtool 命令无法获取设备信息。我们的目标是将网卡从“不可用”或“异常”状态,通过固件操作恢复到“可用”且“配置正确”的状态

实操步骤

在开始任何固件操作前,务必执行 mlxup --query 命令,记录当前固件版本(PSID 和 FW Version)。这是后续判断升级是否成功、是否需要恢复出厂配置的唯一基线

固件更新的对象步骤与验收点

固件更新落地前要同时核对固件更新的mlxup工具烧录网卡固件、失败路径和恢复出厂配置。

mlxup 是 Mellanox 官方提供的固件管理工具,它通过读取网卡上的固件存储区(Flash)来执行写入操作。其核心机制分为两种路径:

  • 在线升级(Online Update):在操作系统正常运行、网卡驱动已加载的情况下执行。工具会尝试卸载驱动(mlxup -d 或自动处理),写入新固件,然后重新加载驱动。此方式适用于固件未损坏、仅需版本升级的场景
  • 离线恢复(Offline Recovery):当固件损坏导致网卡无法被驱动识别时,需使用 mlxup --image 指定固件镜像文件,并配合 --force 参数强制烧录。此操作通常在系统启动早期或使用专用恢复环境(如 UEFI Shell 或 Linux Live CD)下进行

恢复出厂配置(Factory Defaults)是修复过程中的关键检查点。它并非简单的“重置”,而是将网卡上的非易失性存储(如 NVData 区域)恢复到出厂状态,清除错误的配置参数(如错误的速率协商策略、错误的端口配置)。执行命令为:mlxup --reset 或 mlxconfig -d /dev/mst/mt4123_pciconf0 reset(需根据实际设备路径调整)

真实项目场景

某数据中心一台服务器在更换光模块后,网卡无法协商到 25G,始终降级到 1G。执行 ethtool eth0 发现速率异常,dmesg 日志显示“Link not ready”。通过 mlxup --query 发现固件版本过旧,且 PSID 与当前光模块不兼容。我们执行了在线升级,但升级后问题依旧。随后执行 mlxup --reset 恢复出厂配置,再次重启后,网卡成功协商到 25G。此案例说明:固件版本和配置参数(NVData)都可能成为故障的触发器(Trigger),恢复出厂配置是 Locate 到配置问题后的关键 Fix 动作

固件更新的技术资产与验证方式

固件更新:mlxup工具烧录网卡固件与恢复出厂配置 · 系统架构图
flowchart TB subgraph FIELD["现场 / 设备侧"] N0(("Fix/Recover")) N1["Trigger Fix"] N2["dev/mst/mt4123 pciconf0"] N3["image fw-ConnectX5-25G"] end subgraph CLOUD["网络 / 平台侧"] N4["query mlxconfig"] N5["mlxconfig query"] N6["FORCE SPEED"] N7["Observe"] end N0 <-->|指向| N1 N1 <-->|指向| N2 N2 <-->|指向| N3 N3 <-->|指向| N4 N4 <-->|指向| N5 N5 <-->|指向| N6 classDef ns fill:#ede9fe,stroke:#7c3aed,color:#3b0764,stroke-width:2px; class N0,N1,N2,N3,N4,N5,N6,N7 ns; linkStyle default stroke:#64748b,stroke-width:1.6px;

图表解读:对应正文“技术资产与验证记录:固件操作命令集与排障表”。这张图以最终 Mermaid 图中的真实节点为准,先看“固件更新:mlxup工具烧录网卡固件与恢复出厂配置”的主链。读图顺序:现场 / 设备侧 → Fix/Recover → Trigger Fix → dev/mst/mt4123 pciconf0 → image fw-ConnectX5-25G → 网络 / 平台侧

节点说明:【TriggerFix节点】表示Trigger Fix 是“固件更新:mlxup工具烧录网卡固件与恢复出厂配置”图中的关键对象,下一步通过“指向”连接到 dev/mst/mt4123 pciconf0,标出该节点在主线中的位置;检查重点:相关操作、判断条件或常见问题。

固件更新:mlxup工具烧录网卡固件与恢复出厂配置
测试台架固件更新:mlxup工具烧录网卡固件与恢复出…测试步骤工具链路验证点Flash手教程mlxup工具烧录网卡固件与恢复出厂FlashFlashMellanox双口25G光口网卡上M e l l a no x双口2 5…手教程手教程固件更新固件更新fixturecapturejudge123核心对象Flash关键链路Mellanox双口2…工程提示手教程

以下命令片段是本节的核心技术资产,涵盖了从查询到强制恢复的完整操作链。请在实际环境中根据设备路径(/dev/mst/*)调整

# 1. 查询当前固件状态(Observe & Locate)
mlxup --query
# 2. 在线升级固件(Trigger Fix)
mlxup -d /dev/mst/mt4123_pciconf0 -i fw-ConnectX5-25G.bin
# 3. 离线强制烧录(当网卡不可见时,需在恢复环境执行)
mlxup --image fw-ConnectX5-25G.bin --force
# 4. 恢复出厂配置(Fix/Recover)
mlxup --reset -d /dev/mst/mt4123_pciconf0
# 5. 验证固件版本与配置(Verify)
mlxup --query
mlxconfig -d /dev/mst/mt4123_pciconf0 query | grep -i "speed\|rate"

阅读这段代码时,重点看固件更新的伪代码,以及它如何用稳定性与可观测性证明结果可复测。

命令解释--query 用于定位当前固件版本和 PSID;-i 指定固件镜像文件;--force 跳过校验,用于损坏恢复;--reset 是恢复出厂配置的唯一入口;最后的 mlxconfig query 用于验证配置参数是否已重置为默认值,例如确认速率协商策略未被锁定

为了系统化地排查固件相关故障,请参考以下排障表。该表将现象、可能原因、检查位置和修复动作串联起来,形成完整的定位路径

排障表
固件故障排障表
现象可能原因检查位置修复动作
网卡无法被系统识别( lspci 无 Mellanox…固件完全损坏或 Flash 校验失败系统启动日志( dmesg | grep -i mlx…使用 mlxup --image --force 离线…
链路无法协商到 25G,仅协商到 5g 或 1GNVData 中速率策略被错误配置,或固件版本与光模块…mlxconfig query 查看 FORCE_SP…执行 mlxup --reset 恢复出厂配置
在线升级后网卡工作异常升级过程中驱动未正确卸载,或固件镜像与 PSID 不匹配mlxup --query 对比升级前后的版本和 PS…重新执行在线升级,或回退到上一版本固件
关键判断

恢复出厂配置(mlxup --reset)是解决“配置漂移”类故障的首选动作,而不是重新烧录整个固件。只有当 --reset 无效时,才考虑使用 --force 进行全量固件恢复

问题对照与修正

  1. 常见偏差:把固件更新直接写进主流程,只验证能跑通,留下固件更新边界、状态和验证口径不清。
  2. 修正做法:把固件更新收敛成稳定接口,明确伪代码和失败返回。
  3. 复核方式:构造一个异常输入或超时场景,用日志、断言和稳定性与可观测性证明修复有效。

何时停止操作并寻求替代方案的异常信号与处理步骤

固件操作具有不可逆性,错误的操作可能导致网卡永久失效。以下是必须遵守的风险边界与判断标准:

  • PSID 一致性:固件镜像文件的 PSID 必须与网卡标签或 mlxup --query 输出的 PSID 完全一致。强行烧录不匹配的固件会导致网卡变砖。这是第一道检查标准
  • 电源与连接:在离线烧录过程中,严禁断开网卡电源或 PCIe 连接。任何中断都会导致 Flash 写入失败,使固件损坏。建议使用 UPS 或确保服务器处于稳定供电环境
  • 回滚准备:在执行升级前,必须通过 mlxup --query 记录当前固件版本,并保存一份当前版本的固件镜像文件。如果升级后出现异常,应能立即回滚到旧版本
  • 判断标准表:当出现以下情况时,应停止当前操作并寻求厂商支持:
    • 连续两次 mlxup --force 烧录后,网卡仍无法被 lspci 识别
    • 恢复出厂配置后,网卡 MAC 地址变为全零或无效值
    • 工具提示“Flash Lock Failed”或“Device Not in Update Mode”
常见误区

不要混淆“恢复出厂配置”与“格式化 Flash”。mlxup --reset 只重置配置区域,不会清除固件引导区。错误地使用 mlxup --delete 或第三方工具擦除整个 Flash 是导致网卡变砖的主要原因

最后,验证动作是闭环的关键。完成固件更新或恢复后,必须执行 mlxup --query 确认固件版本已变更,并使用 ethtool eth0 确认链路状态和协商速率(如 25G)。同时,检查 dmesg 日志中是否有新的错误信息。只有所有检查点通过,才能判定本次固件操作成功

细节补充:

固件更新先对齐现场任务、输入材料和输出结果,再回到固件更新的细节逐项核对。

固件更新的主要风险来自固件更新边界、状态和验证口径不清;落地前必须核对伪代码,并确认例外场景和结果记录。

样例套用检查

把固件更新整理成一次样例或工具使用核对。用 18 分钟核对使用顺序、替换位置和输出物:

排顺序:写出固件更新资料、工具或样例的使用顺序。
标替换:标出固件更新允许替换的位置。
留保留:说明哪些结构、字段或格式不要改。
看输出:检查mlxup工具烧录网卡固件和固件更新是否完整。
防误操作:写出一个最容易遗漏的字段或默认值。
使用要点:
固件更新要和固件更新的主目标对应,不能只写泛化结论。
动作范围要小,证据要具体,下一步处理要能继续执行。
输出核对:
使用顺序:资料或样例先解决目标和边界,再进入具体替换。
替换位置:替换字段要清楚,结构性内容不要随意改。
输出物:交付前确认mlxup工具烧录网卡固件可打开、可理解、可复用。