Linux系统启动管理:systemd、显示管理器与窗口管理器深度解析
1. systemd简介
systemd是所有进程之母,其进程ID(PID)始终为1。它负责将Linux主机引导至可进行有效工作的状态,功能比旧的SystemV init程序更为广泛,涵盖管理运行中的Linux主机的诸多方面,如挂载文件系统、启动和管理系统服务等。
1.1 文件系统挂载与目标确定
systemd依据
/etc/fstab
文件挂载文件系统,包括交换文件或分区。它利用配置链接
/etc/systemd/system/default.target
来确定主机应引导至的状态或目标。该文件是指向真实目标文件的符号链接。对于桌面工作站,通常为
graphical.target
,相当于SystemV中的运行级别5;对于服务器,默认更可能是
multi-user.target
,类似于SystemV中的运行级别3;
emergency.target
类似于单用户模式。目标和服务均为systemd单元。
1.2 目标依赖与启动
每个目标在其配置文件中都有一组依赖项,systemd会启动所需的依赖项。这些依赖项是使Linux主机在特定功能级别运行所需的服务。当目标配置文件中列出的所有依赖项都加载并运行时,系统即处于该目标级别运行。
1.3 遗留SystemV init目录处理
systemd还会查看遗留的SystemV init目录,检查是否存在启动文件。若存在,systemd会将其用作配置文件来启动文件中描述的服务。例如,在Fedora中,已弃用的网络服务仍使用SystemV启动文件。
1.4 启动过程中的检查点
sysinit.target
和
basic.target
可视为启动过程中的检查点。尽管systemd的设计目标之一是并行启动系统服务,但仍有某些服务和功能目标必须在其他服务和目标启动之前启动。只有当该检查点所需的所有服务和目标都完成后,才能通过这些检查点。
-
sysinit.target
:当它所依赖的所有单元都完成时达到。这些单元包括挂载文件系统、设置交换文件、启动udev、设置随机生成器种子、启动低级服务以及在一个或多个文件系统加密时设置加密服务等,在
sysinit.target
内这些任务可以并行执行。它启动系统正常运行所需的所有低级服务和单元,以便进入
basic.target
。
-
basic.target
:在
sysinit.target
完成后,systemd启动
basic.target
,启动实现该目标所需的所有单元。它通过启动所有后续目标所需的单元提供一些额外功能,例如设置各种可执行目录的路径、通信套接字和定时器等。
2. 更改默认目标实验
2.1 从图形目标切换到多用户目标
- 作为root用户,切换到systemd配置目录并进行长列表显示:
[root@studentvm1 ~]# cd /etc/systemd/system/ ; ll
-
列出
/lib/systemd/system/目录,查找multi-user.target和graphical.target:
[root@studentvm1 system]# ll /lib/systemd/system/ | less
-
显示
default.target的内容:
[root@studentvm1 system]# cat default.target
-
删除现有链接并创建指向
multi-user.target的新链接:
# rm -f default.target
# ln -s /lib/systemd/system/multi-user.target default.target
-
验证
default.target链接是否正确:
# ll default.target
- 重启虚拟机,应进入虚拟控制台1的控制台登录界面。
2.2 切换回图形目标
- 检查当前默认目标:
# systemctl get-default
-
使用
systemctl命令更改默认目标:
# systemctl set-default graphical.target
- 直接进入显示管理器登录页面而无需重启:
# systemctl isolate default.target
3. 图形登录屏幕组件
在图形目标的启动过程结束时,涉及两个组件:显示管理器(dm)和窗口管理器(wm)。这两个程序紧密协作,使图形用户界面(GUI)登录体验顺畅无缝。
3.1 显示管理器
显示管理器的唯一功能是为Linux提供GUI登录屏幕。登录到GUI桌面后,显示管理器将控制权交给窗口管理器;注销桌面时,显示管理器重新获得控制权以显示登录屏幕并等待下一次登录。常见的显示管理器有gdm、kdm、lightdm、lxdm、sddm等。部分显示管理器随特定桌面环境提供,许多显示管理器与特定桌面无直接关联,可用于任何桌面的登录屏幕。
3.2 窗口管理器
窗口管理器负责管理GUI桌面(包括GUI登录屏幕)上窗口的创建、移动和销毁。它与X Window System或较新的Wayland协作执行这些任务。X Window System提供生成Linux或Unix图形用户界面图形所需的所有图形原语和功能。窗口管理器还控制其生成的窗口的外观,包括按钮、滑块、窗口框架、弹出菜单等的功能和装饰方面。常见的窗口管理器有compiz、fluxbox、fvwm、icewm等。
3.3 选择处理方法
在大多数现代发行版中,安装时会根据所选桌面和发行版打包者的偏好为用户做出选择。桌面、窗口管理器和显示管理器可以轻松更改。现在,systemd已成为许多发行版的标准启动系统,可在
/etc/systemd/system
中设置首选的显示管理器。该目录中有一个名为
display-manager.service
的符号链接,指向
/usr/lib/systemd/system
中的某个显示管理器服务单元。要更改活动显示管理器,需删除现有的
display-manager.service
链接并替换为所需的链接。
4. 显示和窗口管理器实验
4.1 检查已安装的窗口管理器和显示管理器
# dnf list compiz fluxbox fvwm icewm xorg-x11-twm xfwm4
# dnf list gdm kdm lightdm lxdm sddm xfdm xorg-x11-xdm
4.2 安装新的显示管理器和窗口管理器
# dnf install -y lxdm compiz fvwm fluxbox icewm
4.3 重启显示管理器服务
# systemctl restart display-manager.service
或者通过切换目标来实现:
# systemctl isolate multi-user.target
# systemctl isolate graphical.target
4.4 测试不同窗口管理器
尝试不同的窗口管理器,如FVWM。使用FVWM时,若要退出,可左键单击桌面并打开
FvwmConsole
,然后输入命令
Quit
(大写Q)并按Enter;也可打开Xterm会话并使用
killall fvwm
命令。
4.5 更改显示管理器
# cd /etc/systemd/system/ ; ll display-manager.service
# ll /usr/lib/systemd/system/*dm.service
# rm -f display-manager.service
# ln -s /usr/lib/systemd/system/lxdm.service display-manager.service
# ll display-manager.service
登录使用lxdm,然后注销并切换回lightdm。
4.6 总结
通过以上实验,我们深入了解了systemd的启动过程、显示管理器和窗口管理器的使用和切换方法。掌握这些知识有助于我们更好地管理和定制Linux系统的启动和图形界面。
4.7 流程图
graph TD;
A[系统启动] --> B[systemd启动];
B --> C[挂载文件系统];
C --> D{确定目标};
D -->|graphical.target| E[启动图形界面相关服务];
D -->|multi-user.target| F[启动多用户模式相关服务];
E --> G[显示管理器启动];
G --> H[窗口管理器启动];
H --> I[用户登录];
F --> J[控制台登录];
4.8 表格
| 目标 | 说明 | 类似SystemV运行级别 |
|---|---|---|
| graphical.target | 图形界面目标 | 5 |
| multi-user.target | 多用户模式目标 | 3 |
| emergency.target | 紧急模式目标 | 单用户模式 |
4.9 列表
- 常见显示管理器:gdm、kdm、lightdm、lxdm、sddm
- 常见窗口管理器:compiz、fluxbox、fvwm、icewm
5. 系统启动与管理总结
5.1 关键组件协作
GRUB和systemd init系统是现代Linux发行版启动和启动阶段的关键组件。它们协同工作,先加载内核,再启动所有系统服务,以构建一个功能完备的GNU/Linux系统。虽然GRUB和systemd比其前身更复杂,但也易于学习和管理。
5.2 学习资源
man页面包含大量关于systemd的信息,相关网站也描述了完整的启动过程和提供在线的systemd man页面。
5.3 流程图
graph LR;
A[GRUB加载] --> B[内核加载];
B --> C[systemd启动];
C --> D[挂载文件系统];
D --> E[确定目标];
E --> F[启动服务];
F --> G[系统就绪];
5.4 表格
| 组件 | 功能 |
|---|---|
| GRUB | 加载内核 |
| systemd | 启动系统服务,管理系统状态 |
5.5 列表
- 系统启动关键步骤:GRUB加载、内核加载、systemd启动、文件系统挂载、目标确定、服务启动
- 学习systemd的资源:man页面、相关网站
6. 操作建议与注意事项
6.1 更改默认目标
- 操作前备份相关配置文件,以防误操作导致系统无法正常启动。
- 验证链接是否正确,确保指向正确的目标文件。
6.2 安装和切换显示与窗口管理器
- 安装新的显示管理器和窗口管理器时,确保网络连接稳定,避免安装过程中断。
-
切换显示管理器后,若出现问题,可通过恢复原有的
display-manager.service链接来解决。
6.3 表格
| 操作 | 注意事项 |
|---|---|
| 更改默认目标 | 备份配置文件,验证链接 |
| 安装和切换管理器 | 确保网络稳定,可恢复原链接 |
6.4 列表
- 更改默认目标步骤:删除原链接、创建新链接、验证链接、重启系统
- 安装和切换管理器步骤:检查已安装的管理器、安装新的管理器、重启服务、测试不同管理器、更改显示管理器
6.5 流程图
graph TD;
A[操作需求] --> B{更改默认目标};
B -->|是| C[备份配置];
C --> D[删除原链接];
D --> E[创建新链接];
E --> F[验证链接];
F --> G[重启系统];
B -->|否| H{安装和切换管理器};
H -->|是| I[检查已安装];
I --> J[安装新管理器];
J --> K[重启服务];
K --> L[测试不同管理器];
L --> M[更改显示管理器];
7. 总结
7.1 核心要点回顾
本文深入探讨了Linux系统启动和管理的关键方面,包括systemd的功能和启动过程、图形登录屏幕的显示管理器和窗口管理器,以及相关的操作实验。
7.2 知识应用价值
掌握这些知识,用户可以更好地理解Linux系统的启动机制,灵活定制系统的启动目标和图形界面,解决系统启动和管理过程中遇到的问题。
7.3 未来探索方向
随着Linux技术的不断发展,systemd和相关组件可能会有更多的功能和优化。用户可以持续关注相关文档和社区,深入探索更多高级应用和配置技巧。
7.4 表格
| 知识领域 | 核心要点 |
|---|---|
| systemd | 进程管理、文件系统挂载、目标确定、服务启动 |
| 显示管理器 | 提供GUI登录屏幕、与窗口管理器协作 |
| 窗口管理器 | 管理窗口创建、移动和销毁,控制窗口外观 |
7.5 列表
- 系统启动管理的关键步骤:GRUB加载、内核加载、systemd启动、文件系统挂载、目标确定、服务启动
- 图形界面管理的关键组件:显示管理器、窗口管理器
- 学习和探索的资源:man页面、相关网站、社区论坛
超级会员免费看
1131

被折叠的 条评论
为什么被折叠?



