【问题复盘】在Ubuntu 20.04下安装OFED驱动 复盘:在Ubuntu 20.04下安装OFED驱动

简介: 整个问题主要是由于不同的内核版本导致文件路径不同,进而导致安装过程中某些库无法按预期安装而出现问题。为什么使用最新的OFED驱动解决了问题呢?推测是最新驱动补充了之前缺失的某些文件,因此后续安装过程能够正常进行。例如,在OFED 5.4中,某个安装所需的文件F位于A处,但安装程序却在B处查找该文件,导致报错。而在OFED 5.8中,该安装所需的文件F被移回到B处,此时不管去哪里查找都能找到文件F,因此安装可以正常进行。

起因

最近收到两台服务器,都搭载了ConnectX-5 EX网卡。由于供应商预装了Ubuntu 20.04操作系统,而我们的后端代码也是基于Ubuntu开发的,因此需要在Ubuntu上安装ConnectX-5网卡的驱动。

问题

尽管供应商已经预装了驱动,但运行我们的服务时出现以下错误:

EAL: /lib/x86_64-linux-gnu/libmlx5.so.1: version `MLX5_1.15' not found (required by so/x86_64/libmlx5-64.so)
EAL: FATAL: Cannot init plugins
EAL: Cannot init plugins

分析

首先怀疑OFED驱动是否已安装,通过运行命令ibv_devinfo查看网卡信息,确认驱动已安装。

按照手册的说法,我们想用英伟达网卡跑TRex那就必须在centos的特定版本下使用,版本对应关系如下:

TRex 版本 OFED 操作系统
2.32及以下 only 4.1 CentOS 7.3
2.33-2.56 only 4.3 CentOS 7.4
2.57和v2.86 only 4.6 CentOS 7.6
2.89及以上 only GA 5.3-1 CentOS 7.9

https://trex-tgn.cisco.com/trex/doc/trex_appendix_mellanox.html#_upgrade_procedureeightpresssavecashdeal

然后注意到根据文档,使用NVIDIA网卡运行TRex需要特定版本的CentOS和OFED驱动。针对MCX516A系列网卡,需要下载OFED 5.x,并配套使用TRex 2.89版本。

决定重新安装驱动,因为不清楚供应商预装的驱动版本是否有问题。

下载OFED驱动:

https://www.mellanox.com/page/mlnx_ofed_eula?mtag=linux_sw_drivers&mrequest=downloads&mtype=ofed&mver=MLNX_OFED-5.4-3.7.5.0&mname=MLNX_OFED_LINUX-5.4-3.7.5.0-ubuntu20.04-x86_64.tgz

按以下步骤安装:

tar -xf MLNX_OFED_LINUX-5.4-3.7.5.0-ubuntu20.04-x86_64.tgz
cd MLNX_OFED_LINUX-5.4-3.7.5.0-ubuntu20.04-x86_64
sudo ./mlnxofedinstall --with-mft --with-mstflint --dpdk --upstream-libs

安装过程中遇到问题:

在安装mlnx-ofed-kernel-dkms时失败,出现类似以下提示信息:

Error: mlnx-ofed-kernel-dkms installation failed!
Collecting debug info...
See:
  /tmp/MLNX_OFED_LINUX.1976.logs/mlnx-ofed-kernel-dkms.debinstall.log
Removing newly installed packages...

查看日志发现以下提示信息:

Copying build sources from '/var/lib/dkms/mlnx-ofed-kernel/5.4/build/../build' to '/usr/src/ofa_kernel/5.15.0-58-generic' ...
/bin/cp: cannot stat 'Module*.symvers': No such file or directory

关键词是5.15.0-58-generic,即内核版本可能存在问题。

现有的安装方式在某些地方找不到对应的安装文件。

尝试复制报错中提到的文件到相应位置,但并未解决问题,因此决定尝试更换内核版本。

升级系统软件库和内核:

apt-get install build-essential dkms

这个过程较慢,并且在安装升级dkms时出现错误,进一步证实问题可能是由当前内核版本引起的。

通过搜索得知,Ubuntu 20.04 + 5.4内核可以使用MLNX_OFED_LINUX-4.9-6.0.6.0驱动。

而Ubuntu 20.04 + 5.15内核只能使用默认版本的4.0驱动。

这篇博客中,作者的系统为Ubuntu 20.04,通过安装最新版的MLNX_OFED_LINUX-5.8-3.0.7.0成功解决了类似问题。

由于我们的系统内核版本也是5.15(似乎5.15是Ubuntu 20.04的默认内核版本),决定尝试安装最新的OFED驱动,看是否能解决问题。

果然,在安装MLNX_OFED_LINUX-5.8-3.0.7.0时,mlnx-ofed-kernel-dkms成功安装。

问题解决。

总结

整个问题主要是由于不同的内核版本导致文件路径不同,进而导致安装过程中某些库无法按预期安装而出现问题。

为什么使用最新的OFED驱动解决了问题呢?推测是最新驱动补充了之前缺失的某些文件,因此后续安装过程能够正常进行。

例如,在OFED 5.4中,某个安装所需的文件F位于A处,但安装程序却在B处查找该文件,导致报错。而在OFED 5.8中,该安装所需的文件F被移回到B处,此时不管去哪里查找都能找到文件F,因此安装可以正常进行。

ref:

1、https://skyao.io/learning-ubuntu-server/docs/router/update-drivers.html

2、https://blog.csdn.net/weixin_45485072/article/details/132892799

相关文章
|
6天前
|
Ubuntu Linux Docker
Ubuntu22.04上Docker的安装
通过以上详细的安装步骤和命令,您可以在Ubuntu 22.04系统上顺利安装
78 11
|
1月前
|
Ubuntu 开发工具 git
Ubuntu安装homebrew的完整教程
本文介绍了如何在没有公网的情况下安装 Homebrew。首先访问 Homebrew 官网,然后通过阿里云的镜像克隆安装脚本,并创建普通用户进行安装。接着修改 `install.sh` 文件指向国内镜像,执行安装命令。最后配置环境变量并更换 Homebrew 源为国内镜像,确保安装顺利。
262 50
|
29天前
|
Ubuntu
ubuntu和debian 的安装包dpkg管理命令对安装包进行安装,查询,卸载
Ubuntu dpkg 软件包管理命令概览:安装、卸载、查看和配置软件包。包括解决依赖、强制卸载、列出及过滤已安装包、查看包详情等操作。
55 10
|
1月前
|
Ubuntu API 开发工具
PSOPT在Ubuntu22.04下的安装
通过上述步骤,可以在Ubuntu 22.04下成功安装并配置PSOPT。PSOPT是一个功能强大的工具,适用于解决各种最优控制问题。确保在安装前满足系统要求,并仔细按照步骤操作,可以避免大多数常见问题。通过MATLAB与PSOPT的结合,您可以更高效地处理复杂的控制问题,并获得准确的解决方案。
32 5
|
1月前
|
Ubuntu 网络协议 关系型数据库
超聚变服务器2288H V6使用 iBMC 安装 Ubuntu Server 24.04 LTS及后续系统配置
【11月更文挑战第15天】本文档详细介绍了如何使用iBMC在超聚变服务器2288H V6上安装Ubuntu Server 24.04 LTS,包括连接iBMC管理口、登录iBMC管理界面、配置RAID、安装系统以及后续系统配置等步骤。
112 4
|
2月前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(五):18.04安装多版本CUDA
这篇博客文章介绍了在Ubuntu 18.04系统上如何安装和切换不同版本的CUDA,以及如何安装不同版本的cuDNN。
239 2
|
2月前
|
并行计算 PyTorch TensorFlow
Ubuntu安装笔记(一):安装显卡驱动、cuda/cudnn、Anaconda、Pytorch、Tensorflow、Opencv、Visdom、FFMPEG、卸载一些不必要的预装软件
这篇文章是关于如何在Ubuntu操作系统上安装显卡驱动、CUDA、CUDNN、Anaconda、PyTorch、TensorFlow、OpenCV、FFMPEG以及卸载不必要的预装软件的详细指南。
5016 3
|
2月前
|
Ubuntu Linux 测试技术
Linux系统之Ubuntu安装cockpit管理工具
【10月更文挑战第13天】Linux系统之Ubuntu安装cockpit管理工具
222 4
Linux系统之Ubuntu安装cockpit管理工具
|
2月前
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
213 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
2月前
|
Ubuntu Linux C语言
Ubuntu安装笔记(二):ubuntu18.04编译安装opencv 3.4.0 opencv_contrib3.4.0
本文介绍了在Ubuntu 18.04系统上编译安装OpenCV 3.4.0及其扩展包opencv_contrib 3.4.0的详细步骤,包括下载源码、安装依赖、配置CMake和编译安装,以及常见问题的解决方法。
245 1
Ubuntu安装笔记(二):ubuntu18.04编译安装opencv 3.4.0 opencv_contrib3.4.0