0%

systemd-udev调试

systemd-udevd是一个用户空间守护进程,它是 Systemd 管理器的一部分,用于处理设备管理和设备事件。它主要负责设备的插拔事件、设备文件的创建和管理、设备属性的识别等工作。我们在编写一个udev规则结束后,如何进行调试。

简介

  • 设备管理。systemd-udevd 实时监视系统中的设备事件,如设备的插入、移除等。它负责对这些事件进行检测和处理,确保设备状态的正确性。
  • 设备文件管理。当新设备插入系统时,systemd-udevd 负责创建设备在 /dev/ 目录下的设备文件。这些设备文件通常是在 /dev 目录中以符号链接的形式存在,帮助用户空间程序访问设备。
  • 设备属性识别。systemd-udevd 还负责识别设备的属性信息,如设备名称、驱动程序、设备类型等,并将这些信息注入到 sysfs 和 udev 数据库中。这些属性信息可以被用户空间程序查询和使用
  • 规则和事件处理。通过规则文件,systemd-udevd 可以根据特定的规则对设备事件作出响应,执行一系列动作。这种机制使得用户可以根据不同的设备事件制定相应的处理逻辑,以实现定制化的设备管理和操作。
  • 基于 netlink 的通信。systemd-udevd 通过 netlink 接口与内核进行通信,接收设备事件信息,并向内核发送命令来执行一些设备管理操作。
  • 系统初始化。在系统引导时,systemd-udevd 负责初始化设备规则、设备属性等,并启动监视设备事件的过程。

调整systemd-udevd服务的日志级别

1
2
3
4
5
# 打开debug级别日志
udevadm control --log-priority=debug

# 调试结束之后恢复info级别日志
udevadm control --log-priority=info

监控udev事件

1
2
3
4
5
# 监控udev事件
udevadm monitor

# 输出详细的信息
udevadm monitor -p

reference

[1] https://www.freedesktop.org/software/systemd/man/latest/systemd-udevd.service.html

[2] https://www.jinbuguo.com/systemd/systemd-udevd.service.html

[3] https://unix.stackexchange.com/questions/200194/how-to-debug-an-udev-rule-in-etc-udev-rules-d

小主,路过打个赏再走呗~