android init进程启动的大致流程

        参考Android源码的版本:4.0.4;init源码目录:system/core/init/;解析init脚本代码:init_parser.c;init脚本支持的关键字:keywords.h;

        关于init.rc脚本相关的介绍可以参考system/core/init/readme.txt文件;纵观init源码,会发现init进程在启动的时候,会执行init脚本和一些内置的action。action定义为on <action name>,由command组成;执行action的时候,其实执行的是command;init脚本中的另一个支持的service节,本质上只是定义了服务,服务的启动也是通过action来启动的。init启动过程分为两步:init过程和boot过程;init过程是做一些全局的初始化,boot过程是为后面的服务做准备。        

        init进程的启动过程大致如下:

  1. 添加文件/dev/.booting以表示init正在启动中,进入init过程
  2. 初始化stdio和log
  3. 解析init脚本
  4. 执行名称为early-init的action
  5. 执行一些内置的action:wait_for_coldboot_done、property_init、keychord_init、console_init、set_init_properties
  6. 执行名称为init的action
  7. 执行一些内置的action:property_service_init、signal_init、check_startup。init过程结束,check_startup会删除文件/dev/.booting
  8. 执行名称为early-boot的action
  9. 执行名称为boot的action,boot过程结束。值得注意的是,在这个action的最后,会通过class_start等语句(比如:class_start core)来执行对应class的service,从而完成对service的启动。
  10. 执行内置的action:queue_propety_triggers
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值