UEFI Boot Flow

最近在看關於 UEFI的文章
就自己做了一個整理
以後可以再翻出來看




1. SEC Phase Security

在開機後,系統執行第一個指令的時後,就代表已經進入SEC Phase。

這時 Memory還沒有被 Initialize,還不能被使用,所以在SEC Phase 主要的工作就是建立暫時的Memory(Cache as RAM),

像是Processor的 Cache 或是 System Static Ram (SRAM)。這樣做的目地是因為C語言需要Stack放code

並使CPU進入 Protect Mode。

而且 SEC Phase會知道這些早期的Memory 被mapping到的 Address 及 BFV (Boot Firmware Volume) Address

2. PEI PhasePre-EFI Initialization Environment

PEI Phase最主要是做Memory Initialize 以及其他必要的CPU 、 Chipset等的Initialize。

因為這些code 都是沒有經過壓縮過的,所以要愈精簡愈好。

另外需要做的重要的事是,確認 System 的 Boot Path,Initialize 及

描述 最小化的 DXE Foundation 以及 DXE Architecture Protocol的System RAM 及 Firmware Volume (FV)。

3. DXE PhaseDriver Execution Environment

絕大部份的工作,都是在這個Phase完成,是EFI最重要的部份。

4. BDS PhaseBoot Device Select

BDS Phase 的主要工作是

BDS阶段的主要工作是以下三項:

1. Initialize console devices base on the ConIn, ConOut and StdErr environment variables.

(初始化根據環境變數Conln 、ConOut 以及 StdErr 的 Console Devices)

2. Attempt to load all drivers listed in the Driver#### and DriverOrder environment variables.

(試著去Load 列在環境變數 Driver####及 DriverOrder上的Driver)

3. Attempt to boot from the boot selections list in the Boot#### and BootOrder environment variables.

(試著去Boot在環境變數Boot####以及BootOrder上的 Selections Device)

在這個時後使用者可以看見選單並選擇Boot Device

5. TSL Transient System Load

短暫的系統戴入,這時後已經由OS接手準備開機。可選擇UEFI Shell 進行一些基本診斷及維護。

6. RT PhaseRunTime

當OS Call Boot Service ExitBootService()後,系統會進入RT Phase。這時,DXE Foundation 以及

Boot Service都會終止,只有EFI Runtime Service 以及 EFI System Table還能被使用。

7. ALAfter Life

當OS Call EFI Runtime Service ResetSystem()或是呼叫了 ACPI Sleep State,系統會進入AL Phase。

SMI 及 NMI的Event 觸發也可以使系統進入AL Phase,在Server及WorkStation上比較常見。

在之後會再放上各個Phase比較詳細的解說。

留言