您的位置:首页 > 移动开发 > Android开发

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

2017-03-31 18:09 337 查看
android5.1 init对rc文件解析执行顺序 
备注,下面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了)

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: