将可移动设备连入系统时,系统的后台中会依次发生如下事件:
1、 内核检测到新硬件插入,然后分别通知hotplug和udev。前者用来装入相应的内核模块(如usb-storage),而后者用来在/dev中创建相应的设备节点(如/dev/sda1)。

2、 udev创建了相应的设备节点之后,会将这一消息通知hal的守护程序(hald)。当然udev还得保证新创建的设备节点可以被普通用户访问。

3、 hotplug装入了相应的内核模块之后,会把这一消息通知给hald。

4、 hald在受到hotplug和udev发出的消息之后,认为新硬件已经正式被系统认可了。此时它会通过一系列精心编写的规则文件(就是传说中的xxx-policy.fdi),把发现新硬件的消息通过dbus发送出去,同时还会调用update-fstab或fstab-sync来更新/etc/fstab,为相应的设备节点创建适合的挂载点。

hotplug 包和内核里的hotplug模块不是一回事,2.6内核里的pci_hotplug.ko是一个内核模块,而hotplug包是用来处理内核产生的hotplug事件。这个软件包还在引导时检测现存的硬件并在运行的内核中加载相关模块。
不但有热插拔,还有冷插拔(cold pluging)。热插拔在内核启动之后发生,而“cold pluging”发生在内核启动的过程中。
/etc/hotplug/.rc 这些脚本用于冷插拔(检测和激活在系统启动时已经存在的硬件)。它们被hotplug 初始化脚本调用。.rc 脚本会尝试恢复系统引导时丢失的热插拔事件,举例来说,内核没有挂载根文件系统。
/etc/hotplug/*.agent这些脚本将被 hotplug调用以响应内核产生的各种不同的热插拔事件,导致插入相应的内核模块和调用用户预定义的脚本。
/sbin/hotplug内核默认情况下将在内核态的某些事情发生变化时(如硬件的插入和拔出)调用此脚本。
发送热插拔事件的子系统(subsystem)包括总线驱动(USB、PCI等)和一些设备的抽象层(网络接口、磁盘分区等)。它们通过/sbin/hotplug的第一个参数来识别。
对于设备驱动来说,需要在代码里设置MODULE_DEVICE_TABLE,指向驱动程序感兴趣的设备的设备ID列表。

参考链接:
http://blog.chinaunix.net/uid-7374279-id-5677690.html

ACPI相关
https://blog.csdn.net/qq_21186033/article/details/116975453?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-3.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-3.pc_relevant_default&utm_relevant_index=6
内核PCI扫描过程
https://blog.csdn.net/weixin_30364147/article/details/96563236

Linux内核笔记之PCIe hotplug介绍及代码分析
https://blog.csdn.net/yhb1047818384/article/details/99705972?spm=1001.2014.3001.5502

Linux热插拔hotplug处理流程相关推荐

  1. Linux | PCIe Hotplug | 概念及工作原理的不完全总结

    本文对 PCIe 热插拔的概念及工作原理进行不完全总结. 更新: 2022 / 12 / 31 Linux | PCIe Hotplug | 概念及工作原理的不完全总结 热插拔 组成部件 实现代码 通 ...

  2. linux驱动加载流程分析

    linux驱动加载流程分析 内核是如何加载驱动的,有些是编译到内核里面,有些事编译成ko,让系统自动加载.总的说来,在Linux下可以通过两种方式加载驱动程序:静态加载和动态加载. 静态加载就是把驱动 ...

  3. Linux下服务器端开发流程及相关工具介绍(C++)

    原文:Linux下服务器端开发流程及相关工具介绍(C++) 去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把 ...

  4. linux驱动程序是什么,简述一个Linux驱动程序的主要流程与功能

    1. 简述一个Linux驱动程序的主要流程与功能. 2. 请列举一个软件中时间换空间或者空间换时间的例子. void swap(int a,int b) { int c; c=a;a=b;b=a; } ...

  5. Linux基本管理七大流程

    Linux基本管理七大流程 环境:centos7.6系统,IP为192.168.11.11,具体操作环境依实际环境为准 1.通过rc.local脚本文件实现光盘的自动挂载,关闭selinux和防火墙功 ...

  6. Linux系统管理-开机启动流程

    Linux系统管理-开机启动流程 文章目录 Linux系统管理-开机启动流程 CentoOS6的开机启动流程 CentOS6忘记root密码 Linux的关机指令 CentOS7的开机启动流程 Cen ...

  7. 嵌入式Linux系统环境搭建全流程-4412友善之臂开发板

    4412友善之臂开发板-Linux系统环境搭建全流程 ​ 没错,这篇确实值得一看!可能是由于我稍微会一点点哈,就有好多小伙伴就找我帮他们搭建环境,但Linux中的以及开发版连接,与烧写程序中的整个环境 ...

  8. Linux 系统注册系统服务流程

    Linux 系统注册系统服务流程 在/etc/systemd/system定义test.service文件(以定义启动nginx服务为例子) [Unit] Description=nginx serv ...

  9. 简单记录linux 宝塔建站流程

    linux宝塔建站流程 官网非常详细 https://www.bt.cn/bbs/thread-19376-1-1.html 1.官网选择系统版本 2.有服务器的 远程连接系统 3.获取su权限 su ...

最新文章

  1. WEB前端技术趋势图示-JS库
  2. FtpWebRequest.UsePassive属性:设置FTP工作模式
  3. python图形模块_使用Python图形模块:有没有办法将当前窗口保存为图像?
  4. java中关于length的真确理解~~~~有补充的请跟帖~~~
  5. 通用职责分配软件原则之5-控制器原则
  6. Nodejs开发框架Express3.0开发手记–从零开始
  7. 安卓学习笔记40:基于套接字网络编程
  8. 简单实现网络验证_电脑计算机编程入门教程自学
  9. 使用Java和eclipse进行XML文件解析20180812_韩信之
  10. 网站分析基础概念之初访者
  11. linux读usb蓝牙数据,嵌入式Linux下USB蓝牙设备驱动.pdf
  12. 用计算机怎么计算税率表,个税计算器2016年税率表公式
  13. Latex输入分段函数
  14. 手机信号上的G、E、O、3G、H、H+是什么意思?
  15. 什么是链接诱饵,链接诱饵建设思路与作用
  16. java无名粉_使用JAVA为“无名的粉”写一个类,具体要求如下
  17. ffmpeg解析视频并播放
  18. 深度学习理论——残差神经网络
  19. 系统重装流程--Pc机winxp版(草稿,不断完善中,0514更新)
  20. 文件不小心替换能恢复吗?当60%的人用了这个方法后……

热门文章

  1. itunes显示app store无法连接服务器,无法连接到iTunes Store的解决方案
  2. 55、nginx rewrite
  3. R语言入门(1)时间序列分析
  4. Java实现接口(打印机)
  5. 读书笔记-指数基金投资指南
  6. 美丽的日本与我(川端康成在诺贝尔文学奖颁奖典礼上的演讲词)
  7. 《C Primer Plus》第二章——C语言概述(程序示例与解释,提高程序可读性,函数的定义与使用,调试,关键字,复习题与编程练习)
  8. 如何将exe添加到windows本地服务
  9. re管理器修改音量_教你巧用RE管理器修改手机各种系统声音锁屏声音
  10. Linux笔记(70)——文件描述符之ulimit命令