Jollen 的 Android Booting 解析, #1: 整體開機流程

jollen 發表於 July 28, 2010 2:20 PM

Android 開機流程,是一個很值得詳細討論的主題;近期,也正在進行相關的技術工作,因此簡單整理一些相關資料,和大家分享。了解「整體開機流程」,是最重要的第一門課。我們將開機劃分為三大階段:

1. OS-Level,由 Bootloader 載入 Linux kernel 後,開始進行 kernel 本身的初始化,並載入 built-in 的驅動程式。Kernel 完成開機後,載入 init process,切換至 user-space 後,結束 kernel 的循序過程(sequence),進入排程模式(process scheduling)。

2. Android-Level,由 init process 開始,讀取 init.rc 並啟動重要的外部程式,例如:servicemanager、Zygote 以及 SystemServer。

3. Zygote-Mode,Zygote 啟動完 SystemServer 後,進入 Zygote Mode,在 Socket 等候命令。隨後,使用者將看到一個桌面環境(Home Screen)。桌面環境由一個名為 [Launcher] 的應用程式負責提供。

整體開機流程如圖一所示。


圖一:Android 整體開機流程圖

初探 Android 開機技術的朋友,建議可以先行閱讀 init.rc 檔案,並了解 Android 的 init.rc 語法。Android init language 可參考 [PDK] 的說明。

延伸閱讀

2010.04.24:
Jollen 的 Android 系統管理雜記, #3: init.rc 與 setprop

Jollen's Blog 使用 Github issues 與讀者交流討論。請點擊上方的文章專屬 issue,或 open a new issue

您可透過電子郵件 jollen@jollen.org,或是 Linkedin 與我連絡。更歡迎使用微信,請搜尋 WeChat ID:jollentw