基础信息:
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,成功