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查看模块加载情况。

Logo

更多推荐