37、Linux系统启动管理:systemd、显示管理器与窗口管理器深度解析

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页面、相关网站、社区论坛
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值