一、相关概念

  1. 驱动概念
  • 驱动与底层硬件直接打交道,充当了硬件与应用软件中间的桥梁。
  • 将驱动程序载入内核,应用程序可以通过系统调用接口来访问(驱动)底层的硬件设备。
  1. 驱动功能
  • 对设备初始化和释放
  • 把数据从内核传送到硬件和从硬件读取数据
  • 读取应用程序传送给设备文件的数据和回送应用程序请求的数据
  • 检测和处理设备出现的错误
  1. Linux 驱动有两种运行方式
  • 将驱动编译进 Linux 内核中,当 Linux 内核启动的时就会自动运行驱动程序。
  • 将驱动编译成模块(Linux 下模块扩展名为.ko),在Linux 内核启动以后使用相应命令加载驱动模块。

    内核模块是Linux内核向外部提供的一个插口

    内核模块是具有独立功能的程序,他可以被单独编译,但不能单独运行。他在运行时被链接到内核作为内核的一部分在内核空间运行

    内核模块便于驱动、文件系统等的二次开发

二、管理命令

实际使用中,我们一般使用模块化的方式为系统动态装载一些驱动,以下是一些模块化驱动的管理命令。

  1. 驱动的位置

/lib/modules/kernel_release

# ls -l /lib/modules/3.10.0-1160.el7.x86_64/
总用量 3300
lrwxrwxrwx. 1 root root 39 9月 6 16:10 build -> /usr/src/kernels/3.10.0-1160.el7.x86_64
drwxr-xr-x. 2 root root 6 10月 20 2020 extra
drwxr-xr-x. 12 root root 128 9月 6 16:10 kernel
-rw-r--r--. 1 root root 860326 9月 6 16:12 modules.alias
-rw-r--r--. 1 root root 819744 9月 6 16:12 modules.alias.bin
-rw-r--r--. 1 root root 1333 10月 20 2020 modules.block
-rw-r--r--. 1 root root 7391 10月 20 2020 modules.builtin
-rw-r--r--. 1 root root 9440 9月 6 16:12 modules.builtin.bin
-rw-r--r--. 1 root root 273209 9月 6 16:12 modules.dep
-rw-r--r--. 1 root root 382108 9月 6 16:12 modules.dep.bin
-rw-r--r--. 1 root root 361 9月 6 16:12 modules.devname
-rw-r--r--. 1 root root 140 10月 20 2020 modules.drm
-rw-r--r--. 1 root root 69 10月 20 2020 modules.modesetting
-rw-r--r--. 1 root root 1810 10月 20 2020 modules.networking
-rw-r--r--. 1 root root 97935 10月 20 2020 modules.order
-rw-r--r--. 1 root root 569 9月 6 16:12 modules.softdep
-rw-r--r--. 1 root root 397513 9月 6 16:12 modules.symbols
-rw-r--r--. 1 root root 486211 9月 6 16:12 modules.symbols.bin
lrwxrwxrwx. 1 root root 5 9月 6 16:10 source -> build
drwxr-xr-x. 2 root root 6 10月 20 2020 updates
drwxr-xr-x. 2 root root 95 9月 6 16:10 vdso
drwxr-xr-x. 2 root root 6 10月 20 2020 weak-updates
# lsmod                   //显示当前加载了的驱动,不光有硬件驱动,还有功能驱动
# modinfo 驱动名 //显示模块信息
# modprobe module name //加载驱动
# modprobe-r module name //卸载驱动
# insmod drv.ko //加载drv驱动
# modprob drv //加载drv驱动

insmod一次只能加载特定的一个设备驱动,且需要驱动的具体地址。

modprobe则可以一次将有依赖关系的驱动全部加载到内核。不加驱动的具体地址,但需要在安装文件系统时是按照make modues_install的方式安装驱动模块的。驱动被安装在/lib/modules/$(uname -r)/...下。

modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。

Linux之驱动管理的更多相关文章

  1. Linux设备驱动那些事

    目的 初步了解 linux 设备驱动框架模型 初步了解设备驱动模型有哪些元素 设备驱动模型元素的说明及解释 设备驱动模型元素的工作原理 设备驱动模型的小例子 对整体有个粗略的了解,设备驱动类型种类太多 ...

  2. linux设备驱动归纳总结(七):1.时间管理与内核延时【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-100005.html linux设备驱动归纳总结(七):1.时间管理与内核延时 xxxxxxxxxxx ...

  3. linux设备驱动归纳总结(四):1.进程管理的相关概念【转】

    本文转载自;http://blog.chinaunix.net/uid-25014876-id-64866.html linux设备驱动归纳总结(四):1.进程管理的相关概念 xxxxxxxxxxxx ...

  4. 【Linux开发】linux设备驱动归纳总结(七):1.时间管理与内核延时

    linux设备驱动归纳总结(七):1.时间管理与内核延时 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

  5. 【Linux开发】linux设备驱动归纳总结(四):1.进程管理的相关概念

    linux设备驱动归纳总结(四):1.进程管理的相关概念 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

  6. 浅谈Android系统移植、Linux设备驱动

    一.Android系统架构 第一层:Linux内核 包括驱动程序,管理内存.进程.电源等资源的程序 第二层:C/C++代码库 包括Linux的.so文件以及嵌入到APK程序中的NDK代码 第三层:An ...

  7. Linux设备驱动模型之I2C总线

    一.I2C子系统总体架构 1.三大组成部分 (1)I2C核心(i2c-core):I2C核心提供了I2C总线驱动(适配器)和设备驱动的注册.注销方法,提供了与具体硬件无关的I2C读写函数. (2)I2 ...

  8. linux设备驱动概述,王明学learn

    linux设备驱动学习-1 本章节主要学习有操作系统的设备驱动和无操作系统设备驱动的区别,以及对操作系统和设备驱动关系的认识. 一.设备驱动的作用 对设备驱动最通俗的解释就是“驱使硬件设备行动” .设 ...

  9. Smart210学习记录------linux串口驱动

    转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=27025492&id=327609 一.核心数据结构 串口驱动有 ...

  10. linux设备驱动归纳总结(九):1.platform总线的设备和驱动【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-111745.html linux设备驱动归纳总结(九):1.platform总线的设备和驱动 xxxx ...

随机推荐

  1. 【Azure 应用服务】App Server 部署后,Docker报错,找不到8080端口

    问题描述 App Service for Container.  Docker Image 推送到ACR(向 Azure 容器注册表), 配置App Service并部署成功了.查看Docker日志( ...

  2. TR069-STUN

    原理 1.NAT穿越技术,为了解决NAT设备对P2P网络的通信限制   2.作用:检测网络中是否存在NAT设备,并获取两个通信端点经NAT设备分配的IP地址和端口号,然后建立一条可穿越NAT的P2P链 ...

  3. 创建 nest-websocket 服务 用于mock单点登录开发

    需求 有个单点登录的任务,但是都是现场的服务 api 和 websocket 都在现在 开发本机mock服务 本地搭建环境先模拟一下 资料 NestJS WebSocket 开始使用 https:// ...

  4. coast 海岸 单词记忆方法

    coast 海岸 单词记忆方法 coa 扣 想象一个碗扣下去 st站 碗的边和地面的接触面 就是海岸的边 coast 逼近的地方-海岸 coast (n.) - "margin of the ...

  5. InputNumber 不能输入点 viewDesign 需求是 只能是整数

    <InputNumber ref="xxxRef" v-model="xxx" :disabled="xxx" style=" ...

  6. 芯片公司Dialog产品调研简报

    一 公司简介: Dialog半导体有限公司的总部位于伦敦,设有一个全球销售.研发和营销部.2013年,公司实现了9.10亿美元的营业收入,是欧洲增长速度最快的公共半导体公司之一.   二 芯片型号: ...

  7. MySql注入—DNS注入

    MySql注入-DNS注入 1.DNS注入原理 一.DNS注入原理 DNS注入,是通过查询相应DNS解析产生的记录日志来获取想要的数据 对于sql盲注这样的方法常常用到二分法,非常麻烦而且没有回显,要 ...

  8. php处理序列化jQuery serializeArray数据

    介绍jquery的几个常用处理表单的函数: 1.序列化表单内容元素为字符串,常用于ajax提交. $("form").serialize() 2. serializeArray() ...

  9. DWR之入门实例(一)

    DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给 ...

  10. 大端(big endian) 小端(little endian) --- 在多字节存储 和 多字节通信中的含义(我还是太年轻了)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...