原创 修改Fedora20的开机动画

2014-7-22 17:06 4174 15 18 分类: MCU/ 嵌入式 文集: Linux笔记

Fedora20默认的开机动画是一个名为charge的不规则Fedora球,随着开机进度接近尾声,这个球也会显示灌满。其实还有很多更加炫酷的开机动画,自己也可以加入独特的logo。要实现它,需要安装一个名为Plymouth的软件。

Plymouth,既是英国的一座城市名字,也是一个汽车品牌。在Linux系统里面,它是一个为Fedora提供开机动画的项目:

**************************************************************
https://wiki.archlinux.org/index.php/plymouth
=============================================================
Plymouth is a project from Fedora providing a flicker-free graphical boot process. It relies on kernel mode setting (KMS) to set the native resolation of the display as early as possible, then provides an eye-candy splash screen leading all the way up to the login manager.
**************************************************************

Fedora20是默认安装有Plymouth的,省掉了安装步骤,不过它自带的theme并不多,可以通过下面这个命令下载:
yum install plymouth*
(貌似hot-dog这个theme是yum的时候就应用了,而且比较难删除,为此我至少重装了四次系统,所以还是不要yum所有的内容而是想安装的主题。)

(参考 http://brej.org/blog/?cat=16)
Plymouth调试步骤一:准备测试机器。
当然可以在自己的PC机上调试Plymouth,但是重复的关机启动还是有点让人厌烦,而且不能测试的时候不能上网浏览需要的信息,因此准备一台测试机器会方便很多。另外,貌似使用虚拟机或者X11插件也可以。我使用了另外一台安装有Fedora20的笔记本电脑。

Plymouth调试步骤二:进入runlevel 3。
首先确认系统中是否有KMS(Fedora20具备),然后打开target的sshd服务,7使用master的ssh连接它,获取root权限。(之所以使用ssh,是因为调试Plymouth的时候无法输入任何键盘指令。)
然后在ssh下,使用telinit命令将target的runlevel设置为3:
telinit 3
此时target就应该退出了图形界面,进入命令行了。

Plymouth调试步骤三:运行demo。
plymouthd
plymouth --show-splash
plymouth quit
它们的作用分别是,启动daemon、运行theme、退出。
要查看所有可用的theme,就使用命令:
plymouth-set-default-theme --list
要选择要运行的theme,就使用命令:
plymouth-set-default-theme xxx
(solar非常漂亮~~~)

**************************************************************
在应用theme时,出现关机有新动画,但是开机还是charge的情况。有论坛说使用命令:
update-alternatives --install /usr/share/plymouth/themes/default.plymouth \
default.plymouth /usr/share/plymouth/themes/solar/solar.plymouth 100
update-alternatives --config default.plymouth;
但是貌似即使执行了也没什么效果。为了观察plymouth的调试结果,可以将使用kernel command line生成日志文件。给内核传递参数有三种方法,第一通过内核build,第二是通过startup文件,第三是查看runtime的/proc或者/sys。
=============================================================
https://wiki.ubuntu.com/Kernel/KernelBootParameters
=============================================================
这篇是我见过写得最对口的~
修改startup时的kernel command line有两种方法:temporarily和permenently,后者主要是通过修改/etc/default/grub文件,在GRUB_CMDLINE_LINUX_DEFAULT那一行增加自己的内容既可。这里增加:
plymouth:debug=file:/var/log/plymouth-debug.log
再执行:
update-grub
但是实际上,Fedora20并没有这个上面这个命令,而是需要执行:
grub2-mkconfig -o /boot/grub2/grub.cfg
=============================================================
执行完这个命令之后,/var/log/plymouth-debug.log就会生成了,神奇的是,原来无法出现的开机动画现在居然出现了!
(补充:虽然在target机器上开机关机都可以了,但是在master机器上实验同样的步骤还是不行,so,先跳过,等调试完后面的步骤再回来看。。。)
**************************************************************

Plymouth调试步骤四:制作自己的theme。
在Plymouth下,plugin和theme是有区别的,theme会使用plugin并给它传递参数。theme一般存放在/usr/share/plymouth/themes目录下,要新建一个theme,可以先复制已存在的,然后重新命名它并把内容替换掉。"For more customisability you can write your own plugin in C which is, to be honest, not very easy."因为http://brej.org/blog/?cat=16这个帖子提供的theme制作方法比较复杂,所以这里参考了一个比较简单的帖子:
http://giridharangm.blogspot.com/2013/08/change-ubuntu-splash-screen-create-your.html
A.新建/usr/share/plymouth/theme/maria_theme目录;
B.制作一张想用来当作背景的图片,记住是PNG格式的,此时可以使用xdpyinfo来获取屏幕分辨率;
C.将图片拷贝进入maria_theme目录;
D.编辑maria_theme.plymouth文件:

[Plymouth Theme]
Name=maria_theme
Description=Theme Test by Marianna_z
ModuleName=script

[script]
ImageDir=/usr/share/plymouth/themes/maria_theme
ScriptFile=/usr/share/plymouth/themes/maria_theme/maria_theme.script

E.编辑maria_theme.script文件;
wallpaper_image=Image("green.png");
screen_width=Window.GetWidth();
screen_height=Window.GetHeight();
resized_wallpaper_image=wallpaper_image.Scale(screen_width,screen_height);
wallpaper_sprite=Sprite(resized_wallpaper_image);
wallpaper_sprite.setZ(-100);

F.安装theme;
安装theme使用的是update-alternatives命令:
update-alternatives --install /usr/share/plymouth/themes/default.plymouth \
default.plymouth /usr/share/plymouth/themes/maria_theme/maria_theme.plymouth 100
update-alternatives --config default.plymouth

G.调试theme;
除了前面提到的使用master的ssh调试之外,还有一种方法,分别在target的两个终端上执行:
plymouthd --debug --tty='tty' --no-daemon
plymouthd --show-splash

至此为止,就能够将开机动画和关机动画换成自己的green.png图片了,目前它还是静止的背景。

 

PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

DiracFatCat 2014-10-30 17:57

可能是英伟达修改了initrd,试试设置plymouth之后,再重新生成initrd。

用户377235 2014-10-30 11:51

博主你好,我的fedora20装了英伟达显卡驱动后,原来开机的fedora球界面没了,变成了蓝白进度条,请问怎么恢复呢

shaoziyang 2014-7-23 09:42

收藏了。
相关推荐阅读
DiracFatCat 2018-09-05 12:14
【博客大赛】卡尔曼滤波学习笔记(11)从位置估计速度
卡尔曼滤波器,不仅仅是一个低通滤波器,否则也不会持续发展50年。 示例:桑先生需要测试高速列车的性能。测试的目的是判断列车在直线上能否保持80m/s的速度。速度和位置每0.1秒测量一次,但是由于...
DiracFatCat 2018-08-31 19:32
【博客大赛】卡尔曼滤波学习笔记(10)一个简单的示例
《Kalman Filtering: Theory and Practice Using MATLAB》第三章,看不懂,暂时略过。《Kalman Filtering: Theory and Pract...
DiracFatCat 2018-07-19 15:09
对sed命令的练习
sed是流编辑器。它每次处理一个输入,因此很有效率。官方手册:https://www.gnu.org/software/sed/manual/sed.html学习Linux命令,当然要阅读官方手册,所...
DiracFatCat 2018-06-19 15:10
【博客大赛】卡尔曼滤波学习笔记(八)可观测性和可控制性 ...
可观测性是指,在给定模型的情况下,动力学系统的状态是否由它的输入输出唯一确定。可观测性是系统模型的特征。如果传感器矩阵H是可逆的,则本系统可观测,因为有:如果传感器矩阵H某些时候是不可逆的,则本系统仍...
DiracFatCat 2018-06-19 10:56
【博客大赛】卡尔曼滤波学习笔记(七)Z变换
如果我们仅仅对离散线性系统感兴趣,那么就使用下面这个表达式:如果u是常量,那么可以写成:为了简化表达式,我们可以将上面写成:离散线性时不变系统的Φ求解,可以使用Z变换。(* 由于本人已经忘记了Z变换的...
DiracFatCat 2018-06-19 10:54
【博客大赛】卡尔曼滤波学习笔记(六)拉普拉斯变换
对于线性时变/时不变系统,求解Φ(t)有多种方式,拉普拉斯变换是其中一种。(* 由于本人已经忘记了拉普拉斯变换的内容,因此本节待续。)...
EE直播间
更多
我要评论
3
15
关闭 站长推荐上一条 /3 下一条