我使用 Blackbox 作为我的窗口管理器运行 Debian,我使用命令从控制台开始旧学校的方式startx
。在 Debian 11 中,我遇到了一些 GUI 应用程序需要很长时间才能启动的问题。更换
exec blackbox
和
exec dbus-launch --exit-with-session blackbox
在.xinitrc
解决了问题。今天我升级到 Debian 12(全新安装)但现在我又遇到了同样的问题,尽管使用了 dbus-launch。例如,Firefox 第一次启动需要 25 秒。随后的发射时间不到五秒钟。我试图通过命令运行 firefoxstrace
以查看发生了什么:
$ 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
任何人都可以解释输出吗?可能是什么问题呢?
这个问题听起来就像我运行另一个窗口管理器 (dwm) 的问题,但从控制台终端以相同的方式启动。症状包括 firefox 启动缓慢,大约需要 30 多秒才能启动。在下面的解决方案之后,减少到大约 8 秒。
在不同的计算机上以两种方式解决了这个问题。
首先,将以下行添加到 .xinitrc,并重新启动 X:
另一台计算机上的第二个解决方案遵循了关于使用 .xsession 而不是 .xinitrc 的 debian 建议: https: //wiki.debian.org/Xsession。当 .xsession 替换 .xinitrc 时,“dbus-update-activation-environment”命令是不必要的并且不包含在 .xsession 文件中,因为它是从 /etc/X11/Xsession.d 运行的。否则,将 .xinitrc 的原始命令和选项复制到新的 .xsession 文件中,并删除 .xinitrc 文件。