F.2. 開機過程的詳細資訊

開機過程一開始會因所使用的硬體平台而有所不同。然而,當開機載入程式找到核心並將其載入後,所有電腦架構的預設開機過程將會同化。本章將針對 x86 系統架構來進行討論。

F.2.1. 韌體介面

F.2.1.1. 基於 BIOS 的 x86 系統

Basic Input/Output System(BIOS)是個韌體介面,它並不僅是控制開機過程的第一階段,同時也提供了最低層的週邊裝置介面。在包含了 BIOS 的 x86 系統上,此程式會被設為唯讀、常駐記憶,並且能夠隨時使用。當系統啟動後,處理器會在系統記憶體尾端搜尋 BIOS,並執行它。
在載入之後,BIOS 會檢測系統,偵測、檢查週邊裝置,並尋找可用來啟動系統的裝置。通常,它會先檢測磁碟機與光碟機中,是否有可用來開機的磁片或光碟片,如果偵測不到才會開始檢測系統硬碟。大部分的情況下,在開機時磁碟搜尋的順序是由 BIOS 中的設定來控制的,它會自行在主 IDE 匯流排上搜尋主 IDE 裝置。接著 BIOS 會將位於主磁區的程式載入記憶體中,稱之為主開機紀錄MBR。MBR 的大小只有 512 位元組,含有用來啟動電腦的編碼指令(稱之為開機載入程式),以及分割表。在 BIOS 找到並將開機載入程式載入記憶體後,開機載入程式便會取得開機過程的控制權。
開機載入程式的第一階段為在 MBR 上的小型二進位編碼。其唯一的工作即找出第二階段的開機載入程式(GRUB),並將第一階段載入記憶體中。

F.2.1.2. 基於 UEFI 的 x86 系統

Unified Extensible Firmware Interface(UEFI)的設計如同 BIOS,用來控制開機程序(透過 boot services)並在系統韌體以及作業系統之間(透過 runtime services)提供一個介面。和 BIOS 不同的是,它擁有自己的架構、無須依賴 CPU,並且擁有自己的裝置驅動程式。UEFI 能掛載分割區,並讀取特定檔案系統。
當一部搭配了 UEFI 的 x86 系統啟動時,介面會搜尋系統儲存裝置,以找尋一個標籤為特定 globally unique identifier(GUID),並且被標記為 EFI System Partition(ESP)的分割區。此分割區包含了為 EFI 架構編譯的應用程式,並且可能包含了作業系統與工具軟體的開機載入程式。UEFI 系統包含了一個 EFI boot manager,它可藉由預設配置來啟動一部系統,或是提示使用者選擇欲啟動的作業系統。當(手動或自動)選擇了開機載入程式後,UEFI 會將它讀入記憶體中,並授予其開機程序的控制權。