Oamc

内核模块管理 · 修改记录

这是 linux/kernel-module.md 的每次改动内容,按时间从新到旧。其他文章一起提交的部分不会出现在这里。

#1 2026-10-18 +73 −0 docs: 网络进阶(MSTP/ACL/NAT/PBR)、Linux 进阶(模块/性能/bonding)、Windows 进阶(DFS/DHCP/AD CS) 42afade
 new file mode 100644
 @@ -0,0 +1,73 @@
+---
+tags: [内核模块, modprobe, Linux]
+order: 100
+---
+
+# 内核模块管理
+
+## 场景
+
+要加载一个驱动(比如 bonding、nf_conntrack、第三方网卡驱动),或者排查模块冲突。
+
+## 前置条件
+
+- root 权限
+- 知道模块名
+- 内核版本与模块要匹配(尤其第三方驱动)
+
+## 配置
+
+```bash
+# 查看已加载
+lsmod
+lsmod | grep nf_conntrack
+
+# 看模块信息
+modinfo bonding
+modinfo -F version nf_conntrack
+
+# 临时加载/卸载
+modprobe bonding
+modprobe -r bonding
+
+# 开机自动加载
+echo bonding > /etc/modules-load.d/bonding.conf
+
+# 带参数加载
+echo "options bonding max_bonds=1" > /etc/modprobe.d/bonding.conf
+```
+
+编译第三方驱动(DKMS 方式,内核升级后自动重编):
+
+```bash
+dnf install -y dkms kernel-devel
+dkms add -m drivername -v 1.0
+dkms build -m drivername -v 1.0
+dkms install -m drivername -v 1.0
+```
+
+## 验证
+
+```bash
+lsmod | grep 模块名
+modinfo 模块名 | head
+dmesg | tail -20
+```
+
+加载失败时 `dmesg` 里有具体原因(版本不匹配、签名问题)。
+
+## 回滚
+
+```bash
+modprobe -r 模块名
+rm /etc/modules-load.d/模块名.conf
+```
+
+## 坑
+
+- **内核升级后第三方模块失效**(`insmod: invalid module format`),只能重编或用 DKMS。
+- Secure Boot 开启时未签名模块会被拒绝加载。
+- `modprobe -r` 时模块被占用会失败,先 `lsof` 或 `lsmod` 看引用计数。
+- 模块名和文件名不一致(`nf_conntrack` 对应 `nf_conntrack.ko`)。
+- `depmod -a` 不跑,新装的模块 `modprobe` 找不到。
+- 加载顺序有依赖,用 `modprobe` 而不是 `insmod`。