第一章 驱动安装准备:操作系统环境检查、内核版本确认、依赖包安装

各位同学好,我是老张。今天咱们正式开始英伟达IB网卡驱动的安装之旅。说实话,我见过太多人一上来就急着装驱动,结果卡在各种莫名其妙的问题上。嗯,磨刀不误砍柴工,先把准备工作做扎实了,后面才能顺风顺水。

1.1 操作系统环境检查——别让系统拖后腿

我个人习惯,拿到一台新机器,第一件事不是装驱动,而是先看看操作系统是什么版本。你想想看,IB网卡驱动对系统的要求其实挺挑剔的。我曾在项目中遇到过,客户拿了一台CentOS 6的老机器,非要装最新的ConnectX-6驱动,结果折腾了两天,最后发现官方早就停止支持了。

先跑个命令看看系统信息:

cat /etc/os-release
uname -a

重点关注几个点:

  • 发行版:RHEL/CentOS 7/8、Ubuntu 18.04/20.04、SUSE 15 这些是主流
  • 架构:x86_64 还是 aarch64?别搞混了
  • 系统位数:必须是64位,32位系统就别想了
⚠️ 注意: 我曾经遇到一台机器,系统显示是CentOS 7.9,但内核是自编译的,结果驱动编译时各种报错。所以,尽量用官方标准内核,别自己瞎折腾。

1.2 内核版本确认——驱动和内核是夫妻

IB网卡驱动说白了,是要和内核"结婚"的。版本不匹配,轻则编译失败,重则系统崩溃。我记得有一次,客户升级了内核,但忘了重新编译驱动,结果网卡直接不认了,业务中断了半小时。

查看内核版本:

uname -r

比如输出 3.10.0-1160.el7.x86_64,这个就是你的内核版本。然后去英伟达官网查一下,你下载的驱动包是否支持这个内核。一般来说,MLNX_OFED 驱动包会支持主流内核,但如果你用的是非常新的内核(比如5.15+),可能就需要等官方更新。

💡 我的经验: 生产环境建议用LTS(长期支持)内核,比如RHEL 7的3.10系列,或者RHEL 8的4.18系列。这些内核经过大量验证,驱动兼容性最好。

1.3 依赖包安装——缺啥补啥

装驱动就像盖房子,你得先把砖头、水泥、钢筋准备好。依赖包就是这些材料。我见过最离谱的一次,有人装驱动时发现连gcc都没有,还问我为什么编译报错……

必备的依赖包清单:

包名 作用 安装命令(RHEL/CentOS)
gcc C语言编译器,驱动源码编译必备 yum install gcc -y
make 构建工具,管理编译过程 yum install make -y
kernel-devel 内核头文件,驱动需要和内核交互 yum install kernel-devel -y
kernel-headers 内核API头文件 yum install kernel-headers -y
elfutils-libelf-devel ELF文件处理库,某些驱动需要 yum install elfutils-libelf-devel -y
python3 部分安装脚本依赖Python yum install python3 -y

🔧 小技巧: 安装kernel-devel时,一定要确保它的版本和当前内核完全一致。可以用 rpm -qa | grep kernel-devel 检查。如果不一致,用 yum install kernel-devel-$(uname -r) 指定版本安装。

Ubuntu/Debian系统的话,命令稍有不同:

apt update
apt install build-essential linux-headers-$(uname -r) -y

这里有个坑,我踩过好几次:有时候你装了kernel-devel,但路径不对。驱动编译时找不到头文件,就会报类似 Cannot find kernel source 的错误。解决办法是手动创建一个软链接:

ln -s /usr/src/kernels/$(uname -r) /lib/modules/$(uname -r)/build

1.4 知识体系总览

下面这张图,是我自己画的,把驱动安装前的准备工作串起来了。你照着这个流程走,基本不会出大问题。

IB网卡驱动安装准备——知识体系图 驱动安装准备 操作系统环境检查 内核版本确认 依赖包安装 发行版/架构 系统位数(64位) uname -r 查看 与驱动兼容性 推荐LTS内核 gcc/make kernel-devel 其他依赖 核心原则:版本匹配、依赖齐全、内核标准 先检查,后安装,避免踩坑

1.5 避坑指南——我踩过的那些坑

最后,分享几个我亲身经历过的坑,你遇到了可以直接跳过:

  • 坑1:kernel-devel版本不匹配 —— 我曾经在CentOS 7上,用yum自动安装kernel-devel,结果它给我装了个和当前内核不同的版本。编译时各种报错,折腾了一下午才发现。后来我学乖了,每次都用 yum install kernel-devel-$(uname -r) 指定版本。
  • 坑2:缺少elfutils-libelf-devel —— 这个包在RHEL 8/CentOS 8上是必须的,但很多人不知道。驱动编译到一半报错,说找不到 libelf.h。装上就好了。
  • 坑3:Python版本太低 —— 有些新版的MLNX_OFED驱动安装脚本需要Python 3.6以上。我遇到过一台CentOS 7.6,默认Python还是2.7,结果安装脚本直接报错退出。解决办法是手动装一个Python 3.8。

✅ 总结一下: 驱动安装准备,说白了就是三件事——看系统、对内核、装依赖。这三步走稳了,后面编译安装就是水到渠成的事。别嫌麻烦,准备工作做得越细,后面越省心。


专注资料整理