Oamc

内核模块管理 · 修改记录

这是 linux/内核模块管理.md 的改动记录。后台每次保存都会留一份快照, 这里显示的是快照之间的差异,不会混入其他文章的改动。

还没有后台修改记录。

Git 提交记录

下面是 Git 里的提交,可能包含其他文章的改动(因为一次提交会带上工作区所有变化)。

#1 2026-10-25 +0 −0 refactor: 全部文章文件名中文化 0aa8fe6

这次没有正文改动。

#2 2026-10-18 +73 −0 docs: 网络进阶(MSTP/ACL/NAT/PBR)、Linux 进阶(模块/性能/bonding)、Windows 进阶(DFS/DHCP/AD CS) 42afade
 @@ -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`。