系统更新后 SDDM 损坏

SDDM was broken after system update

我将 Arch Linux 与 KDE 和 SDDM 一起使用了大约 6 个月。几天前我得到了一个平常的system update。第二天,重启后,系统卡在黑屏 Starting version 243.0-1-arch。然后我按 Ctrl+Alt+F2 和 inter tty 终端,登录并 $startx - GUI 被加载。下次当我尝试在 $ systemctl start sddm 的 tty 终端中手动启动 sddm 时,什么也没发生。这就是 journalctl -b -1 | grep sddm 说:

сен 23 02:48:55 jenkins audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=sddm comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
сен 23 02:48:55 jenkins sddm[630]: Initializing...
сен 23 02:48:55 jenkins sddm[630]: Starting...
сен 23 02:48:55 jenkins sddm[630]: Logind interface found
сен 23 03:00:03 jenkins sddm[630]: Signal received: SIGTERM
сен 23 03:00:03 jenkins systemd[1]: sddm.service: Succeeded.
сен 23 03:00:03 jenkins audit[1]: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=sddm comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
сен 23 03:00:03 jenkins kernel: audit: type=1131 audit(1569196803.849:47): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=sddm comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'

还有另一个列表 systemctl status sddm

● sddm.service - Simple Desktop Display Manager
   Loaded: loaded (/usr/lib/systemd/system/sddm.service; enabled; vendor preset: disab>
   Active: active (running) since Mon 2019-09-23 10:30:06 MSK; 6h ago
     Docs: man:sddm(1)
           man:sddm.conf(5)
 Main PID: 427 (sddm)
    Tasks: 2
   Memory: 12.8M
   CGroup: /system.slice/sddm.service
           └─427 /usr/bin/sddm

сен 23 10:30:06 jenkins systemd[1]: Started Simple Desktop Display Manager.
сен 23 10:30:06 jenkins sddm[427]: Initializing...
сен 23 10:30:06 jenkins sddm[427]: Starting...
сен 23 10:30:06 jenkins sddm[427]: Logind interface found

可能会出什么问题?

这似乎是一个竞争条件。 SDDM 启动,而视频驱动程序尚未准备就绪。

一个正确的解决方案是将您的图形驱动程序添加到 /etc/mkinitcpio.confMODULES 键。然后你必须重建在启动时加载的 ramdisk:mkinitcpio -p linux。之后,重启。

要添加的图形驱动程序取决于您的硬件。对我来说(因为我使用 Intel 卡),它是 i915。键入 lsmod 以获取所有已加载内核模块的列表。

谢谢 dritter 的回答,不幸的是我无法验证它的正确性,因为我找到了另一个解决方案,甚至两个(我检查了两个选项 - 都有效)。因此,第一个解决方案是 降级 Linux-lts 核心(在我的例子中,从 4.19.73-1 降级到 4.19.72-1 或更低版本)。另一个解决方案(我确定的)是安装 nvidia-dkms 驱动程序。