udev/uevent 如何工作?

pri*_*ntf 14 kernel udev devices

所以我只是想知道我对 udev 的解释及其工作原理是否正确,我的理解是否正确,请告诉我。

所以我对udev的理解是它是Linux 上的动态设备管理器,作为守护进程运行

  • 设备发生更改时,例如设备插入内核时,udev 会向 udev发送 uevent ,然后 udev 可以转到 sysfs 查找设备的详细信息,例如供应商、设备名称和型号等。
  • 一旦获得设备的详细信息, Udev 就会将这些属性与特定类型设备的规则集进行匹配,在本例中,该设备可能是 USB 设备。如果存在“为所有 USB 设备创建符号链接”之类的规则,那么 udev 将执行此操作。udev 检查规则并匹配属性以验证设备,然后可以开始向设备添加更改以及执行规则对设备规定的任何操作。

这基本上是我目前的理解,如果我错了,请纠正我,并告诉我额外的信息。

int*_*ika 18

UDEV

Udev 代表“用户空间 /dev”,它是 Linux 内核的设备管理器。它是systemd(一个用于引导用户空间和管理用户进程的init系统)的一部分。

最初udev是独立于 systemd 的,它在 2012 年与 systemd合并,这导致在没有 systemd 的情况下运行发行版时出现一些复杂情况,就像这里针对 gentoo发行版所解释的那样。

该应用程序(udev)旨在替换devfsdhotplug,udev 主要管理目录中的设备节点/dev。同时,udev 还处理当硬件设备添加到系统或从系统中删除时引发的所有用户空间事件,包括某些设备所需的固件加载(通过内核模块)。具体来说,udev 作为 systemd 服务(systemd-udevd.service)运行来实现其任务,它监听内核uevent。对于每个事件,systemd-udevd 都会执行udev 规则(/etc/udev/rules.d/) 中指定的匹配指令,有关规则编写的详细信息可以在本文中找到。

在 Linux 内核级别,所需的设备信息由 sysfs 文件系统导出。对于内核检测到并初始化的每个设备,都会创建一个具有设备名称的目录。它包含具有设备特定属性的属性文件。每次添加或删除设备时,内核都会发送一个 uevent 来通知 udev 有关更改。

udev 守护进程(服务)的行为可以使用udev.conf(5) (/etc/udev/udev.conf)、其命令行选项、环境变量以及在内核命令行上进行配置,或者使用udevadm动态更改控制。

udev整体上分为三个部分:

  • 允许访问设备信息的 libudev 库。
  • 管理虚拟 /dev 的用户空间守护进程 (sytemd) udevd。
  • 用于诊断的管理命令行实用程序 udevadm。

Udev本身分为这三个部分,但它完全依赖于内核设备管理和它的uevents调用,系统通过netlink套接字从内核获取调用。早期版本使用热插拔,为此在 /etc/hotplug.d/default 中添加了一个指向自身的链接。

请注意,其他应用程序/守护程序可能会通过libudevgudev或直接使用GUdevClient从内核监听 uevents 调用

有关 udev 的更多信息,请参阅此答案的来源: debian wikiarch linux wikiopensource.comthe geek diaryfreedesktop.orgwikipediapks.mpg.de和其他链接站点。

这里解释了udev操作层的详细信息,并用下图进行了说明:

在此输入图像描述