在正常运行几天后重新启动笔记本电脑(所以我不知道是什么引发了这个问题),我发现我无法从 lightdm 登录。我的密码被接受了,字段也消失了,但我只能看到 lightdm 壁纸和我的(可移动)光标。然而我可以
- 以访客身份登录
- 从 tty startx
如果我从 kdm 尝试,也会发生同样的事情。
如果我尝试启动 project-neon,则桌面进度条会出现,但是加载完成后我会回到 lightdm 壁纸,同时会出现输入密钥环密码的提示,输入密码后,桌面会短暂闪烁。
.xsession 说 dbus 预启动过程以状态 2 终止。我不知道这是否相关。
编辑:我可以毫无问题地启动 lxde。我尝试过 plasma-active,我遇到的症状与 project-neon 相同,所以显然这是 kde/plasma 问题。但由于从 startx 启动有效,问题似乎出在 lightdm/kdm-kde 交互上。有没有办法跟踪 lightdm 如何启动 kde(kwin、plasma)?
问题也不在于登录,图形会话出现who
并dm-tool list-seats
显示Session0
我的用户名。
编辑:我尝试了其他一些方法。我提到了 project-neon 中的密码提示。如果我让它静置一会儿,桌面最终会出现并正常工作。
我也尝试过将调试输出添加到startkde
和startactive
。 中的可以startactive
工作,但 中的不行startkde
(从 lightdm 或 kdm 启动时,但从 可以工作xinit /usr/bin/startkde
),所以 lightdm 甚至可能无法启动startkde
,尽管根据 它可以启动lightdm.log
。
答案1
总结存在权限问题~/.cache/upstart/dbus-session
,rm -rf .cache/upstart
重新启动即可解决。
为未来的读者(可能也包括我)提供新手调试见解。
~/.xsession
我在问题中提到的信息大致是
init: dbus pre-start process (PID XXXX) terminated with status 2
实际上是非常很重要。我在调查时了解到了它的含义,我发现了它
- 首先,我以为问题出在 kde 上,所以我尝试查找 lightdm 如何启动 kde
- 我尝试查看
/etc/lightdm/
(按照建议man lightdm
),但lightdm
配置文件不在这里,但(我通过查看找到它/var/log/lightdm.log
)在/usr/share/lightdm/lightdm.conf.d
其中我找到了相关文件/usr/share/lightdm/lightdm.conf.d/40-kde-plasma.conf
- 根据它,lightdm 为 kde 启动的是脚本
/usr/bin/startkde
,所以我echo 'startkde is at line ##' > /home/evpok/delog
向它添加了一些调试行以查看它在哪里失败了,但它们都没有执行。 - 再次检查时,
/var/log/lightdm.log
我看到了这一行,
Running command /usr/sbin/lightdm-session /usr/bin/startkde
于是我查看了一下usr/sbin/lightdm-session
,并再次添加了调试echo
行 - 摸索了一阵子后,我发现问题出在加载 Xsession 脚本上:
/etc/X11/Xsession.d/99x11-common_start
。所以我查看了那个脚本。它似乎加载正常,只有一行exec $STARTUP
。添加一个echo
来查看里面的内容,$STARTUP
我发现是init --user
。现在我不想弄乱它,init
所以我只是通过注释掉这一行并添加来跟踪它的输出
exec init -v --user > /home/evpok/initlog 2> /home/evpok/initerrlog
查看这些日志时,我看到了此消息
initerrlog
dbus pre-start process (PID XXXX) terminated with status 2
但我仍然不知道该怎么做,所以我查看了一下,initlog
发现
Loading configuration from /usr/share/upstart/sessions
- 我查看了该目录,在那里我看到了
startkde.conf
。在查看了 upstart 作业配置文档后,我发现它
start on started dbus and xsession SESSION=kde-plasma
显然是没有启动的原因startkde
。它需要 dbus,但出现了错误,所以我查看了dbus.conf
- 那里有一个
pre-start script
节,嘿!这就是 init 的错误日志中的内容,并且在 中.xsession-errors
。因此,我再次添加了一些回声,发现问题出在行
echo "DBUS_SESSION_BUS_ADDRESS=${DBUS_SESSION_BUS_ADDRESS}" >$HOME/.cache/upstart/dbus-session
(不是我的调试回声之一) ~/.cache/upstart/debus-session
摸索了一阵子后,我发现由于权限问题,我无法触碰这个不存在的文件。我尝试在下面创建它sudo
,并用适当的权限将其 chown 给我,但没有成功。所以我只是rm -rf
'ed.cache/upstart
。- 重启后,一切都按预期运行。
毕竟,我只需要不再害怕内部事物并不再弄脏我的手。
答案2
从 Ubuntu 13.10 升级到 Ubuntu 14.04 后,我遇到了同样的问题。我在 .xsession-errors 文件中的最后一行也显示:
init: dbus pre-start process (PID XXXX) terminated with status 2
问题也出在.cache/upstart
目录中。它有权限drw-------
- 所以我甚至无法进入它。我刚刚添加了一个执行位,重新启动了 X,现在它就可以正常工作了。