← 返回目录课程:《Mellanox网卡SR-IOV虚拟网卡实战》
03

03 固件与驱动:ConnectX-5/6固件升级与mlx5_core驱动安装

学习固件烧录流程与驱动编译安装,确保硬件兼容性
章节导航 难度:入门类型:概念框架
操作落点

掌握6固件升级在固件与驱动中的定位、故障信号与验证顺序。

术语卡
模块接口配置流程状态
完成标志
架构图代码片段排障表检查清单

固件与驱动:ConnectX-5

恢复验证卡

断点固件与驱动中断的位置

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

约束6固件升级的边界条件

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

动作单变量修正

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

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

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

固件与驱动落地前要同时核对6固件升级的核心驱动安装、失败路径和学习固件烧录流程。

检查路径固件与驱动:ConnectX-5 / 6固件升级与核心驱动安装
✓6固件升级定位
✓命令定位
✓配置校验
✓参数复测

概念块:固件与驱动

固件与驱动用6固件升级、核心驱动安装、学习固件烧录流程连接到6固件升级的调试、验证和交付动作。

  • 6固件升级
  • 核心驱动安装
  • 学习固件烧录流程
  • 驱动编译安装
固件与驱动把知识点接成体系01固件与驱动:Conn明确检查要点02固件升级:从版本检查明确检查要点03驱动编译与安装明确检查要点04兼容性验证与排障表定位最早异常点056固件升级明确检查要点06对象边界先定义适用范围

在 SR-IOV 虚拟网卡实战中,固件版本与驱动栈的兼容性直接决定了虚拟功能(VF)的稳定性与性能上限。本节聚焦于 ConnectX-5 与 ConnectX-6 网卡的固件烧录流程,以及 核心 驱动的编译安装方法,确保硬件在虚拟化环境中能够正确暴露 SR-IOV 能力

关键判断

固件与驱动的版本匹配是 SR-IOV 功能可用的前提。使用 核心 驱动时,必须确保固件版本不低于驱动所要求的最低版本,否则 VF 创建将失败或出现异常丢包

固件升级:从版本检查到烧录验证

固件升级的核心目标是修复已知硬件缺陷、增加新特性(如更多 VF 支持)并保持与上游驱动栈的兼容性。操作链路为:版本检查 → 获取固件包 → 烧录 → 重启 → 验证

版本检查与固件获取

首先,通过 mlxconfig 或 mstflint 工具查询当前固件版本。例如,使用 mstflint -d 0000:03:00.0 q 可查看设备 PSID 与当前固件版本。然后,从 NVIDIA 官方固件仓库下载对应 PSID 的固件包(.bin 文件)。注意:ConnectX-5 与 ConnectX-6 的固件包不可混用,错误烧录将导致设备无法识别

烧录流程与风险控制

烧录使用 mstflint -d 0000:03:00.0 -i /path/to/fw-ConnectX5.bin burn 命令。烧录过程中必须保持电源稳定,禁止中断。烧录完成后,执行 reboot 使新固件生效。重启后,再次使用 mstflint -d 0000:03:00.0 q 确认已更新

常见误区

很多工程师在烧录后直接使用 mlxconfig 查询版本,但此时新固件尚未加载。必须重启系统,让网卡从 Flash 加载新固件,才能通过 mstflint 或 ethtool -i 验证

核心 驱动编译与安装

核心 驱动是 Linux 内核中用于支持 Mellanox ConnectX-5/6 网卡的原生驱动模块。虽然大多数发行版已内置该驱动,但为了获得最新特性或修复特定 bug,手动编译安装是常见需求

编译环境准备与源码获取

首先,安装内核头文件与编译工具链:yum install kernel-devel kernel-headers gcc make(RHEL/CentOS)或 apt install linux-headers-$(uname -r) build-essential(Ubuntu)。然后,从 NVIDIA 官方下载 MLNX_OFED 驱动包或直接克隆 linux-mlnx 仓库。推荐使用 MLNX_OFED,因为它包含完整的驱动栈与固件工具

编译与模块加载

进入驱动源码目录,执行 ./configure --with-kernel=/usr/src/kernels/$(uname -r) 配置编译选项。然后执行 make 与 make modules_install。安装完成后,使用 modprobe 核心 加载模块。通过 lsmod | grep mlx5 确认模块已加载,并使用 dmesg | grep mlx5 检查是否有错误信息

实操步骤

编译完成后,务必执行 depmod -a 更新模块依赖关系,否则重启后系统可能无法自动加载新模块。同时,建议在 /etc/modprobe.d/mlx5.conf 中配置 options 核心 num_vfs=8 等参数,以便开机自动创建 VF

样例套用检查

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

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