parent
32b288b158
commit
80ce35e59b
|
@ -1,13 +1,21 @@
|
||||||
# Plymouth 说明
|
---
|
||||||
|
modified: 2023-06-26T02:40:51.512Z
|
||||||
|
title: Plymouth 说明
|
||||||
|
---
|
||||||
|
|
||||||
|
- [1. Plymouth 的工作流程](#1-plymouth-的工作流程)
|
||||||
|
- [2. 工作路径](#2-工作路径)
|
||||||
|
- [3. 安装 Plymouth 主题](#3-安装-plymouth-主题)
|
||||||
|
- [4. 修改开机 Logo](#4-修改开机-logo)
|
||||||
|
|
||||||
Linux 系统采用开机动画去覆盖 Linux 启动打印日志,观察 Linux 启动的过程,会先加载内核,会进入一次屏幕分辨率切换(闪烁),这时到了 Splash 屏幕显示加载进度,当加载完成后,到了 KDM/GDM 登录界面时,又会进行一次(甚至两次连续)的屏幕刷新,然后才进入桌面,但是 Plymouth 通过内核中“内核模式设置”(Kernel Mode-Setting)和显示的支持,将带给你一个更加干净、容易定制和无闪烁的图形启动模式,绚丽的动画显示提供给用户更加友好的界面。
|
Linux 系统采用开机动画去覆盖 Linux 启动打印日志,观察 Linux 启动的过程,会先加载内核,会进入一次屏幕分辨率切换(闪烁),这时到了 Splash 屏幕显示加载进度,当加载完成后,到了 KDM/GDM 登录界面时,又会进行一次(甚至两次连续)的屏幕刷新,然后才进入桌面,但是 Plymouth 通过内核中“内核模式设置”(Kernel Mode-Setting)和显示的支持,将带给你一个更加干净、容易定制和无闪烁的图形启动模式,绚丽的动画显示提供给用户更加友好的界面。
|
||||||
|
|
||||||
## Plymouth 的工作流程
|
## 1. Plymouth 的工作流程
|
||||||
|
|
||||||
Plymouth 主要分为 2 个端和 2 个阶段
|
Plymouth 主要分为 2 个端和 2 个阶段
|
||||||
|
|
||||||
* 2 个端分别为客户端和服务端,客户端是 Plymouth,服务端是 Plymouthd。
|
- 2 个端分别为客户端和服务端,客户端是 Plymouth,服务端是 Plymouthd。
|
||||||
* 2 个阶段分别是 ramdisk 和 root。
|
- 2 个阶段分别是 ramdisk 和 root。
|
||||||
|
|
||||||
首先是 ramdisk,ramdisk 在 /boot/initrd-$VERSION.img(VERSION=uname -r //系统内核版本)。把 initrd 解开之后可以看见在根目录下有一个 init 文件,打开查看可以看见对于 Plymouth 来说有 4 个命令:
|
首先是 ramdisk,ramdisk 在 /boot/initrd-$VERSION.img(VERSION=uname -r //系统内核版本)。把 initrd 解开之后可以看见在根目录下有一个 init 文件,打开查看可以看见对于 Plymouth 来说有 4 个命令:
|
||||||
|
|
||||||
|
@ -25,18 +33,18 @@ ramdisk 结束之后到 root 中。root 的初始化脚本在 /etc/rc.d/rc.sysin
|
||||||
|
|
||||||
再来看看 2 个端:
|
再来看看 2 个端:
|
||||||
|
|
||||||
1. 客户端和服务端之间的通信通过 Socket 进行;
|
1. 客户端和服务端之间的通信通过 Socket 进行;
|
||||||
2. 客户端向服务端发送 Message,服务端收到指令之后回复一个 Ack 答复信息,客户端收到答复信息之后便结束进程;
|
2. 客户端向服务端发送 Message,服务端收到指令之后回复一个 Ack 答复信息,客户端收到答复信息之后便结束进程;
|
||||||
3. 服务端根据收到的指令调用主题包中的对应函数进行操作;
|
3. 服务端根据收到的指令调用主题包中的对应函数进行操作;
|
||||||
|
|
||||||
现在到程序的循环模式中:
|
现在到程序的循环模式中:
|
||||||
|
|
||||||
1. 服务端和客户端都使用了同一种的循环模式;
|
1. 服务端和客户端都使用了同一种的循环模式;
|
||||||
2. 使用一个 while(1) 来对 events 和 timeout 两个结构进行循环;
|
2. 使用一个 while(1) 来对 events 和 timeout 两个结构进行循环;
|
||||||
events 用于发送和接收指令信息;
|
1. events 用于发送和接收指令信息;
|
||||||
timeout 用于进行超时处理,进度条和界面的重绘都挂载在 timeout 下,on_timeout 用于界面的重绘,这个函数可以由主题或者 LIB 提供,在我看来这两个端和 X 的客户端和 Server 端相似;
|
2. timeout 用于进行超时处理,进度条和界面的重绘都挂载在 timeout 下,on_timeout 用于界面的重绘,这个函数可以由主题或者 LIB 提供,在我看来这两个端和 X 的客户端和 Server 端相似;
|
||||||
|
|
||||||
## 工作路径
|
## 2. 工作路径
|
||||||
|
|
||||||
系统开机主题存储在:/usr/share/plymouth/themes 路径下。
|
系统开机主题存储在:/usr/share/plymouth/themes 路径下。
|
||||||
|
|
||||||
|
@ -46,14 +54,14 @@ timeout 用于进行超时处理,进度条和界面的重绘都挂载在 timeo
|
||||||
2. /etc/alternatives/default.plymouth
|
2. /etc/alternatives/default.plymouth
|
||||||
3. /etc/alternatives/text.plymouth
|
3. /etc/alternatives/text.plymouth
|
||||||
|
|
||||||
## 安装 Plymouth 主题
|
## 3. 安装 Plymouth 主题
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Ubuntu
|
# Ubuntu
|
||||||
sudo apt-get install plymouth-theme-*
|
sudo apt-get install plymouth-theme-*
|
||||||
```
|
```
|
||||||
|
|
||||||
## 修改开机 Logo
|
## 4. 修改开机 Logo
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 选择开机主题
|
# 选择开机主题
|
||||||
|
|
Loading…
Reference in New Issue