- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Androidinit啟动过程分析
Android init 启动过程分析
分析android的启动过程,从内核之上,我们首先应该从文件系统的init开始,因为 init是内核进入文件系统后第一个运行的程序,通常我们可以在linux的命令行中指定内核第一个调用谁,如果没指定那么内核将会到/sbin/,/bin/ 等目录下查找默认的init,如果没有找到那么就报告出错。下面是曾经用过的几种开发板的命令行参数:S3C2410 启动参数:noinitrdroot=/dev/nfs??nfsroot=6:/nfsroot/rootfs??ip=88:6:6:::eth0:onconsole=ttySAC0S3C2440 启动参数:setenv bootargs console=ttySAC0root=/dev/nfs nfsroot=6:/nfsroot/rootfsip=75:6:01:::eth0:onmem=64M init=/init? ?? ?? ?marvell 310 启动参数:boot root=/dev/nfsnfsroot=6:/nfsroot/rootfs,rsize=1024,wsize=1024ip=76:01:01:::eth0:-On?console=ttyS2,115200 mem=64M init=/initinit的源代码在文件:./system/core/init/init.c 中,init会一步步完成下面的任务:1.初始化log系统2.解析/init.rc和/init.%hardware%.rc文件??3. 执行 early-init action in the two files parsed in step 2.??4. 设备初始化,例如:在 /dev 下面创建所有设备节点,下载 firmwares.??5.初始化属性服务器,Actually the property system is working as a share memory.Logically it looks like a registry under Windows system.??6. 执行 init action in the two files parsed in step 2.??7. 开启 属性服务。8. 执行 early-boot and boot actions in the two files parsed in step 2.??9. 执行 Execute property action in the two files parsed in step 2.??10.进入一个无限循环 to wait for device/property set/child process exit events.例如,如果SD卡被插入,init会收到一个设备插入事件,它会为这个设备创建节点。系统中比较重要的进程都是由init来fork的,所以如果他们他谁崩溃了,那么init 将会收到一个 SIGCHLD 信号,把这个信号转化为子进程退出事件, 所以在loop中,init 会操作进程退出事件并且执行*.rc 文件中定义的命令。例如,在init.rc中,因为有:service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server? ? socket zygote stream 666? ? onrestart write /sys/android_power/request_state wake? ? onrestart write /sys/power/state on所以,如果zygote因为启动某些服务导致异常退出后,init将会重新去启动它。int main(int argc, char **argv){? ? ...? ? //需要在后面的程序中看打印信息的话,需要屏蔽open_devnull_stdio()函数? ? open_devnull_stdio();? ? ...? ? //初始化log系统? ? log_init();? ? //解析/init.rc和/init.%hardware%.rc文件?? ? parse_config_file(/init.rc);? ? ...? ? snprintf(tmp, sizeof(tmp), /init.%s.rc, hardware);? ? parse_config_file(tmp);? ? ...? ? //执行 early-init action
您可能关注的文档
- AD活動目录综合实例实验.doc
- AE報错AE中的各种报错提示的原因和解决方案.docx
- AE利用流體插件turbulence2D制作水墨字体消散效果教程.doc
- AE插件的安裝及注册方法.doc
- AE模板中查找及替換素材图文教程.doc
- AE渲染輸出详细设置教程.doc
- AE的內置调整参数滤镜完全解析.doc
- AE機二级C语言上机考试操作步骤及流程.doc
- AE菜單中英文对照表.doc
- AE認证考试题库总汇.doc
- 广安市人力资源服务中心招收3名就业见习人员模拟试卷及参考答案详解1套.docx
- 广安市邻水县2025年上半年“小平故里英才计划”引进急需紧缺专业人才(27人)考前自测高频考点模拟试.docx
- 广安发展建设集团有限公司2025年第二批公开招聘5名工作人员考前自测高频考点模拟试题附答案详解.docx
- 广安发展建设集团有限公司2025年第二批公开招聘5名工作人员考前自测高频考点模拟试题及答案详解一套.docx
- 广安发展建设集团有限公司2025年第二批公开招聘5名工作人员模拟试卷及完整答案详解1套.docx
- 广安发展建设集团有限公司2025年第二批公开招聘5名工作人员考前自测高频考点模拟试题及答案详解1套.docx
- 广安发展建设集团有限公司2025年第二批公开招聘5名工作人员考前自测高频考点模拟试题及完整答案详解1.docx
- 广安发展建设集团有限公司2025年第二批公开招聘5名工作人员模拟试卷及参考答案详解一套.docx
- 广安市人力资源服务中心招收3名就业见习人员模拟试卷参考答案详解.docx
- 巴彦淖尔城市发展投资(集团)有限公司公开招聘的考前自测高频考点模拟试题带答案详解.docx
文档评论(0)