plymouth启动分析

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

Plymouth的工作流程:

Plymouth主要分为2个端和2个阶段

2个端分别为客户端和服务端,客户端是plymouth,服务端是plymouthd

2个阶段分别是ramdisk和root

首先是ramdisk,ramdisk在/boot/initrd-版本号.img

我们把initrd解开之后可以看见在根目录下有一个init文件,打开查看可以看见对于Plymouth来说有3个命令

1.daemonize -ignoe-missing /bin/plymouthd           /*这里开启了plymouth的服务端*/

2.plymouth -show-splash              /*这里调用了客户端,并给出开始显示动画的指令*/

3.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;

[root@localhost /]# rpm -qa|grep plymouth

plymouth-plugin-label-0.8.1-6.lp.i586

plymouth-theme-solar-0.8.1-6.lp.i586

plymouth-graphics-libs-0.8.1-6.lp.i586

plymouth-theme-spinfinity-0.8.1-6.lp.i586

plymouth-core-libs-0.8.1-6.lp.i586

plymouth-plugin-space-flares-0.8.1-6.lp.i586

plymouth-gdm-hooks-0.8.1-6.lp.i586

plymouth-plugin-throbgress-0.8.1-6.lp.i586

plymouth-system-theme-0.8.1-6.lp.i586

plymouth-scripts-0.8.1-6.lp.i586

plymouth-utils-0.8.1-6.lp.i586

plymouth-0.8.1-6.lp.i586

其中这些包中plymouth-theme-solar,plymouth-theme-spinfinity是可以设定的theme,plymouth-system-theme只是提供我们系统默认的安装的theme,这个包没有任何安装文件,plymouth提供一些必要的lib库文件和相关的版本信息,plymouth-theme-spinfinity安装相关的plymouth动画所需的图片,他所对应的库文件提供者是plymouth-plugin-throbgress;

plymouth的theme安装目录:  /usr/share/plymouth/

plymouth的lib安装目录:  /usr/lib/plymouth/

使用/usr/sbin/plymouth-set-default-theme 可以查看当前使用的theme名;

使用/usr/sbin/plymouth-set-default-theme【theme】可以用来更换新的theme;

执行/usr/libexec/plymouth/plymouth-update-initrd之后就可以把改变后的plymouth更新到initrd里面,重启的时候发现已经是更新后的plymouth动画了;

如果要修改plymouth相关的包来添加新的theme的时候,可以把新的图片加进去,并修改spec文件,设置默认安装的theme,然后rebuild就可以在安装了系统之后就是我们想要的那个theme显示了。

参考文章:http://fangshanzi.com/plymouth-qidong-boot-linux/

××××××××××××××××××××××××××××××××××××××××××××××××××××

有个需求是需要修改ubuntu 13.04server的启动画面:

  在配置过程中出现了不生效的情况,经过多次检查,发现ubuntu的plymouth跟centos的下面的默认路径不同,配置方法也有所不同,下面记录下ubuntu下面的配置步骤

  安装plymouth软件

  apt-get install plymouth

  ubuntu的指定默认启动画面的路径在:/lib/plymouth/themes/default.plymouth

  如果这个文件没有就需要自己去创建:

  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的启动项:

  vim /etc/default/grub

  修改下面这行参数为:

  GRUB_CMDLINE_LINUX_DEFAULT="splash"

  修改完成后保存

  然后更新grub

  update-grub

  刷新initramfs

  update-initramfs  -u

参考文章:http://itlab.idcquan.com/linux/administer/964960.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值