免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1806 | 回复: 1
打印 上一主题 下一主题

Plymouth分析日志(3) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-27 14:45 |只看该作者 |倒序浏览

[/url]
Plymouth基本上看得差不多了~ 大概在70%这样吧~  Ubuntu 9.10貌似不会用Plymouth了,所以在确定之前暂停一下研究~ T 3T

这是我做的巡音章鱼开机动画 = 3=

[url=http://control.cublog.cn/]


下面介绍一下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
解开之后可以看见在根目录下有一个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
下载:
下载


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/57901/showart_1979351.html

论坛徽章:
0
2 [报告]
发表于 2013-01-04 16:03 |只看该作者
楼主现在还在做开发吗,今年都没有发帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP