Linux modules-load 启动时加载驱动模块
Linux 内核包含非常多驱动以及其他功能模块,驱动开发时,我们可以通过
insmod
命令向内核中载入模块、rmmod
卸载模块、lsmod
列出加载的所有模块。一般情况下,模块会根据硬件接入情况自动载入内核。但某些情况下,我们需要使用modules-load
配置将部分驱动(或自己编写的测试驱动)自动载入内核。
手动管理驱动模块
以下指令可以手动单次管理驱动模块,当重启后,修改被复原。
-
insmod
: install module, 将.ko
模块文件载入内核insmod test.ko
-
lsmod
: list module, 列出所有已加载的驱动模块及其使用情况 -
rmmod
: remove module, 卸载模块,将模块名(无后缀名)对应的模块卸载rmmod test # remove module named `test`
启动时加载驱动模块
修改配置文件
在/etc/modules-load.d/
下,创建配置文件,为.conf
文件格式
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
test
- 一行一个模块名称(无后缀名,后面会讲系统如何寻找模块文件位置)
- 使用#表示注释行
安装模块
仅在配置文件中指定模块名称并不能找到模块。Linux系统有自己存放驱动的位置:
/lib/modules/<linux_kernel_version>/kernel
或
/usr/lib/modules/<linux_kernel_version>/kernel
我们一般将驱动模块放在drivers
子目录下,按照功能放在对应目录中(也可放在外面)
移动完成后,一定要执行depmod
更新文件映射,否则仍然无法识别模块。
modprobe
将根据depmod
提供的模块依赖信息进行模块文件映射和加载。
最后,reboot
后,lsmod
查看模块加载情况。