目前我知道有两种方式来实现开机自动加载驱动模块,一种是将驱动模块放到 /lib/modules/uname -r/ 中,然后在修改 /etc 下的 modules 等文件;另一种是编写开启自启脚本,将驱动安装等操作放入其中。本文主要介绍第一种。

文章目录

  • 不使用开机自启脚本
    • 1. 将驱动文件复制到内核驱动目录
    • 2. 使用命令 depmod -a (非必要)
    • 3. 将模块设置为自动加载
    • 4. 重启验证
    • make install 一步安装
  • 开机自启脚本

不使用开机自启脚本

1. 将驱动文件复制到内核驱动目录

/lib/modules/uname -r/kernel/driver 下存放了内核的所有驱动模块,要想让系统能自动找到我们的驱动,我们需要将自己的驱动模块放到该目录下(驱动放到 /lib/modules/uname -r/ 下的任意目录,都可以被系统找到)。uname -r 是当的内核版本,不同内核版本有各自的内核目录。

2. 使用命令 depmod -a (非必要)

depmod 命令用于分析可载入模块的相依性,-a 参数的作用是探测所有的模块。我所用的驱动文件没有其他依赖项(有些驱动存在依赖项,必须先加载其他驱动后才能进行安装),所以可以不调用 depmod 命令。

3. 将模块设置为自动加载

这里介绍两种方式将模块设置为自动加载(其实差不多),第一种:在 /etc/modules-hoad.d/ 目录下创建一个 xxx.conf(名字任意)文件,在里面添加我们要加载的驱动名(一个驱动占一行)。

第二种和第一种类似, /etc/modules-hoad.d/ 目录下已经有了一个 modules.conf 文件,在文件的最后面添加我们要加载的驱动。这是一个软链接文件,所以我们直接操作 /etc/modules 也是可以的。

4. 重启验证

上述操作完成后,重启系统,使用 lsmodcat /proc/modules 命令查看驱动是否已经加载。


make install 一步安装

虽然我经常会用到 make install 来安装一些驱动,但我一直没去了解它的执行原理,找一些现成的 Makefile 文件分析了一下,发现其实也挺简单的,下面的总结仅供参考。

之前我们要通过三步来将其设置为开机自动加载,但如果要将这个驱动安装在多台机器上且同时要进行自动加载呢?这时我们可能会想到将上述操作写入一个脚本,每台机器都执行一次。但不要忘了我们有一个现成的 “脚本”—— make 工具。

在我们的 Makefile 文件中添加 install 选项,将上文介绍的三大步骤一一写入。

install (指定下图的第 12 行)是一个命令,它的作用和 cp 很相似,都是将文件复制到另一个文件,但 cp 会先清空原文件再写入新文件,而 install 会先删除原文件再写入新文件。(Makefile 中尽量用 install 命令)

第三步新建并写入 xxx.conf 文件时,最好使用 >> (追加)的方式写入我们的驱动名,特别是我们的目标文件为 modules.conf 时(不过 modules.conf 默认也是空的)。

修改完 Makefile 后 ,使用 make install 进行安装(要使用 root 权限,不过 make 一般不需要用到 root 权限)。这样我们就能通过一个命令实现驱动的自动加载了。

开机自启脚本

开机自启脚本不仅可以实现驱动自动安装,还可以实现其他任意操作,特别是在驱动频繁更新的情况下,可以在脚本中重新编译和加载驱动模块。

ubuntu 支持很多种开机自启方式,在 ubuntu 16.04 版本下,我最常用到的是 initd 方式(18.04 后的版本已经不再支持了),简单介绍一下步骤:

  1. 编写一个脚本 xxx.sh,设置可执行权限
  2. 将脚本复制或链接到 /etc/init.d/ 目录下
  3. 使用 update-rc.d xxx.sh defaults 99 (99 可改成其他数值,表示脚本的启动优先级)

当然还有 /etc/rc.local 的方式,直接在该脚本中添加我们还要执行的操作即可。

如果是 Ubuntu 18.04 及以上的版本,就只能使用 systemd 的方式实现脚本开机自启,不再支持 initd。详情可以参考我之前写的一篇文章:Ubuntu 20.04 设置开机自启脚本

Ubuntu开机自动加载驱动模块相关推荐

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

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

  2. linux下开机自动加载驱动模块,linux驱动模块开机自动加载,以及应用程序开机自启动...

    这两个功能的实现都是通过设置启动脚本来实现的.启动脚本的一般存放路径是 /etc/init.d/rcS  (rcS即脚本文件),自启动应用程序一般放置于 /etc/rc.d/init.d 目录下. 我 ...

  3. Android 开机自动加载新wifi模块驱动

    在android ROM 开发中经常会遇到产品更换wifi模块的情况,一般常见的wifi驱动android内核中自带都有,无需过多调试,要是碰上内核中没有的就需要根据厂商提供的驱动进行移植. wifi ...

  4. Linux模块加载流程及如何让系统开机自动加载模块

    Linux模块加载 Linux系统加载哪些内核模块,和配置文件有关系. 模块保存在/lib/modules/下. 使用/etc/modules-load.d/来配置系统启动时加载哪些模块. 使用/et ...

  5. 计算机管理中没有vhd,电脑重启后新建的VHD虚拟硬盘不见了怎么办|如何设置使VHD硬盘开机自动加载...

    ‍ 我们可以通过系统自带的磁盘功能创建VHD虚拟硬盘,但是有用户发现电脑在重启之后,资源管理器中的VHD虚拟硬盘就不见了.对于这种现象,应该是电脑系统在开机后没有自动加载VHD硬盘的原因.那么,如何使 ...

  6. linux modprobe自动加载,modprobe 开机自动加载模块的方法 亲测成功

    再次鄙视那些凭空臆测就发表技术文章和那些不分好坏疯狂采集的人.浪费大家的时间,你们罪当诛杀! 添加开机自动加载模块,在各大搜索引擎发现很多误导的技术文章,浪费我的时间,气死了. 下面是本人测试成功的. ...

  7. linux 自启动iptable_保存iptable规则并开机自动加载

    iptables-save 利用iptables-save命令可以将iptable规则保存到一个持久化存储的目录中,不同的系统保存的目录也有所不同(IPv4): Debian/Ubuntu: ipta ...

  8. ubuntu:自动加载第三方设备驱动

    背景 有时,我们需要让Ubuntu系统加载第三方的内核模块,但是重新编译内核显然太繁琐,因此可以使用某些手段来手动加载或者自动加载这些模块. 本文介绍几种方法,用来设置开机加载这些模块. 方法一 该方 ...

  9. Linux系统开机自动加载驱动module

    Linux系统的驱动默认存放目录为: /lib/modules/$(uname -r)/kernel/drivers,因此如果希望系统可以启动时自动加载驱动必须首先把驱动放到该目录下面,执行完此步操作 ...

最新文章

  1. 谷歌出现新冠肺炎确诊病例,限制员工出行;比尔·盖茨:可能成百年不遇的大流行病...
  2. 单例设计模式八种方式——5) 懒汉式(线程安全,同步代码块) 6) 双重检查 7) 静态内部类 8) 枚举
  3. 在Android上使用Socket
  4. JavaParser中AST节点的观察者
  5. linux这样去掉文件里高亮字体
  6. IFIX 6.0 安全登录
  7. docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群
  8. 矩阵分析 第二章 lambda矩阵和Jordan标准型
  9. 秘笈——掌控时间管理的工具
  10. 网络相关知识汇总链接
  11. springboot问题记录
  12. crontab 日志_linux计划任务-单次任务(at)与循环任务(crontab)
  13. 加拿大签证材料(一家三口)
  14. URLRewrite,地址重写.
  15. 微信小程序如何分享到朋友圈
  16. 小米选择了总是打开方式_小米手机,不小心设置成了总是此应用打开,怎样取消...
  17. DotNetTextBox V3.0 所见即所得编辑器控件Ver3.2.8 Free(免费版)
  18. 时间戳 转换24小时制
  19. Qt 学习之路:QML 基本元素
  20. 视频教程-【无废话课程】Maya软件初级教学UV拆分基础入门【字幕版】-Maya

热门文章

  1. Pytorch学习笔记——LeNet模型
  2. 使用logisim搭建单周期CPU与添加指令
  3. 《趣谈网络协议》学习笔记 DAY06
  4. H3C 防火墙混合实验 新华三杯拆解
  5. 蓝桥杯练习系统-基础练习34道题解答答案全汇总(c/c++)
  6. 2017北京世界食品博览会会刊(参展商名录)
  7. 长沙尚学堂python培训学校
  8. 小程序 --- 实现多选功能
  9. 如何在Windows中启用“立体声混音”并从PC录制音频
  10. 杰理之做蓝牙发射时,将立体声修改成单声道差分输出时,接收端出现卡音【篇】