有没有办法针对伪终端编写 UDEV 规则?

有没有办法针对伪终端编写 UDEV 规则?

我想创建一个 systemd 服务单元文件,该文件具有对另一个服务创建的伪终端的依赖性Requires=After=

本网站描述如何通过添加TAG+=systemd到 UDEV 规则来为真实设备执行此操作。因此,类似下面的操作将生成一个 systemd 设备单元文件,其他服务可以依赖该文件:

SUBSYSTEM=="tty", KERNEL=="ttyUSB0", PROGRAM="/etc/udev/usbtty.sh %k", SYMLINK+="ttyMyDev,OWNER="mydev", TAG+="systemd"

这将在/dev/ttyMyDevUSB TTY 设备上创建一个符号链接,并让 systemd 创建一个dev-ttyMyDev.device单元。

然而,为了模拟虚拟设备,我们有一个服务,它将创建一个伪终端,而不是使用posix_openpt(3) 接口。我希望这项服务还能够创建一个新的 UDEV 规则文件,/run/udev/rules.d然后让 systemd 能够创建一个dev-ttyMyVirtualDev.device单元文件。

但是,我不知道如何让 UDEV 识别该设备。例如,如果我运行以下socat命令,它将创建一个/dev/pts/4伪终端:

$ sudo socat -d -d PTY,waitslave,echo=0,raw TCP-LISTEN:11313,reuseaddr,fork
2022/10/11 12:33:18 socat[24833] N PTY is /dev/pts/4

但我无法用以下方式查询udevadm info

haz@haz-tower:/sys/devices/virtual/tty/ptmx$ udevadm info /dev/pts/4
Unknown device, --name=, --path=, or absolute path in /dev/ or /sys expected.

所以我不知道在KERNEL==UDEV 规则文件的字段中应该放什么。

UDEV 是否没有能力触发伪终端的创建?

相关内容