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

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

需要查看 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
...

并且每次都重建 initramfs:

update-initramfs -k all -u

重新启动后,文件中没有任何记录,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

有更容易的方法吗?

答案1

这对我使用 VirtualBox 中的 Ubuntu 18.04 很有效。

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

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

journalctl -u systemd-udevd

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

来源: -archlinux - Udev 调试输出

答案2

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

相关内容