先看网卡图

麒麟系统版本以及内核版本如图

HiNIC3驱动编译与安装原理详解
一、驱动架构与依赖关系
1.1 驱动组件结构HiNIC3驱动 = hiudk3.ko (用户态接口) + hisdk3.ko (系统服务层) + hinic3.ko (内核驱动)
如图编译成功后的模块:

1.2 编译依赖关系

二、编译原理详解 重点来了
2.1 内核模块编译原理
Linux内核模块编译使用内核的Kbuild系统:
1. 读取模块的Makefile文件
2. 调用内核头文件/usr/src/linux-headers-$(uname -r)
3. 使用gcc编译成.ko (Kernel Object)文件 4. 生成模块签名和版本信息
2.2 HiNIC3的特殊处理
华为HiNIC驱动需要处理内核API变化:
# 1. 为什么需要nic-kcompat-generator.sh? # 因为不同内核版本的API可能变化,需要生成兼容层代码
# 2. 兼容层的作用: # – 封装不同内核版本的API调用 # – 处理内核数据结构变化 # – 确保驱动在不同内核版本上都能编译
三、完整编译流程(第一次需要执行)
3.1 准备编译环境
# 1. 检查当前内核版本 uname -r # 输出示例: 4.19.90-52.23.v2207.gfb08.ky10.aarch64 (GF国防版本)

# 2. 安装编译依赖
# 注意:kernel-devel版本必须与运行内核完全一致
dnf install -y gcc make kernel-devel-$(uname -r)
# 或使用yum yum install -y gcc make kernel-devel-$(uname -r)
# 3. 验证内核开发包安装 rpm -qa | grep kernel-devel
# 应该看到类似:kernel-devel-4.19.90-52.23.v2207.gfb08.ky10.aarch64 # 4. 检查内核头文件路径 ls -la /lib/modules/$(uname -r)/build/ # 这个链接应该指向内核源码目录
3.2 编译驱动模块
# 进入驱动源码目录 cd ~/hinic3-src_17.12.5.0
# 步骤1: 生成内核兼容代码
# 原理:检查当前内核版本,生成对应的适配代码 ./nic-kcompat-generator.sh

# 执行后会在output目录生成适配文件
# 步骤2: 编译内核驱动模块 cd hinic
# 清理之前的编译结果(可选) make clean
# 编译驱动 # make命令会:
# 1. 读取当前目录的Makefile
# 2. 使用内核的Kbuild系统编译
# 3. 生成hinic3.ko文件 make
# 步骤3: 验证编译结果 file hinic3.ko # 应该显示:ELF 64-bit LSB relocatable, ARM aarch64, version 1 (SYSV), BuildID[sha1]=…
# 步骤4: 查看编译的其他模块 ls ../output/ # 应该看到hiudk3.ko和hisdk3.ko

4 最后安装步骤
# 1. 创建目标目录(如果不存在)
mkdir -p /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/huawei/
# 2. 复制编译好的模块 # 从源码目录复制内核驱动
cp ~/hinic3-src_17.12.5.0/hinic/hinic3.ko \\ /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/huawei/
# 从output目录复制其他模块
cp ~/hinic3-src_17.12.5.0/output/hiudk3.ko \\ ~/hinic3-src_17.12.5.0/output/hisdk3.ko \\ /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/huawei/
# 3. 验证复制结果 ls -la /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/huawei/
# 应该看到3个.ko文件

5:更新模块依赖关系
# 运行depmod更新模块依赖
depmod -a
# 验证依赖关系
cat /lib/modules/$(uname -r)/modules.dep | grep huawei

5.1手动加载驱动模块
# 按顺序加载三个模块
modprobe hiudk3
# 检查是否加载成功
lsmod | grep hiudk3
# 加载第二个模块
modprobe hisdk3
lsmod | grep hisdk3
# 加载主驱动
modprobe hinic3 lsmod | grep hinic3
modinfo hinic3.ko


网硕互联帮助中心


评论前必须登录!
注册