不久前,我决定开始一次 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-nouveau
RTX 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
,它不仅应该由sddm
Debian 中启动 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
只需重命名即可,自下次重新启动以来一切正常!我希望对某些人有用。