Linux系统下实现开机自动加载驱动模块

        在使用模块化加载驱动时,若系统内部存在同类别设备驱动,可能会出现无法加载我们添加的动态模块,比如Linux系统内置了CDC驱动,当我们使用兼容CDC和VCP驱动USB转串口芯片时,就会出现上电出现的是CDC串口,从而影响使用。

        至于CDC驱动下的串口和VCP的区别可以参考:使用免驱CDC串口的注意事项-<学习收录>_OIDCAT的博客-优快云博客_cdc串口https://blog.youkuaiyun.com/OIDCAT/article/details/121603749?spm=1001.2014.3001.5501        /etc/modules-load.d 文件夹下添加.conf文件,文件中只需填入模块名称即可实现该名称驱动在内核引导阶段进行加载,避免与CDC驱动冲突问题,此时符合该驱动的新设备挂入系统时也会优先选择该配置文件内驱动。

        有可能老版本Linux不支持该方式,可使用将模块名写入/etc/modules

CentOS下安装CH343驱动举例

        将编译生成的驱动进行压缩,然后拷贝到系统内核中:

        目录/lib/modules/$(uname -r)/kernel/driver/usb/serial

xz -k ch343.ko
cp -f ./ch343.ko.xz /lib/modules/$(shell uname -r)/kernel/drivers/usb/serial/

        若ubuntu系统下,则直接拷贝操作即可

cp -f ./ch343.ko /lib/modules/$(shell uname -r)/kernel/drivers/usb/serial/

创建配置文件

        但此处我们就不用如此麻烦了,直接echo写入即可,并修改配置文件权限为可执行+x

echo "ch343" >> /etc/modules-load.d/ch343.conf
chmod +x /etc/modules-load.d/ch343.conf

结果

        设置完重启系统,开机后,ls /dev查看串口,可见CH343的设备节点ttyCH343USBx已经生成了

 

### 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、付费专栏及课程。

余额充值