我使用 Blackbox 作为我的窗口管理器来运行 Debian,我使用命令从控制台以老式方式启动startx
。在 Debian 11 中,我遇到了一些 GUI 应用程序需要很长时间才能启动的问题。更换
exec blackbox
和
exec dbus-launch --exit-with-session blackbox
解决.xinitrc
了问题。今天我升级到 Debian 12(全新安装),但现在我再次遇到同样的问题,尽管使用了 dbus-launch。例如,Firefox 首次启动需要 25 秒。随后的启动时间不到五秒。我尝试通过strace
命令运行firefox来看看发生了什么:
$ strace firefox
以下是进程挂起一段时间之前的最后十行:
futex(0x7f060049ca18, FUTEX_WAKE_PRIVATE, 1) = 1
eventfd2(0, EFD_CLOEXEC|EFD_NONBLOCK) = 35
futex(0x7f0600500018, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x7f0600500018, FUTEX_WAIT_PRIVATE, 2, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x7f0600500018, FUTEX_WAKE_PRIVATE, 1) = 0
write(27, "\1\0\0\0\0\0\0\0", 8) = 8
clock_gettime(CLOCK_MONOTONIC, {tv_sec=6056, tv_nsec=849987069}) = 0
futex(0x7f060049ca18, FUTEX_WAKE_PRIVATE, 1) = 1
clock_gettime(CLOCK_MONOTONIC, {tv_sec=6056, tv_nsec=850085427}) = 0
poll([{fd=35, events=POLLIN}], 1, 25000
任何人都可以解释输出吗?可能是什么问题呢?
答案1
这个问题听起来就像我运行不同的窗口管理器(dwm)的问题,但从控制台终端以相同的方式启动。症状包括 Firefox 启动缓慢,大约需要 30 多秒才能启动。采用以下解决方案后,时间减少到大约 8 秒。
此问题在不同的计算机上通过两种方式解决。
首先,将以下行添加到 .xinitrc 中,然后重新启动 X:
dbus-update-activation-environment --systemd DBUS_SESSION_BUS_ADDRESS DISPLAY XAUTHORITY &
另一台计算机上的第二个解决方案遵循关于使用 .xsession 而不是 .xinitrc 的 debian 建议:https://wiki.debian.org/Xsession。当 .xsession 替换 .xinitrc 时,“dbus-update-activation-environment”命令是不必要的,并且不包含在 .xsession 文件中,因为它是从 /etc/X11/Xsession.d 运行的。否则,.xinitrc 的原始命令和选项将被复制到新的 .xsession 文件中,并且 .xinitrc 文件将被删除。