linux开机自动加载内核模块需四步:一、将.ko文件放入/lib/modules/$(uname -r)/对应路径并运行sudo depmod -a;二、在/etc/modules-load.d/下创建.conf文件写入模块名(无.ko后缀);三、如需依赖或参数,在/etc/modprobe.d/中配置softdep或options;四、用modprobe测试、journalctl查日志验证。

Linux 系统开机自动加载指定内核模块,核心是让 systemd-modules-load.service 在早期启动阶段读取配置并调用 modprobe。关键不在于“复制文件”或“写脚本”,而在于路径、命名、依赖和配置三者的协同。下面分四步讲清楚。
确认模块已正确安装到内核模块树
模块文件(.ko)必须放在对应内核版本的模块目录下,否则 modprobe 找不到它:
- 执行
uname -r查看当前内核版本,例如输出6.8.0-45-generic - 将你的模块(如
mydrv.ko)拷贝到:/lib/modules/$(uname -r)/kernel/drivers/misc/mydrv.ko(路径可自定义,但必须在/lib/modules/xxx/下) - 运行
sudo depmod -a—— 这一步不可跳过,它会更新modules.dep和其他依赖索引,确保modprobe能解析依赖关系
通过 /etc/modules-load.d/ 配置模块名(推荐方式)
这是最标准、最可靠的方法,由 systemd 原生支持,启动时机早、兼容性好:
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- 在
/etc/modules-load.d/下新建一个以.conf结尾的文件,例如:sudo tee /etc/modules-load.d/mydrv.conf mydrv<br>EOF
- 注意:文件里只写模块名(即去掉
.ko后缀的名称),不是路径,也不是完整文件名 - 模块名应与
modinfo mydrv输出中的name:字段一致;若不确定,可用modinfo /path/to/mydrv.ko | grep name查看
处理依赖或加载参数(需要时)
如果模块依赖其他模块,或需传入参数(如 debug=1),补充 /etc/modprobe.d/ 配置:
- 创建配置文件:
sudo tee /etc/modprobe.d/mydrv.conf - 添加依赖(强制先加载
usbcore):softdep mydrv pre: usbcore - 添加参数(多个参数用空格分隔):
options mydrv debug=1 buffer_size=65536 - 如需别名或安装钩子,也可在此定义,但普通场景只需
options行
验证与排错
重启前可快速验证配置是否生效:
- 手动加载测试:
sudo modprobe mydrv—— 成功则无报错,lsmod | grep mydrv应可见 - 检查配置是否被识别:
systemctl cat systemd-modules-load.service确认服务启用;systemctl list-dependencies --reverse systemd-modules-load.service可看其触发时机 - 查看启动日志:
journalctl -b | grep -i "mydrv\|modules-load",确认有 “Loaded module 'mydrv'” 类似记录 - 若失败,常见原因:模块名拼写错误、
depmod未运行、模块未放入正确内核路径、参数格式错误










