插入USB驱动器后会怎样?


21

USB事件从内核空间到用户空间的流程是什么?当我插入USB驱动器时,在桌面上会弹出一个窗口-从检测到新的USB驱动器到安装并显示该弹出窗口会导致什么事件顺序?

Answers:


6

这是由udev现代Linux系统处理的。在udev开始与系统守护进程会在搜索/etc/udev/rules.d/lib/udev/rules.d并运行内核事件的匹配规则。插入USB驱动器将触发一个事件,udev将搜索匹配的规则并将其执行。

规则本身将确定系统的功能。近年来,udev已与HAL通信,后者将通过DBUS提醒应用程序。现在,此方法已过时,不再支持统一的udev解决方案,我认为它将涉及udevd通过dbus直接通信或通过dbus-send进行通信

您可以监视udevvia 的活动udevadm monitor


2

我对此还没有完全确定的信心,因此请多加盐和更多研究。

它从内核热插拔子系统开始。设置设备后,它要么调用设置的任何用户空间程序来处理热插拔事件(如果由设置echo hotplug_handler > /proc/sys/kernel/hotplug),要么通过kobject_uevent netlink套接字发送数据包。当内核启动热插拔处理程序时,它会设置一些环境变量。当内核发送数据包时,它包括键=值对。如果需要,可以设置一个脚本,该脚本仅记录环境并将其设置为处理程序(当然,不在生产系统上-测试设置)。

通常,将udev设置为处理程序,并将设置一些有关如何处理事件的规则。从那里,它可以启动其他做其他事情的程序(例如发出dbus消息)。这些udev规则高度依赖于特定的利益分配。

有人试图编写一些文档时,该线程中有很多信息-请注意,第一个消息不准确;继续阅读。


2
曾几何时,这是准确的,但现在已经很久了:Modern udev在netlink套接字上监听事件。(旧方法存在序列化/并发问题。)
短暂的

由于我是Linux的这一部分(udevhotplug)的新手,所以我想对您在此处介绍的每一行都有所了解。所以请您详细说明一下内核热插拔子系统
森,

@ephemient:感谢您的答复。您能否解释一下事件的发生顺序。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.