android5.1 init对rc文件解析执行顺序
android5.1 init對(duì)rc文件解析執(zhí)行順序
?
備注,下面on對(duì)應(yīng)的section下面內(nèi)容的數(shù)字,代表內(nèi)核啟動(dòng)log所在的行數(shù)
比如我們的init.rc文件部分內(nèi)容如下:
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對(duì)于高通平臺(tái)是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內(nèi)容
on init
??write /sys/module/qpnp_rtc/parameters/poweron_alarm 1-----------2199
?
所以可以看出,有幾個(gè)規(guī)律:
(1)??不同的rc文件
init在解析rc文件的時(shí)候,會(huì)先執(zhí)行init.rc文件的內(nèi)容,然后才是執(zhí)行它import的其他rc文件,其他先import進(jìn)來(lái)的會(huì)先執(zhí)行
比如init.rc:
Import /init.A.rc
Import /init.B.rc
就會(huì)先執(zhí)行A.rc,然后才是B.rc,但不是執(zhí)行完A.rc所有的內(nèi)容,然后才是執(zhí)行B.rc的內(nèi)容,而是按照先執(zhí)行完A.rc中init section,然后再執(zhí)行B.rc的init section
?
(2)??同一個(gè)rc文件,比如init.rc文件,依次執(zhí)行early-init、init、late-init等部分
on early-init
??? …
??? #create mountpoints
mkdir /mnt 0775root system---------內(nèi)核啟動(dòng)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之間執(zhí)行其他rc的init的section了)
…
?
總結(jié)
以上是生活随笔為你收集整理的android5.1 init对rc文件解析执行顺序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 生活、教育等相关概要
- 下一篇: Android启动过程深入解析