如何在启动过程中查看所有 udev 事件?

Vel*_*kan 6 udev systemd

需要查看udev事件来编写规则。

我试过设置udev_log="debug"/etc/udev/udev.conf.

我尝试编辑/usr/share/initramfs-tools/scripts/init-top/udev以设置log_level=debug在那里。还有--debug选项:

...
log_level=debug
SYSTEMD_LOG_LEVEL=$log_level /lib/systemd/systemd-udevd --daemon --debug --resolve-names=never 2>/dev/.udev.debug
...
Run Code Online (Sandbox Code Playgroud)

并每次都重建 initramfs:

update-initramfs -k all -u
Run Code Online (Sandbox Code Playgroud)

重新启动后,文件中不会记录任何内容,journalctl -u systemd-udevd也不显示事件。

我目前正在使用附加服务来查看事件:

[Unit]
Description=udev Monitoring
DefaultDependencies=no
Wants=systemd-udevd.service
After=systemd-udevd-control.socket systemd-udevd-kernel.socket
Before=sysinit.target systemd-udev-trigger.service

[Service]
Type=simple
ExecStart=/bin/sh -c "/sbin/udevadm monitor --udev --env > /dev/udev_monitor.log"

[Install]
WantedBy=sysinit.target
Run Code Online (Sandbox Code Playgroud)

有更容易的方法吗?

use*_*.dz 3

这对我在 VirtualBox 中使用 Ubuntu 18.04 有用。

  1. 在 Grub 菜单中,按E进行编辑。删除quiet splash即可以文本模式启动。
  2. 添加udev.log-priority=debug。然后Ctrl+X启动。

您可以在启动时或使用后看到 udev 消息:

journalctl -u systemd-udevd
Run Code Online (Sandbox Code Playgroud)

对于永久设置,您可以udev.log-priority=debug设置GRUB_CMDLINE_LINUX

来源: - archlinux - Udev 调试输出


小智 0

我刚刚遇到这个问题,在重定向 udevd 的 stderr 时,您还需要设置 SYSTEMD_LOG_TARGET=console 。我以为我要疯了!