一般来说,让 systemd 服务等待设备

Joh*_*ren 10 xorg ubuntu systemd

目前,我使用以下配置来确保我的显示管理器等待 DRM 驱动程序加载后启动(否则 X.org 无法启动):

udev规则:

ACTION=="add", SUBSYSTEM=="drm", KERNEL=="card0", TAG+="systemd"
Run Code Online (Sandbox Code Playgroud)

系统服务覆盖:

[Unit]
Requires=sys-devices-pci0000:00-0000:00:01.0-0000:01:00.0-drm-card0.device
After=sys-devices-pci0000:00-0000:00:01.0-0000:01:00.0-drm-card0.device
Run Code Online (Sandbox Code Playgroud)

这样就完成了工作,但看起来很脆弱。

是否可以缩短Requires=After=行以一般性地引用 DRM 设备,而不使用完整的 PCI 路径?

我使用的是 Ubuntu 19.04。

编辑以满足重复的警察:

建议的重复询问如何在设备插入时自动启动 systemd 服务。这个问题是关于等待启动已经自动启动的服务,直到给定设备初始化。两个不同的问题。阅读它们。

use*_*686 12

是的,如果标记的设备在 /dev 中有关联的节点,您可以直接使用它:

Requires=dev-dri-card0.device
After=dev-dri-card0.device
Run Code Online (Sandbox Code Playgroud)

  • @RichardNeumann:您需要让 udev 相应地标记设备,以便 systemd 监视它们(类似于 OP 问题中的操作方式,但 ACTION 过滤器需要更新)。/dev/input 的包罗万象的规则是 `ACTION!="remove", SUBSYSTEM=="input", TAG+="systemd"`,类似于 `99-systemd.rules` 中的规则。 (2认同)