常見縮寫及描述:
縮略詞全名
描述uefi
unified extensible firmware inte***ce
統一的可擴充套件韌體介面
bsboot services
啟動服務
rtruntime service
執行時服務
bios
basic input output system
基本輸入輸出系統
1 sec階段
sec(security phase)階段是平台初始化的第乙個階段,計算機系統加電後進入這個階段。功能上說,它執行以下四種任務:
如下資訊作為引數傳遞戈pei的入口函式:
2 pei階段
pei(pre-efi initialization)階段, 其主要功能是為dxe 準備執行環境,將需要傳遞到dxe 的資訊組成hob(handoff block)列表,最終將控制權轉交到dxe 手中。
uefi 的乙個重要特點是其模組化的設計。模組載入記憶體後生成image。image 的入口函式為_moduleentrypoint,pei 也是乙個模組。
3 dxe階段
dxe(driver execution environment)階段執行大部分系統初始化工作,進入此階段時,記憶體已經可以被完全使用,因而此階段可以進行大量的複雜工作
4 bds階段
bds(boot device selection)的主要功能是執行啟動策略,其主要功能包括:
5 tsl階段
tsl(transient system load)是作業系統載入器(os loader)執行的第一階段,
6 rt階段
系統進入rt(run time)階段後,系統的控制權從uefi 核心轉交到os loader 手中,
uefi 占用的各種資源被**到os loader,僅有uefi 執行時服務保留給os loader 和os
使用。隨著os loader 的執行,os 最終取得對系統的控制權。
7 al階段
在rt 階段,如果系統(硬體或軟體)遇到災難性錯誤,系統韌體需要提供錯誤處理和
災難恢復機制,這種機制執行在al(after life)階段。uefi 和uefi pi 標準都沒有定義此階段的行為和規範。
略(主要一些工具安裝以及編譯edk2, 後續有機會以現實環境為例描述)
標準應用程式工程模組是其他應用程式工程模組的基礎,也是uefi中常見的一種應用程式工程模組。每個工程模組由兩部分組成:工程檔案和原始檔。
.inf(module information file)檔案(#後面內容為注釋)。.inf 檔案是模組的工程檔案,其作用相當於makef ile 檔案或visual studio 的.proj 檔案,用於指導edk2 編譯工具自動編譯模組。
工程檔案分為很多個塊,每個塊以 「[塊名]」 開頭, 「[塊名]」 必須獨佔一行。
必須塊塊描述
[defines]
定義本模組的屬性及其他變數,這些變數可在工程檔案其他塊中引用
[sources]
列出本模組所有的原始檔及資源檔案
[packages]
列出本模組引用到的所有包的包宣告檔案,
可能引用到的資源包括標頭檔案,guid, protocol等這些資源都宣告在檔案 .dec中
[libraryclasses]
列出本模組要鏈結的庫模組
非必須塊
塊描述[protocols]
列出本模組用到的protocol
[guids]
列出本模組用到的guid
[buildoptions]
指定編譯和鏈結選項
.dec 檔案定義了公開的資料和介面,供其他模組使用。它包含了必需區塊[defines] 以及可選區塊[includes]、[libraryclasses]、[guids]、[protocols]、[ppis] 和[pcd] 幾個部分。
.dec檔案需要被呼叫模組.inf檔案所包含。
模組編譯生成 .efi 檔案, shell 中執行 .efi檔案時,shell首先用gbs->loadimage() 將 .efi 檔案載入到記憶體生成image 物件。然後呼叫gbs->startimage(image) 啟動這個image物件(efi 裝置路徑,命令引數,uefi環境變數 詳見efi_status efiapi internalshellexecutedevicepath ) 。 startimage 主要作用就是找出可執行程式映像(image)的入口函式並執行。,對應用程式來說,就是_moduleentrypoint 函式。進入_moduleentrypoint(配置在.inf塊中的入口函式 ) 後,控制權才轉交給應用程式(此處就是我們的 .efi)。
[defines]塊用於提供package的名稱、guid、版本號等資訊。
## /edk2/mdepkg/mdepkg.dec
[defines]
dec_specification = 0x00010005
package_name = mdepkg
package_uni_file = mdepkg.uni
package_guid = 1e73767f-8f52-4603-aeb4-f29b510b6766
package_version = 1.06
[includes]塊
列出本package提供的標頭檔案所在的目錄
## /edk2/mdepkg/mdepkg.dec
[includes]
include
[includes.ia32]
include/ia32
[includes.x64]
include/x64
.inf 用於編譯乙個模組, 而.dsc 檔案用於編譯乙個package,
參考文件: uefi原理與程式設計 戴正華 機械工業出版社
UEFI啟動與GPT分割槽
當系統首次引導或被重置時,處理器會執行bios中的一段 cpu會呼叫這個重置向量來啟動乙個位於rom中的已知位址程式。它會執行乙個機器自檢程式 post bios完成自檢後就從驅動器的第乙個扇區,主引導記錄 mbr 就位於第乙個扇區,bios將mbr裝入記憶體,執行,並將管理許可權交給mbr。mbr...
UEFI與MBR啟動的區別
bios mbr已經趨於淘汰,uefi gpt是大勢所趨 gpt是一種新型磁碟模式,與我們常用的mbr磁碟相比更穩定,自糾錯能力更強,一塊磁碟上主分割槽數量不受 4個的 限制,支援大於2t的總容量及大於2t的分割槽 幾乎沒有上限,最大支援到128個分割槽,分割槽大小支援到256tb xp系統無法識別...
UEFI啟動與Legacy啟動方式
bios basic input output system,基本輸入輸出系統 是一組固化到主機板rom晶元上的程式,儲存著計算機的基本輸入輸出程式 開機自檢程式和系統自啟動程式。主要功能是為計算機提供最底層的 最直接的硬控制。bios設定中,有兩種讓進入系統的方法,分別是uefi和legacy u...