android5.1 init对rc文件解析执行顺序

转载:http://blog.csdn.net/weijory/article/details/77193813


备注,下面on对应的section下面内容的数字,代表内核启动log所在的行数

比如我们的init.rc文件部分内容如下:
import /init.environ.rc

import /init.usb.rc

import/init.${ro.hardware}.rc

import /init.${ro.zygote}.rc

import /init.trace.rc

 

on early-init

    …

   mkdir /mnt 0775 root system

 

on init

sysclktz 0

symlink/system/etc /etc------------1975

chmod 0440/sys/fs/pstore/console-ramoops--------------------2125

 

 

 

上面的ro.hardware对于高通平台是qcom,也就是import /init.qcom.rc,此文件位于\device\qcom\common\rootdir\etc目录下,接着看init.qcom.rc

import init.qcom.usb.rc

import init.target.rc

import init.qcom.factory.rc

 

on early-init

    mountdebugfs debugfs /sys/kernel/debug

 

on init

    mkdir/persist 0771 system system----------2153

symlink/mnt/shell/emulated/0 /storage/emulated/legacy-------2189

 

接着看init.target.rc内容

on init

  write /sys/module/qpnp_rtc/parameters/poweron_alarm 1-----------2199

 

所以可以看出,有几个规律:

(1)  不同的rc文件

init在解析rc文件的时候,会先执行init.rc文件的内容,然后才是执行它import的其他rc文件,其他先import进来的会先执行

比如init.rc:

Import /init.A.rc

Import /init.B.rc

就会先执行A.rc,然后才是B.rc,但不是执行完A.rc所有的内容,然后才是执行B.rc的内容,而是按照先执行完A.rc中init section,然后再执行B.rc的init section

 

(2)  同一个rc文件,比如init.rc文件,依次执行early-init、init、late-init等部分

on early-init

    …

    #create mountpoints

mkdir /mnt 0775root system---------内核启动log里找不到

on init

    #Backward compatibility

symlink/system/etc /etc--------1975

chmod 0440/sys/fs/pstore/console-ramoops--------------------2125

 

# Mount filesystems and start core systemservices.

on late-init

trigger early-fs---------------------------2217(2125~2217之间执行其他rc的init的section了)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值