IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux系统plymouth启动过程及原理详解 -> 正文阅读

[系统运维]Linux系统plymouth启动过程及原理详解

简介

Linux系统采用开机动画去覆盖linux启动打印日志,观察Linux启动的过程,会先加载内核,会进入一次屏幕分辨率切换(闪烁),这时到了Splash屏幕显示加载进度,当加载完成后,到了KDM/GDM登录界面时,又会进行一次(甚至两次连续)的屏幕刷新,然后才进入桌面,但是plymouth通过内核中“内核模式设置”(Kernel Mode-Setting)和显示的支持,将带给你一个更加干净、容易定制和无闪烁的图形启动模式,绚丽的动画显示提供给用户更加友好的界面。

Plymouth的工作流程

Plymouth主要分为2个端和2个阶段
2个端分别为客户端和服务端,客户端是plymouth,服务端是plymouthd
2个阶段分别是ramdisk和root
VERSION=uname -r //系统内核版本
首先是ramdisk,ramdisk在/boot/initrd-$VERSION.img
我们把initrd解开之后可以看见在根目录下有一个init文件,打开查看可以看见对于Plymouth来说有3个命令

1.daemonize -ignoe-missing /bin/plymouthd           /*这里开启了plymouth的服务端*/
2.plymouth -show-splash              /*这里调用了客户端,并给出开始显示动画的指令*/
3.plymouth message --text="xxx" /*动画中显示文字*/
4.plymouth -newroot=/sysroot         /*这里提示plymouth从initrd进入到root中*/

ramdisk结束之后到root中
root的初始化脚本在/etc/rc.d/rc.sysinit中
里面最主要是2条指令

1、plymouth –hide-splash
/*用于隐藏动画 显示自检信息 , 一般在遇到错误的时候会调用这条指令*/
2、plymouth –show-splash
/*用于恢复动画的显示 , 一般用于从错误信息中恢复动画*/最后当要进入GDM也就是GNOME的账户管理界面的时候会调用plymouth -quit来切换到GDM

最后来看看2个端:
1、客户端和服务端之间的通信通过Socket进行;
2、客户端向服务端发送Message,服务端收到指令之后回复一个Ack答复信息,客户端收到答复信息之后便结束进程;
3、服务端根据收到的指令调用主题包中的对应函数进行操作;
现在到程序的循环模式中
服务端和客户端都使用了同一种的循环模式:
使用一个while(1)来对events和timeout两个结构进行循环:
events用于发送和接收指令信息;
timeout用于进行超时处理,进度条和界面的重绘都挂载在timeout下,on_timeout用于界面的重绘,这个函数可以由主题或者LIB提供,在我看来这两个端和X的客户端和server端相似;
plymouth相关包及其设置
plymouth可以提供给我们Solar、Text 、Details 、Label 、Fade-in、Spinfinity,fedora使
用的Fade-in这个theme,而我们Lite1.4用的是 Spinfinity;
ubuntu的指定默认启动画面的路径在:/lib/plymouth/themes/default.plymouth
如果这个文件没有就需要自己去创建:

[root@localhost /]# vim /lib/plymouth/themes/default.plymouth

添加:

[Plymouth Theme]
Name=Wheat
Description=A theme thatfeatures a wheat background with a logo.
ModuleName=script
[script]
ImageDir=/lib/plymouth/themes/wheat
ScriptFile=/lib/plymouth/themes/wheat/wheat.script
特别注意下下面的两个路径,ubuntu和centos是不同的
将你的自定义的启动画面放置到/lib/plymouth/themes/wheat/ 路径下,部分系统路径不一致,详看后面内容:
修改grub的启动项:
[root@localhost /]#  vim /etc/default/grub

修改下面这行参数为:
GRUB_CMDLINE_LINUX_DEFAULT="splash"
修改完成后保存
然后更新grub
[root@localhost /]# update-grub
刷新initramfs
[root@localhost /]# update-initramfs  -u

其他系统动画显示的主题存放路径

[root@localhost themes]# pwd
/usr/share/plymouth/themes
[root@localhost themes]# ls
default.plymouth details text.plymouth ubuntukylin-logo
#ubuntukylin-logo

其他知识链接
linux系统下grub.cfg详解和实例操作

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-01 14:51:53  更:2021-08-01 14:52:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 11:16:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计