Android 9 0 init 啟動流程

2021-10-22 15:45:04 字數 2246 閱讀 3258

android啟動流程跟 linux啟動類似,大致分為如下五個階段。

1.開機上電,載入固化的rom。

2.載入bootloader,拉起android os。

3.載入uboot,初始外設,引導kernel啟動等。

4.啟動kernel,載入驅動,硬體。

5.啟動android,掛載分割槽,載入驅動、服務,init程序等。

android 啟動過程

由於水平有限,無法深入了理解驅動層**,本文主要對 android上層啟動流程進行分析。

uboot啟動kernel完成系統設定後,會首先在系統中尋找init.rc檔案,並啟動init程序。

android 啟動分析

init程序是android啟動的第乙個程序,程序號為1,是android的系統啟動的核心程序,主要用來建立zygote、屬性服務等。 init.cpp 中的main 函式,是init程序的入口函式,原始碼主要存在\system\core\init目錄下。

常見init.***.rc 程序

init 程序主要作用

/system/core/init 部分內容

1.建立掛載啟動所需的檔案系統(tmpfs、 devpts、 proc、 sysfs、 selinuxfs等)。init.rc 指令碼配置檔案,並啟動zygote 程序。

基於mtk 平台 init.cpp 主要作用

init.rc 路徑 一般在system/core/rootdir下,init指令碼是有android 初始化語言編寫。

1.android init language 語句型別

init 程序分析

五、init 程序分析

init 程序分析

init 解析指令碼分析

init 事件列表

init 事件結構

init 程序解析和執行

啟動指令碼解析結果

整理事件列表

init 構建事件

service 事件分類

init 程序執行命令和啟動服務

init程序處理訊息事件

1.根據shell或者系統中訊息設定系統prop

2. 守護系統服務,如果服務退出,重啟退出的服務。

init守護程序

init 處理 prop 訊息分析

init 守護服務分析

zygote 的 classname 為main.init.rc檔案配置**如下:

... ... 

on nonencrypted

class_start main

class_start late_start

on property:sys.init_log_level=*

loglevel $

... ...

啟動分析小結

logstash 生成 init 指令碼後台啟動

我的系統是centos6,這裡說一下6的使用方法,7類似,具體方法如下 cd usr share logstash bin system install help usage system install optionsfile startuptype version note these argu...

Android 9 0 sdCard檔案讀寫

目錄 背景描述 解決方案 處理過程中遇到的問題 中需要替換的點 結尾 9.0之後,google合入一筆patch,去掉了write media storage許可權中的sdcard rw。導致之前的檔案讀寫方式無法對sdcard生效 documentfile 申請目錄許可權 private void...

Android 9 0系統相容適配

android 9.0要求使用安全的網路訪問,如果使用http請求會報錯。解決方案 在 res xml 目錄下新增乙個network security config.xml 檔案 cleartexttrafficpermitted true network security config andro...