我知道有一个问题有类似的问题,像这个,但是其中的解决方案对于我的情况来说不够具体。
我知道有一种方法可以使用startx
andxinit
启动X logind
,但我想这样做:
对于上下文:我正在使用 OpenSUSE Tumbleweed 和 Systemd
我正在尝试使用自定义用户目标和用户服务在从特定 tty 登录时启动一堆程序,其中一个服务是 X 服务器。目前,我有以下服务文件位于~/.config/systemd/user/Xserver.service
,这意味着在 vt7 上启动一个空的 Xorg 服务器:
[Unit]
Description=Starts the X server
After=default.target
[Service]
Type=simple
ExecStart=/usr/bin/X vt07 :0
NoNewPrivileges=false
[Install]
# Irrelevant as of time being, just some custom targets I plan on isolating later.
然而,当尝试启动此服务时,( systemctl --user start Xserver.service
) 失败,退出代码为 1,在阅读 Xorg 日志时,我发现他们说“切换 VT 失败”。
我知道此时 X 应该以 root 权限运行(由于 setuid),并且已经连接到 /dev/tty7,那么这是怎么发生的呢?
我能做些什么来让它发挥作用?
PS:(systemd 动态分配 tty 背后的推理并不适用于此,因为在该服务启动时我已经登录到 tty)