什麼是 Google Android Bootloader?

最近因為有些專案 ,都是用到 Google Android 作業系統。雖然 Google Android 作業系統出來很久了。但是對於不常使用 Google Android 作業系統的人,是不清楚 什麼是 Android Bootloader?所以就花點時間整理一下資料。

簡單來說,Bootloader(引導加載程序)是 Android 設備上最先啟動的一段程式碼。它在您按下電源鍵後,作業系統(Android OS)核心(Kernel)啟動之前運行。它的主要工作是進行硬體初始化,並載入作業系統核心到記憶體中,為整個 Android 系統的啟動做好準備。您可以將它想像成電腦的 BIOS/UEFI。沒有它,您的手機或平板就只是一塊沒有靈魂的硬體。


Android Bootloader 詳細說明表格如下:


總結


Bootloader 是 Android 系統的基石,它確保了硬體的正常運作以及作業系統的安全啟動。

對於普通使用者來說,並不需要關心 Bootloader 的存在,只需享受穩定安全的官方系統即可。
然而,對於喜歡客製化、探索手機潛能的進階使用者而言,"解鎖 Bootloader" 則是玩機的第一步,它開啟了通往刷機、Root 等無限可能的大門,但同時也伴隨著失去保固和安全性降低的風險。在決定解鎖前,務必了解其背後的意義與後果。

Android Bootloader 架構圖


在 Android 系統中,Bootloader 扮演著至關重要的角色,它是一個多階段的啟動程序,確保設備從硬體層面到作業系統層面都能安全、正確地啟動。以下是對此架構圖的詳細說明:

架構圖說明

  1. Device Power On (設備開機)

    • 這是整個流程的起點,當您按下手機的電源按鈕時。

  1. Primary Bootloader (PBL) / Mask ROM (主要引導加載程序 / 掩模 ROM)

    • 晶片廠商的初始程式碼: 這是燒錄在 SoC (System on a Chip) 內部 ROM 中的第一段程式碼,由晶片製造商 (如 Qualcomm, MediaTek) 編寫。

    • 不可變動 (Immutable): 這部分程式碼是不可修改的,提供了設備啟動的最初信任根。

    • 主要功能: 它會執行初步的硬體檢查,並載入第二階段的 Bootloader 到 RAM 中執行。

  1. Secondary Bootloader (SBL) / Device Bootloader (次要引導加載程序 / 設備引導加載程序)

  • 這是由設備製造商 (如 Samsung, Google, Xiaomi) 編寫和定制的部分,功能更為複雜。

  • 信任鏈驗證 (Verify Chain of Trust): 這是 SBL 最關鍵的功能之一。它會使用加密雜湊 (cryptographic hashes) 和數位簽章 (digital signatures) 來驗證接下來要載入的軟體(如 Android Kernel、Recovery 模式)是否是官方、未被篡改的。

    • Locked 狀態: 如果 Bootloader 處於鎖定狀態,它只允許經過官方簽章驗證的軟體啟動。任何非官方的修改都會被拒絕,系統可能無法啟動或提示警告。

    • Unlocked 狀態: 如果 Bootloader 已經解鎖,這個驗證過程會被跳過或放鬆,允許刷入自定義的 ROM、Recovery 或取得 Root 權限。

  • 硬體初始化 (Hardware Initialization - POST): SBL 會對設備的各個硬體組件 (如記憶體、儲存、螢幕控制器等) 進行更詳細的初始化,為作業系統的運行做好準備。

  • 載入並驗證 Android Kernel (boot.img): SBL 會從儲存空間中找到 boot.img 檔案 (其中包含 Android Kernel 和 Ramdisk),將其載入到 RAM 中,並在鎖定狀態下驗證其完整性。

  • 是否進入 Recovery 模式 (Yes/No Recovery Mode): SBL 會檢查使用者是否按下了進入 Recovery 模式的組合鍵。


    • Yes: 如果需要進入 Recovery 模式 (例如 TWRP, AOSP Recovery),SBL 會載入並啟動 Recovery OS。

    • No: 如果不需要,它將繼續啟動 Android Kernel。

  • Hand-off to Kernel (移交給核心): 當所有檢查和載入工作完成後,SBL 會將控制權移交給已經載入到 RAM 中的 Android Kernel。

  1. Android Kernel & Ramdisk (Android 核心與 Ramdisk)

  • Android Kernel: 這是 Android 作業系統的核心,負責管理系統資源、行程、記憶體、檔案系統和設備驅動程式。

  • Ramdisk: 是一個位於 RAM 中的小型檔案系統,包含 init 程式和一些初始腳本,用於啟動 Android 的第一個使用者空間行程。

  • 此階段,Kernel 會繼續更深層次的硬體初始化,並啟動第一個使用者空間行程 init

  1. Android OS Fully Loaded (Android 作業系統完全載入)

  • Init Process: init 程式會根據 init.rc 等腳本文件,啟動 Zygote、Dalvik/ART 虛擬機器、系統服務等,逐步構建整個 Android 環境。

  • 最終,Android 使用者介面出現,設備完全可


留言

熱門文章