Sddm 尚未启动,但理论上一切正常!

Sddm 尚未启动,但理论上一切正常!

不久前,我决定开始一次 Linux 冒险。我从虚拟机(VMware Workstation Pro)开始,一切正常。我选择了带有 KDE Plasma 桌面的 Debian 10.4.0 发行版。我对 Debian 非常满意,因此将它安装在我的物理驱动器上。不幸的是,sddm从 GNU GRUB 菜单中选择 Debian GNU/Linux 选项后无法启动。

我找到了很多无法使用 sddm 的解决方案,但没有一个有帮助。这是我启动 Debian GNU/LINUX 后得到的:

上面几行有“看门狗硬件已禁用”。

我检查的第一件事是 sddm 是否设置为默认显示管理器并且它调用了有效目录/usr/bin/sddm。然后我尝试启用它,# systemctl enable sddm但它显示:

但当我打字时# systemctl status sddm它会打印出来。

我不知道如何解决它。 SDDM 未显示,但似乎有效。很多人都遇到黑屏问题,但正如您所见,情况并非如此。我用非官方非免费安装重新安装了Debian,效果更好(之前没有检测到我的wifi卡)。但是,它仍然不起作用。

如果有帮助的话,这是我的电脑规格:

  • CPU:AMD锐龙7 3800X
  • GPU:微星Geforce RTX 2070 Super Gaming X Trio
  • 主板:MSI MPG X570 Gaming Edge wifi

答案1

sddm.service由符号链接启动/etc/systemd/system/display-manager.service(它指向您安装并选择作为默认显示管理器运行的任何 X 显示管理器),该链接又由graphical.target.

如果sddm无法启动 GUI 登录屏幕/自动登录会话,您应该查看/var/lib/sddm/.local/share/sddm/xorg-session.log和/或/var/log/Xorg.0.log寻找线索。

可能是您缺少必要的xserver-xorg-video-*软件包:对于 Geforce RTX 2070,开源软件xserver-xorg-video-nouveau只能处理它,但使用非免费软件xserver-xorg-video-nvidia(版本 418.* 或更高版本)可能会获得更好的结果。

如果使用xserver-xorg-video-nouveauRTX 2070,您可能需要一些固件文件 - 这些文件已打包在firmware-misc-nonfree.

如果有效,则状态文件、其配置文件和/或位于 中的默认脚本或其 sysadmin 可自定义版本startx可能有问题。sddm/var/lib/sddm/state.conf/etc/sddm.conf/usr/share/sddm/scripts/etc/sddm/


Debian 10 会议的具体细节sddm:(假设是 X11,不是 Wayland)

sddm启动时,它启动 X 服务器 ( /usr/bin/X),运行/usr/share/sddm/scripts/Xsetup脚本(默认为空),然后启动sddm-greeter登录提示,除非在 中配置了自动登录sddm.conf。如果多个会话类型被定义为.desktop中的文件/usr/share/xsessions/,则欢迎程序也会提供会话类型的选择,默认为用户在先前 GUI 登录时选择的任何类型。此时,会话类型选择仅将$STARTUP环境变量设置为指向文件指定的命令.desktop

启动实际的用户会话是通过/etc/sddm/Xsession,它作为登录用户运行,初始化 GUI 会话的用户 shell 环境,然后执行/etc/X11/Xsession,它不仅应该由sddmDebian 中启动 X 会话的方法调用,还应该由每种方法调用,包括startx

(对于 Wayland,会话脚本将被/usr/share/sddm/scripts/wayland-session取代,我不熟悉之后会发生什么。)

/etc/X11/Xsession将检查是否存在各种经典 X 会话配置文件。然后它将获取 中的任何脚本/etc/X11/Xsession.d,其中除其他外,将检查所选择的会话启动命令是否实际sddm-greeter存在,如果不存在,则回退到正常的(系统管理员可调整的)默认值,最后实际启动它。对于 KDE 会话,会话启动命令将为exec /usr/bin/startkde

由于exec使用了 ,因此该命令将接管正在运行的 shell 进程的 PID/etc/X11/Xsession以及在此之前由该进程获取的任何脚本。该命令将是整个X登录会话的“关键”:当此过程结束时,sddm将认为会话结束,并将触发整个GUI登录会话的结束:该/usr/share/sddm/scripts/Xstop脚本将被执行,X服务器将重置后,xauth将生成一个新的 cookie。旧会话中的任何剩余进程此时可能会收到 HUP 信号,并且通常会消失。

答案2

在尝试了多种解决方案后,我自己找到了问题的答案。由于 sddm 没有在启动时自动启动,但是

$ systemctl start sddm

以 root 身份登录后工作正常,我尝试更改:

$ ls /etc/rc3.d/S03sddm lrwxrwxrwx 1 root root 14 apr 4 2020 /etc/rc3.d/S03sddm -> ../init.d/sddm

到:

$ ls /etc/rc3.d/S07sddm lrwxrwxrwx 1 root root 14 apr 4 2020 /etc/rc3.d/S07sddm -> ../init.d/sddm

只需重命名即可,自下次重新启动以来一切正常!我希望对某些人有用。

相关内容