Linux 设备单元在 systemctl daemon-reload 后处于非活动状态(死亡)

Linux 设备单元在 systemctl daemon-reload 后处于非活动状态(死亡)

我使用了这篇文章中 galets 提出的解决方案来添加我自己的 udev 规则: 如何在启动服务之前等待 /dev/video0

当 Linux 启动时,我的设备会被检测到,并且规则会创建一个sys-bus-pci-drivers-mydevice.device单元。我创建了一个包含BindsTo=sys-bus-pci-drivers-mydevice.device和 的服务Requires=sys-bus-pci-drivers-mydevice.device,并且该服务仅在检测到我的硬件并加载其驱动程序后才加载。完美的!

我的问题是,每当我执行任何 systemctl 命令来管理任何服务时,我的设备单元都会进入非活动(死亡)状态。例如:

systemctl daemon-reload
systemctl unmask whatever.service

一旦执行其中任何一个,如果我执行systemctl status sys-bus-pci-drivers-mydevice.device,它会报告:

*  sys-bus-pci-drivers-mydevice.device
   Loaded: loaded
   Active: inactive (dead)

Jan 25 09:25:41 FLABADO systemd[1]: Found device /sys/bus/pci/drivers/mydevice.

此时,如果我尝试重新启动任何包含Requires=依赖项的服务,它们就会失败。我必须重新启动系统才能恢复。

我确认该设备仍然存在,其驱动程序处于活动状态,并且我执行的使用硬件的命令均能完美运行。

我想知道是否有人遇到过这种行为,如果是的话,有没有办法避免或恢复,而无需重新启动?

我正在使用 Yocto 2.1 (Krogoth) 来构建我的 Linux 发行版。内核版本为 4.4.26-yocto-standard。

相关内容