![登录后xdm重新启动](https://linux22.com/image/7903/%E7%99%BB%E5%BD%95%E5%90%8Exdm%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8.png)
我在笔记本电脑上运行 Debian Jessie,没有桌面环境。 (只是作为窗口管理器的awesomeWM)
我过去玩过xdm,但当时我决定不喜欢它。现在,当我安装它时,xdm 在登录后立即重新启动。 tail /var/log/xdm.log 的输出:
➜ ~ tail /var/log/xdm.log
(==) Log file: "/var/log/Xorg.0.log", Time: Mon May 30 17:44:11 2016
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
Mon May 30 17:44:13 2016 xdm info (pid 6734): sourcing /etc/X11/xdm/Xsetup
Mon May 30 17:44:14 2016 xdm info (pid 6734): sourcing /etc/X11/xdm/Xstartup
Mon May 30 17:44:14 2016 xdm info (pid 6746): executing session /etc/X11/xdm/Xsession
/etc/X11/xdm/Xsession: 17: /etc/X11/Xsession: fold: not found
Mon May 30 17:44:14 2016 xdm info (pid 6734): sourcing /etc/X11/xdm/Xreset
Mon May 30 17:44:14 2016 xdm info (pid 6720): Starting X server on :0
Mon May 30 17:44:16 2016 xdm info (pid 6758): sourcing /etc/X11/xdm/Xsetup
(II) AIGLX: Suspending AIGLX clients for VT switch
我尝试创建一个测试用户并用它登录,结果相同,所以问题是系统范围的。 X11 仅在从虚拟控制台调用“startx”时起作用。
有什么建议如何解决这个问题吗?
答案1
我遇到了同样的问题,然后我发现默认的 XDM 尝试启动xsm
- 它没有安装在系统上。当我使用 user 登录时myuser
,错误出现在/home/myuser/.xsession-errors
所以你应该添加一个~/.xsession
到你正在登录的用户的主目录,添加下面一行的写入
exec FULLPATH_TO_YOUR_WM
例如:
exec /usr/local/bin/i3
答案2
看起来您的 xdm 配置文件包含与您之前的实验相同的剩余内容,但现在无法运行。我建议清除 xdm 软件包(例如通过aptitude purge xdm
)并再次安装。
答案3
当您登录时,xdm 会运行/etc/X11/xdm/Xsession
。在该文件的第 17 行,有一个名为fold
无法执行的命令。当Xsession
脚本结束时,无论出于何种原因,xdm
都会认为会话已完成并重新显示登录屏幕。
该命令fold
引用的是/usr/bin/fold
,它是软件包的一部分coreutils
,是必不可少的系统软件包之一,确实不应该删除。它只是将文本换行到指定行长度的命令。
验证它/usr/bin/fold
仍然存在并且可用。如果这似乎不是问题,请复制/etc/X11/xdm/Xsession
,暂时用副本替换原始文件,然后添加
PATH=/usr/bin:/bin:$PATH
作为脚本的第一个非注释行。如果这会产生影响,那么您的 X 会话默认 PATH 设置可能有问题。Xsession
测试后将修改后的脚本替换为原来的脚本。
如果我没记错的话,xdm
最初设置一个非常基本的 PATH,/etc/profile
当启动 shell 执行/etc/X11/xdm/Xsession
.如果您对非交互式 shell 会话的路径进行了自定义/etc/profile
或影响了您的个人设置,则它们可能会给您带来困难。~/.profile
答案4
我想我去年在 NetBSD 上使用 xdm 时也遇到了同样的问题。
无法启动会话,始终返回 xdm。
我在 man xdm 上找到了什么
DisplayManager.DISPLAY.authName
authorize is a boolean resource which controls whether xdm gen-
erates and uses authorization for the local server connections.
If authorization is used, authName is a list of authorization
mechanisms to use, separated by white space. XDMCP connections
dynamically specify which authorization mechanisms are sup-
ported, so authName is ignored in this case. When authorize is
set for a display and authorization is not available, the user
is informed by having a different message displayed in the login
widget. By default, authorize is ``true,'' authName is ``MIT-
MAGIC-COOKIE-1,'' or, if XDM-AUTHORIZATION-1 is available,
``XDM-AUTHORIZATION-1 MIT-MAGIC-COOKIE-1.''
所以,我在 xdm-config 中添加这一行
DisplayManager.*.authName: MIT-MAGIC-COOKIE-1
然后问题就消失了。