Linux modules-load 启动时加载驱动模块

本文介绍如何在Linux系统中通过配置modules-load实现启动时自动加载驱动模块。包括使用insmod、lsmod、rmmod等命令的手动管理方法及通过配置文件实现自动加载的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

### Linux系统启动时自动加载驱动 #### 方法一:利用`/etc/modules-load.d` 对于大多数现代Linux发行版而言,推荐的方式是在`/etc/modules-load.d/`目录下创建一个新的配置文件来指定需要在引导过程中被加载内核模块。例如,为了使名为`example_module`的驱动能够在每次重启之后仍然可用,可以在该位置新建一个文本文件并命名为`99-example.conf`: ```bash echo "example_module" > /etc/modules-load.d/99-example.conf ``` 这种方法简洁明了,并且遵循了当前主流操作系统的最佳实践[^1]。 #### 方法二:修改`/etc/rc.local` 另一种较为传统但依然有效的做法就是编辑全局初始化脚本`/etc/rc.local`。在这个文件里添加一行用于调用`modprobe`命令以装载所需的设备驱动程序。假设目标是要让`v4l2loopback`视频回环接口始终处于激活状态,则应追加如下所示的内容到上述提到的文件末尾处: ```bash modprobe v4l2loopback ``` 需要注意的是,在某些较新的版本中可能默认情况下并不提供此文件;此时则需自行建立它,并确保给予恰当权限以便能够被执行。 #### 方法三:通过`/etc/sysconfig/modules`或`/etc/rc.modules` 针对那些希望更深入定制化其环境或者正在处理特殊场景下的需求(比如嵌入式开发板),还可以考虑采用更为底层的办法——即向`/etc/sysconfig/modules/`添加`.modules`结尾的新脚本或是直接编辑位于根分区内的`/etc/rc.modules`文件。这两种途径都允许用户编写一段简单的Shell代码片段用来执行任意复杂的逻辑从而完成预期的任务。举个例子来说,当打算确保FUSE支持总是有效的时候,可以按照下面给出的形式构建相应指令集之一: - 创建新文件于`/etc/sysconfig/modules/fuse.modules`: ```bash echo 'modprobe fuse' >> /etc/sysconfig/modules/fuse.modules && chmod +x /etc/sysconfig/modules/fuse.modules ``` - 或者直接编辑`/etc/rc.modules`(如果没有找到这个文件就需要自己创建): ```bash echo 'modprobe fuse' >> /etc/rc.modules && chmod +x /etc/rc.modules ``` 无论采取哪种方案,最终都需要重新启动计算机才能生效更改后的设定。可以通过`lsmod | grep <module_name>`这样的组合命令来进行验证工作是否成功完成了所期望的操作[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值