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

来源:互联网 发布:淘宝黑名单在哪里设置 编辑:程序博客网 时间:2024/05/17 23:09

转载: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了)

原创粉丝点击