← 返回目录课程:《Ubuntu配置Mellanox 25G网卡教程》
04

04 NVIDIA MLNX_OFED驱动源配置与依赖安装

添加NVIDIA官方APT源,安装build-essential、dkms等编译依赖
章节导航 难度:入门类型:工程实战
目标结果

掌握Ubuntu配置Mellanox在NVIDIA MLNX_OFED驱动源配置与依赖安装中的定位、故障信号与验证顺序。

关键词
模块接口配置流程状态
交付物
架构图代码片段排障表检查清单

驱动源配置前的环境检查与问题定位

现场定位记录

  • 对象/模块:典型技术应用现场里的MLNX_OFED驱动源配置
  • 问题现象:典型技术应用现场里MLNX_OFED驱动源配置一开始改动很快,输入需求增加后日志记录显示状态外泄、循环依赖和接口膨胀。
  • 验证动作:先把职责边界、私有状态、依赖方向、阈值标准和验证入口画清,再执行拆分动作。
  • 工程判断:前后变化点能被隔离、被验证、被替换,才说明架构重构达到标准。

NVIDIA MLNX_OFED驱动源配置与依赖安装落地前要同时核对MLNX_OFED驱动源配置的依赖安装、失败路径和添加NVIDIA官方APT源。

概念块:NVIDIA MLNX_OFED驱动源配置与依赖安装

NVIDIA MLNX_OFED驱动源配置与依赖安装用MLNX_OFED驱动源配置、依赖安装、添加NVIDIA官方APT源连接到MLNX_OFED驱动源配置的调试、验证和交付动作。

  • MLNX_OFED驱动源配置
  • 依赖安装
  • 添加NVIDIA官方APT源
  • 安装build-essential

在开始配置 NVIDIA MLNX_OFED 驱动源之前,首先要明确一个工程现实:直接使用 Ubuntu 系统自带的 rdma-core 或 核心 内核模块,虽然能识别 Mellanox ConnectX-4 Lx 25G 网卡,但往往无法启用 RoCE(RDMA over Converged Ethernet)高级特性,且在大流量场景下容易触发固件不匹配导致的丢包。因此,本节的核心目标就是通过添加 NVIDIA 官方 APT 源,安装完整版 MLNX_OFED 驱动及其编译依赖,为后续的 25G 网卡教程中的性能调优打下基础

关键判断

不要使用 Ubuntu 默认仓库中的 mlnx-ofed-kernel-dkms 包,它版本滞后且缺少用户态工具。必须从 NVIDIA 官方 APT 源获取与内核版本严格匹配的 OFED 包

首先确认当前系统环境。执行 uname -r 查看内核版本,并运行 lspci | grep Mellanox 确认网卡型号。如果输出中包含 “ConnectX-4 Lx” 或 “MT27710”,说明硬件识别正常。接着检查是否已安装过旧版 OFED:ofed_info -s 若返回,需先执行 /etc/init.d/openibd force-unload 卸载旧驱动,避免源冲突

NVIDIA 官方 APT 源添加与依赖安装机制

NVIDIA 为 Ubuntu 提供了独立的软件源,其关键机制在于:源中的 mlnx-ofed-kernel-dkms 包会针对当前运行的内核版本自动编译内核模块,而 build-essential 和 dkms 正是 DKMS(Dynamic Kernel Module Support)框架的编译工具链。缺少这两个依赖,驱动安装会直接报错 “Kernel module compilation failed”

添加 GPG 密钥与源列表

执行以下命令添加 NVIDIA 官方签名密钥和源。注意,Ubuntu 22.04 对应 jammy,20.04 对应 focal,请根据 lsb_release -cs 输出替换

# 导入 NVIDIA GPG 密钥
wget -qO - https://www.mellanox.com/downloads/ofed/mlnx_ofed_key.pub | sudo apt-key add -
# 添加 APT 源(以 Ubuntu 22.04 为例)
echo "deb https://linux.mellanox.com/public/repo/mlnx_ofed/latest/ubuntu22.04 ./" | sudo tee /etc/apt/sources.list.d/mellanox_mlnx_ofed.list
# 更新源
sudo apt update

阅读这段代码时,重点看MLNX_OFED驱动源配置的伪代码,以及它如何用稳定性与可观测性证明结果可复测。

上述命令中,apt-key add 用于信任 NVIDIA 的发布密钥;tee 将源地址写入 /etc/apt/sources.list.d/ 目录下的独立文件,便于后续管理。更新源后若出现 “NO_PUBKEY” 错误,说明密钥导入失败,需手动执行 apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <缺失的KEY_ID>

安装编译依赖与驱动核心包

依赖安装是本节最容易出错的步骤。许多用户只安装了 build-essential,却忽略了 dkms 和 linux-headers-$(uname -r),导致内核模块编译阶段失败。正确的安装命令如下:

# 安装编译工具链和内核头文件
sudo apt install -y build-essential dkms linux-headers-$(uname -r)
# 安装 MLNX_OFED 核心驱动包(不含用户态工具)
sudo apt install -y mlnx-ofed-kernel-dkms

阅读这段代码时,重点看MLNX_OFED驱动源配置的伪代码,以及它如何用稳定性与可观测性证明结果可复测。

build-essential 提供了 gcc、make 等编译器;dkms 负责在内核更新后自动重建模块;linux-headers-$(uname -r) 必须与当前内核版本完全一致,否则 DKMS 编译会因找不到 /lib/modules/$(uname -r)/build 而失败。安装 mlnx-ofed-kernel-dkms 时,系统会自动编译 核心、mlx4_en 等内核模块,并生成 /etc/infiniband/openib.conf 配置文件

实操步骤

安装完成后,立即执行 sudo dkms status 检查模块状态。输出应包含 “mlnx-ofed-kernel/<版本>, added” 且状态为 “installed”。如果显示 “built” 但未 “installed”,手动执行 sudo dkms install mlnx-ofed-kernel/<版本>

资产验证

以下参数表记录了驱动安装后的关键验证点,用于确认 25G 网卡教程中的硬件是否就绪

检查清单
检查清单:MLNX_OFED 驱动安装验证
检查项标准是否通过
内核模块加载lsmod | grep mlx5 输出包含 核心 和…未重启系统或未执行 sudo modprobe 核心
网卡状态ibstat 显示端口状态为 “Active”,速率…未安装 ibutils 或 rdma-core 用户态…
RDMA 设备ibv_devinfo 列出物理端口,且 节点 非全零固件版本过旧,需通过 mlxup 工具更新
中断亲和性/proc/interrupts 中 mlx5 中断均…未配置 irqbalance 或手动绑定中断

验证时,优先使用 ibstat 而非 ip link show,因为前者直接报告 InfiniBand/RoCE 链路状态。如果 ibstat 显示 “Port state: Down”,检查光模块是否插紧,并执行 sudo ethtool -s enp3s0f0np0 speed 25000 autoneg off 强制设置 25G 速率

真实项目场景

某数据中心运维团队在批量部署 25G 网卡教程中的服务器时,发现 20% 的节点在安装 mlnx-ofed-kernel-dkms 后 ibstat 显示端口 Down。排查发现这些节点的 BIOS 中 SR-IOV 未启用,导致 核心 无法分配足够的 MSI-X 中断向量。解决方法是进入 BIOS 开启 “SR-IOV Support” 并重启

问题对照与修正

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

风险判断

NVIDIA MLNX_OFED驱动源配置与依赖安装
具象图NVIDIA MLNX_OFED驱动源与依赖…观察对象参数变化验证记录25G网卡教程NVIDIAMLNXOFED驱动源与依…Ubuntu…RACI添加NVID…ACIR添加NVID…CIRAR 负责 / A 审批…

配置过程中存在三个主要风险点,需要提前识别并准备兜底方案

风险表摘要
风险点触发条件影响预防措施
常见误区

不要试图通过 apt install mlnx-ofed-kernel-dkms 一次性安装所有组件。正确的顺序是:先安装 build-essential 和 dkms,再安装内核头文件,最后安装驱动包。颠倒顺序会导致 DKMS 因缺少头文件而编译失败

最后,执行 sudo reboot 重启系统,然后运行 dmesg | grep mlx5 确认驱动加载日志。如果看到 “核心: Init done” 且无 “firmware version mismatch” 错误,说明 25G 网卡教程的驱动源配置与依赖安装已全部完成,可以进入下一节的网卡配置环节

细节补充:

NVIDIA MLNX_OFED驱动源配置与依赖安装先对齐现场任务、输入材料和输出结果,再回到Ubuntu配置Mellanox的细节逐项核对。

NVIDIA MLNX_OFED驱动源配置与依赖安装的主要风险来自MLNX_OFED驱动源配置边界、状态和验证口径不清;落地前必须核对伪代码,并确认例外场景和结果记录。

本节资料使用说明

Q1

NVIDIA MLNX_OFED驱动源配置与依赖安装里最先使用的工具、样例或资料是哪一个?

使用口径:
使用顺序:先用定义目标和边界的材料,再进入具体样例或工具。
替换位置:把Ubuntu配置Mellanox中可替换字段和保留结构分开标注。
输出物:最终要看到25G网卡教程或Ubuntu配置Mellanox,不是只完成操作。
Q2

替换Ubuntu配置Mellanox时,哪些位置可以改,哪些位置要保留?

使用口径:
替换位置:把Ubuntu配置Mellanox中可替换字段和保留结构分开标注。
输出物:最终要看到25G网卡教程或Ubuntu配置Mellanox,不是只完成操作。
常见误操作:提醒默认值、旧素材或错误字段残留。
Q3

输出物检查时,最不能漏掉哪一项?

使用口径:
输出物:最终要看到25G网卡教程或Ubuntu配置Mellanox,不是只完成操作。
常见误操作:提醒默认值、旧素材或错误字段残留。
使用顺序:先用定义目标和边界的材料,再进入具体样例或工具。
Q4

如果换一套素材,使用顺序要不要调整?

使用口径:
常见误操作:提醒默认值、旧素材或错误字段残留。
使用顺序:先用定义目标和边界的材料,再进入具体样例或工具。
替换位置:把Ubuntu配置Mellanox中可替换字段和保留结构分开标注。