systemd 单元文件不允许手动运行,因此必须有某种东西触发它。反向依赖项可以调用它,但它们又是如何启动的?通常它们之前不会启动startx
(或者至少不应该启动),因此必须有一个触发点。
我主要感兴趣的是它如何与 startx 协同工作,而不是与登录管理器协同工作。
关于具体工作原理的详细信息gnome-session.target
也很好,因为它是利用 的会话框架实现的最实际示例graphical-session.target
。gnome-session 二进制文件确实有一个--systemd
选项。也许它是起点触发器所在的位置。但如果知道二进制文件可以简单地绕过,那就太可悲了RefuseManualStart=yes
。那将非常……触发。
在 GNOME 会话的示例中,
gnome-session.target
需要graphical-session.target
。具体来说,在 中/usr/lib/systemd/user/gnome-session.target
:BindsTo=
类似于Requires=
。“在许多情况下,最好将 BindsTo= 与 After= 结合起来”。然而gnome-session.target
,无论出于何种原因,结果都是相反的。进一步搜索,我们发现
[email protected]
:man gnome-session
解释“gnome-session 可以将大部分会话管理交给 systemd”,并列出了各种 systemd 目标。gnome-session
使用 dbus 调用启动 systemd 单元StartUnit
,就像会做的那样。我认为它不需要(或做)任何不同的事情。我们可以在main.csystemctl start
中确认手动启动。[email protected]