登录后xdm重新启动

登录后xdm重新启动

我在笔记本电脑上运行 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

然后问题就消失了。

相关内容