Google Android bootloader 和 Google Android OS 之間的關係及架構
最近因為有些專案 ,都是用到 Google Android 作業系統。雖然 Google Android 作業系統出來很久了。但是對於不常使用 Google Android 作業系統的人,是不清楚 Google Android bootloader 和 Google Android OS 之間的關係及架構?所以就花點時間整理一下資料。
前言:一個簡單的譬喻
您可以將 Bootloader 和 Android OS 的關係想像成電腦的 BIOS/UEFI 和 Windows/macOS 作業系統的關係,或者更生活化一點:
Bootloader (啟動載入程式):就像是汽車的點火系統和安全檢查電腦。它的工作很單純但至關重要:確認所有基本零件(引擎、電路)都正常,然後轉動鑰匙啟動引擎。
Android OS (安卓作業系統):就像是汽車的引擎、變速箱、儀表板和整個駕駛艙。一旦點火系統完成工作,引擎(作業系統核心)就會接手,讓您能真正地開車、聽音樂、開空調。
點火系統(Bootloader)只在啟動的瞬間工作,一旦引擎(OS)運轉起來,它的任務就結束了。
詳細說明
1. 什麼是 Android Bootloader?
Bootloader 是一段在 Android OS 核心(Kernel)啟動之前執行的低階程式碼。它被燒錄在裝置的一個特定記憶體分區(通常是 eMMC 或 UFS 晶片上的一個受保護區域),是手機通電後,除了晶片內部固化的 Boot ROM 之外,最先執行的軟體之一。
主要職責:
硬體初始化 (Hardware Initialization):檢查並初始化最核心的硬體,例如處理器(CPU)、記憶體(RAM)、快閃記憶體(Storage)等,為載入作業系統準備好最基本的運行環境。
安全性驗證 (Security Verification):這是 Bootloader 最重要的功能之一。它會檢查接下來要載入的分割區(如
boot、system、vendor分割區)的數位簽章是否正確且來自受信任的來源(通常是裝置製造商)。如果驗證失敗(例如,您刷了一個未經簽名的第三方 ROM),一個安全的 Bootloader 會拒絕啟動,以保護裝置和資料安全。這就是所謂的「安全啟動鏈」(Chain of Trust)。載入作業系統核心 (Loading the OS Kernel):當硬體準備好且軟體驗證通過後,Bootloader 會從
boot分割區找到 Android 的 Linux 核心(Kernel)和 Ramdisk(一個小型的初始檔案系統),將它們載入到 RAM 中。移交控制權 (Handing Over Control):將核心載入到記憶體後,Bootloader 就會將 CPU 的控制權完全交給 Kernel。從這一刻起,Bootloader 的任務就完成了,接下來就是 Android OS 的啟動流程。
提供特殊模式 (Providing Special Modes):Bootloader 也負責偵測使用者是否按下了特殊的組合鍵(例如
音量下 + 電源鍵),以進入Fastboot Mode或Download Mode。在這些模式下,使用者可以透過電腦對手機進行刷機、解鎖或診斷。
2. 什麼是 Android OS?
Android OS 是我們每天在手機上互動的那個完整、複雜的作業系統。它建立在 Linux 核心之上,包含了一整套完整的軟體堆疊,從底層的硬體抽象層(HAL)到應用程式框架,再到我們看到的應用程式(App)。
主要組成部分 (由下至上):
Linux 核心 (Linux Kernel):作業系統的心臟。負責處理程序管理、記憶體管理、裝置驅動程式(如螢幕、相機、Wi-Fi)等最底層的任務。它是 Bootloader 交接工作的對象。
硬體抽象層 (HAL - Hardware Abstraction Layer):提供一個標準化的介面,讓上層的 Android 框架可以跟底層的硬體驅動程式溝通,而不需要知道硬體的具體實現細節。
Android 執行環境 (ART - Android Runtime):負責執行 Android 應用程式的程式碼。
原生 C/C++ 函式庫 (Native C/C++ Libraries):提供許多核心功能,如 SQLite 資料庫、WebKit 瀏覽器引擎、SSL 安全連線等。
Java API 框架 (Java API Framework):開發者用來開發 App 的工具集,提供了視窗管理、活動管理、通知系統等功能。
系統應用程式 (System Apps):手機一出廠就內建的應用程式,如電話、聯絡人、設定、相機等。
3. 架構與啟動流程
整個啟動流程是一個線性的、環環相扣的信任鏈 (Chain of Trust):
開機 (Power On)
Boot ROM (晶片內固化程式):執行晶片製造商寫死的程式碼,驗證並載入 Bootloader。
Bootloader:
初始化基本硬體。
驗證
boot分割區的簽章。若通過,將 Linux Kernel 和 Ramdisk 載入記憶體。
將控制權交給 Linux Kernel。
Android OS:
Linux Kernel 啟動,並掛載根檔案系統。
Kernel 啟動第一個使用者空間的行程
init。init行程開始啟動 Android 的所有服務,如 Zygote(應用程式的孵化器)、SurfaceFlinger(畫面管理器)、媒體服務等。最後,啟動主畫面(Launcher),使用者看到手機桌面,啟動完成。
.png)


.png)

.png)


留言
張貼留言