[other] 一文搞懂登录管理器(或者叫Display Manager,Login Manager)启动
Tofloor
poster avatar
PurestAsh
deepin
2024-11-07 18:36
Author

Display Manager 启动流程

Display Manager 通过 Systemd 启动

在 Systemd 的众多 unit 中,最常见的是以 .service 结尾的 service unit。此外,还有一种称为 target unit 的 unit,我们通常称之为目标

什么是 Target Unit?

目标(target)可以理解为一组 service unit 的集合,但它不仅包含 service unit,还包括其他类型的 unit。只有当目标下的所有 unit 都启动成功,才算该目标完成。一个目标可以依赖其他目标来完成,从而形成一个层层依赖的关系。

Systemd 启动过程中的目标依赖关系

在 Systemd 启动过程中,需要完成一系列目标。首先,Systemd 会先完成一些最基础的目标,逐步完成其他目标,最终实现最终目标——default.target。可以通过以下命令查看 default.target 的依赖关系:

systemctl list-dependencies default.target

Pasted image 20241107140950.png

在图中可以看到,Systemd 会先完成 basic.target,再完成 multi-user.target,最后到达 default.target

更改系统启动的最终目标

我们可以更改系统启动的最终目标,即更改 default.target 的指向。例如,通过以下命令将 default.target 指向 multi-user.target,从而实现开机进入命令行模式:

systemctl set-default multi-user.target

Pasted image 20241107142544.png

可以看到,这只是创建了一个符号链接而已。类似地,我们可以将 default.target 指向 graphical.target,让系统启动后进入图形界面的登录页面:

systemctl set-default graphical.target

Pasted image 20241107142841.png

为什么指向 Graphical Target 会进入登录界面?

那么,为什么将 default.target 指向 graphical.target 就会进入登录界面呢?我们可以通过查看 graphical.target 的依赖关系来了解:

cat /path/to/graphical.target

Pasted image 20241107143210.png

可以看到,它依赖于 display-manager.service。进一步查看 display-manager.service

file /etc/systemd/system/display-manager.service

Pasted image 20241107143504.png

原来 display-manager.service 最终指向了 sddm,即 KDE 的登录管理器。至此,系统的登录界面就会成功启动!

Compositor都还没有启动,为什么sddm能显示图像?

我们知道,在我们登录的时候,我们可以选择是以wayland启动还是以x11启动。也就是说,wayland compositor是在我们输入完密码,点击登录的时候才启动的。难道Display Manager能够在没有启动x server或者wayland compositor之前就能显示图像?

答案是:之所以display manager能够显示图形,也是有x server或者wayland compositor 存在的。
也就是说。display-manager.service的ExecStart程序sddm会干2件事。

Pasted image 20241107164142.png

  1. 启动一个 小型(也许是个完整的)wayland compositor)跑在tty2。
  2. 然后启动一个普通的wayland 程序,他只要包含一个登录框,和一个登录按钮就行了。

当用户输入密码,验证成功后,再在tty1启动一个全新的wayland compositor ,用来跑桌面环境。
也就是说在整个桌面环境启动的过程中,会启动2个wayland compositor

这也就是为什么我们按 ctrl+alt+f1ctrl+alt+f2 能在登录界面和桌面环境之间来回切换的原因吧。

浅薄理解,欢迎各位指正!

Reply Favorite View the author
All Replies
Oli
deepin
2024-11-08 00:04
#1

感谢科普

Reply View the author
Oli
deepin
2024-11-08 00:04
#2

applaud applaud

Reply View the author
小鱼贝壳
deepin
2024-11-08 00:33
#3

学习一下

Reply View the author
小小怪冲啊!
deepin
2024-11-08 03:25
#4

like

Reply View the author
zijinyise
deepin
2024-11-08 08:47
#5

666

Reply View the author