android系統啟動簡述

2021-10-04 20:37:56 字數 889 閱讀 2613

下面我將用最簡單的話來描述這個過程:

1.bootloader主要是在系統載入前,初始化硬體裝置,建立記憶體空間的映像圖,為最終呼叫系統核心準備好環境,常見的引導程式就是uboot,uboot的第一條指令從cpu/arm920t/start.s檔案開始,它最終跳轉到核心。(若使用者在啟動剛開始按了指定的recovery組合鍵,系統會直接進入recovery模式, 若啟動過程中使用者沒有按下不論什麼組合鍵,bootloader會讀取位於misc分割槽的啟動控制資訊塊bcb。它是乙個結構體,存放著啟動命令command,依據不同的命令,系統又能夠進入三種不同的啟動模式:mainsystem、recovery、bootloader。)

2.跳轉到核心,首先啟動的是idle程序,程序號為0,它是用組合語言寫的,對應檔案是kernelroots/arch/arm64/kernel/head.s。核心開始啟動時,執行設定快取、被保護儲存器、計畫列表,載入驅動等任務,當核心完成系統設定,它會在系統檔案中尋找」init」檔案,即啟動使用者空間的第乙個程序:init程序。核心啟動還有乙個重要的任務就是啟動了kthreadd程序,它是第乙個核心空間第乙個程序,kthreadd程序是linux系統核心管家,所有的核心執行緒都是直接或間接以它為父程序

3.init是第乙個使用者程序,可以說它是root程序或者說有程序的父程序,init程序主要有兩個責任:

a:掛載目錄,比如/sys、/dev、/proc

b:解析init.rc指令碼

值得注意的是解析init.rc後,init程序會根據規則啟動zygote程序。

4.zygote 程序是系統服務,可以說是android系統的關鍵。在初始化時會啟動虛擬機器,並載入一些系統資源,最後fork處子程序system_server

5.system_server程序啟動了各個系統服務,為android系統應用框架提供執行環境。

Android系統啟動簡述

1 bootloader 引導載入器 執行到一定階段後,將載入並啟動linux核心。準備啟動核心時,bootloader需要傳入核心使用的啟動引數。檢視啟動引數可使用下面的命令 cat proc cmdline root dev nfs nfsroot 192.168.6.158 home hous...

Android系統啟動

rom是唯讀儲存器 read only memory 的簡稱,是一種只能讀出事先所存資料的固態半導體儲存器。其特性是一旦儲存資料就無法再將之改變或刪除。通常用在不需經常變更資料的電子或電腦系統中,並且資料不會因為電源關閉而消失。bootloader 參考計算的bios,系統啟動載入器。linux k...

Android系統啟動過程

android系統啟動過程由以下幾個大步驟組成 bootrom,bootloader,linux kernel,android啟動 bootrom沒有源 bootloader 主要在 bootable下,包括對normal startup,及recovery mode,fastboot mode的處...