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

讀者留言 (0)

留言功能維護中。將於近日重新開放。

連絡作者

Jollen Chen,Moko365(仕橙3G教室)講師,熱愛研究 Linux 與 Android 技術。曾為 Motorola、HTC、Foxconn、LG、OPPO、騰迅、廣達電腦、緯創、仁寶等超過 50 家企業講授課程。目前在 MokoVersity 擔任軟體工程師,撰寫 Node.js 程式,也在幾家科技廠兼任 Android Framework 研發顧問。您可透過電子郵件 <jollen (at) jollen (dot) org> 或這裡與我連絡。