当我尝试通过键入 i3 启动 X 时,startx /usr/bin/i3
收到以下错误消息:
(EE) xf86OpenConsole: Cannot open virtual console 7 (Permission denied)
以 root 身份启动或在 chowning /dev/tty7 后启动startx
可以解决该问题(预计输入不起作用,甚至无法切换终端),但我认为这不是正确的方法。
Sway 和 Weston 工作完美,为什么 X 不这样做呢?
答案1
startx
在我的系统(Fedora)上运行良好。然而,Gentoo Wiki 上的一个过时页面提到了另一种运行它的方法:
startx /usr/bin/i3 -- vt1
1
是您登录的“终端”的号码。如果您不在终端上1
,请相应地调整命令。
显然这修复了Permission denied
错误,并允许 X 启动。
我不明白为什么startx
需要明确传递它。我不明白 Gentoo 为何会做出与 Fedora 不同的事情。那好吧。至少它应该停止startx
/Xorg
停止尝试打开tty7
。这绝对不是现代的做事方式,而且也不适合你。
答案2
Cannot open virtual console (Permission denied)
也可能是由于 的权限问题引起的/dev/ttyX
。
例如在我的 openSUSE MicroOS 上登录之前:
$ ls -l /dev/tty1
crw--w---- 1 root tty /dev/tty1
但登录后:
$ ls -l /dev/tty1
c--xr-xr-T 1 $USER tty /dev/tty1
该login
实用程序正在更改 TTY 的所有者,以便您可以在其中键入内容。然而在这种情况下,它也改变了权限,不再允许读写!因此,startx
显示权限被拒绝错误,因为它无法在设备上写入。
解决方法
之前更改TTY的权限startx
。在我的.zprofile
:
# Auto-start Xorg when logging in on TTY1
check_tty() {
local temp=$(tty)
echo ${temp:5}
}
if [ $(check_tty) = "tty1" ]; then
chmod 1600 /dev/tty1 # Notice the permission change before startx
exec startx
fi
可能的原因
我找不到问题的确切原因。它可能systemd-logind
与我也有相同的所有权问题有关这份报告和这个当startx
失败时。
我还研究了 PAM 和 udev,但在实践中似乎没有什么可以改变/dev/tty
模式!1155