android是基於linux內核的,所以android的init進程是android應用程序的第1個進程。下面簡要說明一下該進程的處理流程,後續還要進一步細化。linux
1.註冊處理子進程的信號處理函數android
2.在根目錄下建立系統目錄以及mount必要的文件系統socket
3.在/dev目錄下建立null和kmsg設備節點函數
4.解析/init.rc文件ui
5.解析/proc/cmdline文件獲取必要的參數,如:qmeu, console, bootloader等隊列
6.經過分析/proc/cpuinfo獲取硬件類型,從而進一步解析/init.硬件類型.rc文件進程
7.執行early-init部分的服務cmd
8.根據netlink(/sys/block,/sys/class,/sys/devices)在/dev目錄下生成設備節點虛擬機
9.讀取/default.prop文件描述的屬性it
10.對於啓動內核的cmdline中有console的狀況則在/dev/目錄下建立該設備節點
11.在屏幕上顯示「ANDROID」字樣(android虛擬機上能看到)
12.進一步解析/proc/cmdline文件且設置對應的屬性和值
13.根據第5步驟分析的參數設置指定的屬性和值
14.執行init部分的服務
15.讀取系統屬性文件且建立socket監聽
16.建立本地socket監聽退出的子進程
17.執行early-boot和boot部分的服務
18.執行全部屬性對應的服務
19.執行全部的action隊列
20.從新啓動須要啓動的進程
21.監聽子進程退出文件描述符、屬性socket文件描述符、設備變化文件描述符,當對應的文件描述符有變化則調用對應的處理函數處理
22.從新回到第19步