android5.1 init对rc文件解析执行顺序
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了)
…
?
總結
以上是生活随笔為你收集整理的android5.1 init对rc文件解析执行顺序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 生活、教育等相关概要
- 下一篇: Android启动过程深入解析