插入 USB 驱动器后会发生什么?

插入 USB 驱动器后会发生什么?

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

答案1

udev这是现代 Linux 系统上传递的。随系统启动的守护进程udev将搜索/etc/udev/rules.d/lib/udev/rules.d运行内核事件的匹配规则。插入 USB 驱动器将触发事件,udev将搜索匹配的规则并执行它。

规则本身将决定您的系统的功能。近年来,udev已与 HAL 进行通信,HAL 将通过 DBUS 向应用程序发出警报。这种方法现在已经过时,有利于统一的udev解决方案,我认为这将涉及udevd通过dbus直接或通过dbus 发送

udev您可以监控via的活动udevadm monitor

答案2

我对此还不是完全有信心,所以要持保留态度并进行更多研究。

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

通常,udev 被设置为处理程序,并且它会设置一些关于如何处理事件的规则。从那里,它可以启动其他程序来执行其他操作(例如发出 dbus 消息)。这些 udev 规则高度依赖于特定的兴趣分布。

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

相关内容