达永编程网

程序员技术分享与交流平台

UOS编译Nvidia MLNX驱动异常问题处理

基础信息:

UOS镜像版本:
uos-server-20-1060u1e-amd64.iso

操作系统版本:

PRETTY_NAME="UOS Server 20"

NAME="UOS Server 20"

VERSION_ID="20"

VERSION="20"

ID=uos

HOME_URL="https://www.chinauos.com/"

BUG_REPORT_URL="https://bbs.chinauos.com/"

VERSION_CODENAME=fuyu

PLATFORM_ID="platform:uel20"

内核版本:
4.19.90-2305.1.0.0199.75.uel20.x86_64

MLNX版本:
MLNX_OFED_LINUX-24.10-2.1.8.0-uos20.1060-x86_64.tar.gz

首次编译报错记录:

1. ./mlnx_add_kernel_support.sh -m /root/MLNX_OFED_LINUX-24.10-2.1.8.0-uos20.1060-x86_64

2. 编译报错

3. 查看日志观察问题

tail /tmp/mlnx_iso.33988_logs/mlnx_ofed_iso.33988.log

cat /tmp/mlnx_iso.33988_logs/OFED.34228.logs/mlnx-nvme-24.10.rpmbuild.log

编译mlnx-nvme时,提示fput函数缺失

修复方式:

1. 单独修改mlnx-nvme重新打包

(1) 从MLNX的包中找到mnlx-nvme的源码包

cd src

tar xzvf MLNX_OFED_SRC-24.10-2.1.8.0.tgz

rpm -ivh MLNX_OFED_SRC-24.10-2.1.8.0/SRPMS/mlnx-nvme-24.10-OFED.24.10.2.1.8.1.src.rpm

(2) 找到安装的源码修改

cd /root/rpmbuild/SOURCES (因为使用root安装的源码包)

tar xzvf mlnx-nvme-24.10.tgz

(3) fput函数定义在内核file.h中 #include <linux/file.h>

修改
mlnx-nvme-24.10/target/tcp.c

(4) 重新打包制作源码包

tar czvf mlnx-nvme-24.10.tgz mlnx-nvme-24.10

rpmbuild -ba /root/rpmbuild/SPECS/mlnx-nvme.spec

缺少mlnx的一些文件,可以到第三步中的日志里找到对应的文件路径,拷贝到指定/usr/src/文件夹下

cp /tmp/mlnx_iso.33988/usr/src/ofa_kernel /usr/src/ -r

再次编译rpmbuild -ba
/root/rpmbuild/SPECS/mlnx-nvme.spec

/root/rpmbuild/SRPMS/中获得可用的mnlx-nvme的源码包

mlnx-nvme-24.10-OFED.24.10.2.1.8.1_4.19.90_2305.1.0.0199.75.uel20.x86_64.src.rpm

2. 修改
mlnx_add_kernel_support.sh,保证在编译mlnx-nvme的源码前替换新的包

拷贝
mlnx-nvme-24.10-OFED.24.10.2.1.8.1_4.19.90_2305.1.0.0199.75.uel20.x86_64.src.rpm到root目录

在tar xzf 后面,添加如下内容

3. 重新执行新的
mlnx_add_kernel_support.sh,成功

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言