MLNX_OFED 5.4-3.7.5.0 驱动安装:银河麒麟V10SP2 ARM 内核升级后编译避坑 3 步
MLNX_OFED 5.4-3.7.5.0 驱动在银河麒麟V10SP2 ARM环境下的内核适配与编译实战1. 内核升级后的驱动兼容性挑战当我们在国产化ARM服务器如华为Atlas系列上升级银河麒麟V10SP2操作系统内核后经常会遇到预编译的MLNX网卡驱动无法直接安装的问题。这种情况通常表现为安装过程中出现内核版本不匹配的错误提示其根本原因在于驱动与内核的强耦合性MLNX_OFED驱动在编译阶段会绑定特定内核版本符号表麒麟系统的ABI策略银河麒麟采用严格的内核ABI兼容性检查机制ARM架构的特殊性相比x86架构ARM平台的内核模块校验更为严格关键提示通过uname -r和rpm -qa | grep kernel命令可确认当前运行内核与已安装内核版本的差异这是排查兼容性问题的第一步。2. 驱动编译环境准备2.1 系统依赖安装执行以下命令安装必要的编译工具链yum install -y tcsh rpm-build elfutils-devel createrepo kernel-devel-$(uname -r)2.2 驱动ISO挂载将官方下载的MLNX_OFED驱动ISO挂载到/mnt目录mount -o ro,loop MLNX_OFED_LINUX-5.4-3.7.5.0-kylin10sp2-aarch64.iso /mnt cd /mnt目录结构应包含以下关键文件mlnxofedinstall # 主安装脚本 mlnx_add_kernel_support.sh # 内核适配脚本 RPMS/ # 预编译的驱动RPM包 src/ # 驱动源代码3. 分步编译与安装流程3.1 内核头文件验证首先确认内核头文件路径是否正确ls -d /lib/modules/$(uname -r)/build若该目录不存在需要先安装对应版本的内核开发包。3.2 驱动源码编译使用内置脚本为当前内核重新编译驱动./mlnx_add_kernel_support.sh -m ./该脚本会自动完成以下操作解压驱动源代码到临时目录应用内核兼容性补丁针对当前内核配置编译模块生成新的RPM包到/tmp目录常见问题处理错误类型解决方案tmp空间不足mount -o remount,size8G tmpfs /tmp依赖缺失根据报错信息补充安装开发包签名验证失败添加--skip-signature-check参数3.3 驱动安装与验证进入编译输出目录执行安装cd /tmp/MLNX_OFED_LINUX-5.4-3.7.5.0-kylin10sp2-aarch64 ./mlnxofedinstall --skip-distro-check --without-fw-update安装完成后需执行/etc/init.d/openibd restart dracut -f验证驱动状态ibstat ibv_devinfo4. 内核与驱动版本对照表以下为实测兼容的版本组合麒麟内核版本MLNX_OFED版本编译方式4.19.90-245.4-3.7.5.0预编译4.19.90-255.4-3.7.5.0需源码编译4.19.90-305.4-3.7.5.0需手动打补丁5. 性能优化与故障排查5.1 网络参数调优编辑/etc/rdma/rdma.confSET_IPOIB_CMyes IPOIB_LOADyes5.2 常见故障处理网卡未识别检查lspci | grep Mellanox输出性能下降更新固件并验证ethtool -i ib0显示版本模块加载失败使用dmesg | grep mlx查看内核日志在Atlas 800服务器上我们曾遇到编译后驱动导致RDMA性能下降30%的情况最终通过调整mlx5_core模块参数解决echo options mlx5_core log_num_mgm_entry_size-1 /etc/modprobe.d/mlx5.conf