更新 mellanox ib/RoCEv2网卡的组件 mlxup
下面是使用 mlxup 给 CX5 556A(MCX556A-ECAT/EDAT,ConnectX-5 VPI 卡)更新固件的完整流程为例。如果遇到mlxup: command not found,是因为 mlxup 不随系统自带——它是一个独立单文件二进制,需要单独下载(不依赖 MLNX_OFED,也不依赖 mst 驱动)。
1. 下载并安装 mlxup
wgethttps://content.mellanox.com/tools/mlxup/mlxupchmod+x mlxupsudomvmlxup /usr/local/bin/验证:
mlxup-v2. 查询当前设备与固件状态
sudomlxup--query典型输出(ConnectX-5):
Device Type: ConnectX5 Part Number: MCX556A-ECAT Description: ConnectX-5 VPI adapter card, EDR IB (100Gb/s) and 100GbE, dual-port QSFP28 PSID: MT_0000000008 PCI Device Name: 0000:65:00.0 Versions: Current Available FW 16.32.1010 16.35.xxxx Status: Update required关键检查点是 PSID:
- 零售版 MCX556A-ECAT 的 PSID 通常是
MT_0000000008,mlxup 可以直接找到匹配的官方固件; - 如果是 OEM 卡(例如 HPE 定制,PSID 类似
HPE0000000009),mlxup 会显示No matching image found,此时需要用 MFT/flint 加-allow_psid_change强刷零售固件(见第 5 步的备选方案)。
3. 更新固件
方式 A:联网自动更新(机器能访问 NVIDIA 服务器时最省事):
sudomlxup它会列出所有 Mellanox 设备,提示Perform FW update? [y/N],输入y即开始烧录,日志保存在/var/log/mlxup/下。
方式 B:使用本地固件文件(内网/离线机器):
- 先到 NVIDIA 官网固件页面(network.nvidia.com → Support → Firmware Download),按 PSID 下载 ConnectX-5 的固件
.bin(VPI 卡选 fw-ConnectX5 系列); - 执行:
sudomlxup-d/dev/mst/mt4119_pciconf0-i./fw-ConnectX5-rel-16_xx_xxxx-MCX556A-ECAT_Ax-UEFI-xx.bin(mt4119即 ConnectX-5 的设备名;不指定-d时 mlxup 会对所有检测到的卡操作。)
4. 使新固件生效
烧录完成后固件不会立即生效,需要复位。两种做法:
# 方式一:热复位(推荐,不必整机重启;需要已装 MFT 工具)sudomlxfwreset-d/dev/mst/mt4119_pciconf0 reset-y# 方式二:直接重启机器sudoreboot注意:CX5 的热复位要求驱动处于可复位状态(端口无正在进行的 RDMA 流量);若mlxfwreset提示复位级别不被支持或失败,就只能**冷启动(关机断电再开机)**才最保险,普通 reboot 在部分主板上也能完成固件重载。
复位后验证:
sudomlxup--query# Current 应与 Available 一致# 或用 flint 查看详细版本flint-d/dev/mst/mt4119_pciconf0 q5. 备选方案:MFT/flint(mlxup 找不到匹配固件时)
sudomst startsudomst status# 确认设备节点名sudoflint-d/dev/mst/mt4119_pciconf0-ifw.bin burn# OEM 卡改刷零售固件时追加:# sudo flint -d /dev/mst/mt4119_pciconf0 -i fw.bin -allow_psid_change burnsudomlxfwreset-d/dev/mst/mt4119_pciconf0 reset-y注意事项
- 烧录过程中切勿断电或重启,否则可能变砖(CX5 有双镜像恢复机制,但恢复流程麻烦);
- 如果机器上有两张 CX5,
mlxup默认会逐一列出并更新,注意核对 PCI 地址与 PSID 再确认; - 固件升级与 MLNX_OFED 驱动版本无强绑定,但建议升级后顺手把驱动也更新到匹配的 LTS 版本。