歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android init 進程 init.rc init.*.rc

Android init 進程 init.rc init.*.rc

日期:2017/3/1 10:03:19   编辑:Linux編程

1. init 進程是Android 啟動後由內核啟動的第一用戶級進程,init 進程是系統的守護進程,init進程有四個作用依次為:子進程終止處理,生成設備驅動節點,分析及運行init.rc 文件和init.*.rc 文件, 初始化屬性服務。init 進程源碼位於android_root_dir/system/core/init/init.c 內。

2.init 進程執行流程:

注冊與子進程相關的SIGCHLD信號處理器,

創建並掛載啟動所需的文件目錄,

解析init.rc 文件,

初始化qemu設備,設置模擬器環境,

解析init.*.rc 文件,

創建進程中已經定義好的設備節點文件,生成靜態設備節點,

初始化屬性服務,

顯示logo 在LCD屏幕上,只支持rle565格式的圖片,

設置系統初始值,

執行與action_list 相關的init區塊的命令,

啟動屬性服務,

創建套接字,因為子進程若要修改屬性值必須向Init申請,故生成“dev/socket/property_service" 套接字,以接收申請,

執行與action_list 相關的init區塊的命令,

設置事件處理循環的監聽事件,

循環處理事件,

2. init.rc 是init進程啟動後執行的啟動腳本,定義android系統通用的環境設置及與記錄進程相關設置,Init.*.rc 是定義android 在不同平台下的特定進程和環境設置,與Init.rc類似。init.rc 主要包括以On開頭的 action list和以service開頭的service list, action list 創建所需目錄,指定特定文件的權限,service list 記錄初始化程序需要啟動的程序。


on init 部分:設置環境變量,掛載文件系統,

主要設置根文件系統目錄,以及編譯時所需的庫目錄, android 采用NAND FLASH 所以掛載文件系統格式為yaffs2 , 主要掛載 /system /data 兩個目錄,

/system/bin 存放shell 命令集, app- 基本應用, framework- java lib, lib- bionic lib , /data 及其子目錄存放user data.


on boot 部分:設置應用程序終止條件以及驅動目錄和文件權限等,

在應用程序終止條件中為各應用指定了OOM 的調整值,值越大,終止優先級越高

service部分 記錄 init 進程啟動的進程,

一般是一次性程序或運行在後台的deamon 進程

Copyright © Linux教程網 All Rights Reserved