Chinaunix首页 | 论坛 | 博客
  • 博客访问: 270776
  • 博文数量: 46
  • 博客积分: 4125
  • 博客等级: 上校
  • 技术积分: 575
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-25 16:40
文章分类

全部博文(46)

文章存档

2011年(1)

2010年(4)

2009年(38)

2008年(3)

我的朋友

分类: LINUX

2009-06-27 14:45:23

Plymouth基本上看得差不多了~ 大概在70%这样吧~  Ubuntu 9.10貌似不会用Plymouth了,所以在确定之前暂停一下研究~ T 3T
 
这是我做的巡音章鱼开机动画 = 3=
 
 
下面介绍一下Plymouth的工作流程~
Plymouth主要分为2个端和2个阶段~
2个端分别为客户端和服务端,客户端是plymouth,服务端是plymouthd
2个阶段分别是ramdisk和root
首先是ramdisk,ramdisk在/boot/initrd-版本号.img
按如下方法解开~
1 : 首先将ramdisk拷贝出来
2 : mv ramdisk initrd.img.gz
3 : gunzip initrd.img.gz
4 : cpio – ivmd < initrd.img
解开之后可以看见在根目录下有一个init文件,打开查看可以看见对于Plymouth来说有3个命令
1 : daemonize –ignoe-missing /bin/plymouthd
这里开启了plymouth的服务端
2 : plymouth –show-splash
这里调用了客户端,并给出开始显示动画的指令
3 : plymouth –newroot=/sysroot
这里提示plymouth从ramdisk进入到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两个结构进行循环
1. events用于发送和接收指令信息
2. timeout用于进行超时处理,进度条和界面的重绘都挂载在timeout下,on_timeout用于界面的重绘,这个函数可以由主题或者LIB提供
以上是对plymouth的一点总结
下面是未解决的问题和抱怨 = 皿=
未解决:
1. 进程中有管道通信,但是不知道有什么用
2. Socket通信中的参数问题
3. framebuffer的参数问题
4. png图片的解析过程
抱怨:
1. 软件模块的布局不合理,嵌套无层次
2. 就算自己指定了目录,执行make install之后一样会覆盖掉根目录下的plymouth和plymouthd
3. 注释太少了 = 皿=
下面附上我注释的代码~  因为还没全部看完~ 所以注释不是很全 = 3= 嘛~
 
文件: plymouth-0.7.0.rar
大小: 1149KB
下载: 下载
阅读(1667) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~