概述
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,此文件位于deviceqcomcommonrootdiretc目录下,接着看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了)
…
最后
以上就是兴奋凉面为你收集整理的android5.1 init对rc文件解析执行顺序的全部内容,希望文章能够帮你解决android5.1 init对rc文件解析执行顺序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复