legacy bios可以引導不同的作業系統,它定義了一套與作業系統無關的硬體介面,通過bios rom loader和 bootstrap loader去使能中斷和video, disk, keyboard服務進行通訊。
uefi是用來代替legacy bios的服務。除此之外,uefi還提供了其他的一些高階功能,具有網路功能,支援多核系統
hardware: 分兩類,一指的就是主機板上的物理元件;二指一些io裝置
bios: 是具備底層硬體所有知識的韌體層,一般以處理器體系架構中的reset vector的形式儲存在rom中。在該層中,主要確定了兩點,一是硬體(主機板)是如何工作的;二是硬體(主機板)上有多少元件。bios配置了硬體之後,載入和啟動os
uefi: 這一層主要是為其他軟體或者韌體建立服務的。該介面層提供了到硬體層的基本通訊,以便其他元件進行通訊以初始化和啟動系統中的各種裝置層
os loader: 作為ufei應用,會把被選擇的作業系統載入到記憶體中,傳送exitbootservice事件。該應用會呼叫uefi介面層提供的協議和服務,所以是不依賴底層硬體的
完成相同的任務:作為系統韌體,可選的rom以及作業系統之間的公共介面
相同的大小和效能壓力:
作業系統無關性: 可以與多種作業系統一起工作
framework(the intel platform innovation framework): 是intel依照uefi規範實現的一套框架
現在framework被uefi platform initialization(pi)規範取代了
uefi限於用於作業系統和系統韌體之間互動的程式設計介面
pi規範是一種韌體實現,旨在執行初始化平台所需的全部操作,從上電到包控制權移交給作業系統
uefi platform initialization(pi)規範定義:
pi規範定義了系統如何從開機進入uefi可行的狀態
pi還定義了未包含在uefi規範中的作業系統所需的其他特定於硬體平台的元素
uefi與作業系統對話時,uefi不處理記憶體初始化,恢復或平台初始化,這是platform firmware的角色。
pi規範適用於基礎架構,接收使用者構建的元件,然後定義它們如何正確互動去實現boot process
booting的過程並不是線性的,下圖是乙個簡單的例子。在這個圖中順序是從下到上工作的。
pi為引導過程定義了不同的階段。 pi為在該階段執行的模組定義服務和約束
每個階段都建立在前乙個階段之上,直到系統為作業系統做好準備為止
uefi接管以支援option rom和os
pei foundation包括sec和pei兩個階段
1. sec(security):
這是平台重置或上電後的第一階段,以確保韌體完整性完好。sec階段的**是依賴於平台和處理器的架構的。sec階段需要做的事情
- restart: sec負責處理所有平台重啟事件
- temporary memory store: sec負責建立乙個暫時的記憶體儲存
- root of trust: sec是系統信任的基礎,幷包含控制系統的初始**。 該**可以選擇對pei foundation進行身份驗證
- passing: sec負責將控制權交給pei foundation
2. pei(pre efi initialization):
pei階段的主要目的是進行必要的處理器,晶元組和平台配置,以初始化記憶體。pei階段是為下一階段建立基礎環境,使得dxe階段可能執行在c環境中。
reset: pei使用重置,init和機器檢查體系結構(mca)。 在ltanium上,重置進入呼叫韌體的處理器抽象層。 入口點涉及乙個init,它會重置處理器
start-up: pei階段是乙個很小的緊湊啟動**,因為它代替rom執行。 工具允許模組化驅動程式位於絕對位址。 位址是直接執行的,因為它們是通過使用構建工具來解析的
support: pei在即將推出的intel架構處理器中利用了新的架構支援,使您可以更接近c進行重置。由於c需要堆疊,因此需要可用的臨時記憶體
modules: 核心定位,驗證,排程和執行pei模組(peim)-在pei中執行並支援晶元組或平台功能的韌體**的模組化塊
publish: pei通過peim-to-peim介面發布自己的協議和呼叫虛擬介面。
goals: pei的主要目標是發現啟動模式。 啟動初始化主儲存器的模組; 發現並啟動dxe核心; 並將平台資訊傳達到dxe
在進入下一階段時,pei**就消失了。為了傳遞pei設定好的一些配置,使用了hob(hand-off blocks)機制。傳遞到下一階段的唯一內容是描述在pei階段完成的初始化的hob列表為什麼要使用peipei outline功能:pei』s initial memorypei core的最低要求是少量的臨時記憶體。 數量取決於處理器和晶元組。 對於ia32示例實現,您只需要8k。
bfv(boot firmware volume): 是儲存pei**的地方,也被稱為"recovery block"
fv(firmware volume): 韌體卷是組織到檔案系統中的韌體資料和/或**的邏輯儲存庫。 每個韌體卷均具有pi規範第3卷:共享架構元素中定義的屬性。
t-ram: pei使用的暫時的記憶體,系統記憶體初始化之前堆疊和資料區域的位置
3. dxe(driver execution environment):
dxe階段是啟動過程的主要部分,包括列舉和初始化裝置;支援uefi服務;實現協議和驅動程式。在這個階段也生成了efi介面的表
4. bds(boot dev select):
bds階段負責確定啟動作業系統的方式和位置
5. tsl(transient system load):
tsl是構建作業系統的過程。 這是uefi將控制權轉移到os本身的階段
6. rt(run time):
rt在引導階段之外執行;作業系統以其正常操作模式執行
edk是第一代開源的efi開發工具。僅僅支援windows的開發
edk為intel之外的使用者(與intel沒有直接的許可協議)提供了更強大的開發環境。
edk針對開發韌體和驅動程式的公司
edk最終公升級為edk ii,從而擴充套件了構建環境,以支援多個作業系統和編譯器。
edk ii是第二代efi開發工具,主要有兩個主要目標:
edk ii將內容組織為整塊(也稱為「包」),將其整體新增和刪除
edk ii是乙個易於使用的開發環境,它將幫助您使用商業編譯器,提供自託管開發,並提供庫來協助管理常見任務。
edk ii允許四種型別的除錯
UEFI和bios啟動過程
bios啟動流程 系統開機 上電自檢 power on self test 或 post post過後初始化用於啟動的硬體 磁碟 鍵盤控制器等 bios會執行bios磁碟啟動順序中第乙個磁碟的首440bytes mbr啟動 區域 內的 啟動引導 從bios獲得控制權,然後引導啟動下一階段的 如果有的...
BIOS鎖定純UEFI啟動的解鎖辦法
在自帶windows 8的裝置上,出現的情況是只能支援uefi啟動,傳統mbr方式啟動不了。在bios的啟動列表裡,也無發現mbr啟動裝置。其實是微軟強制各廠商們必須 開啟secure boot,而開啟secure boot後,csm預設關閉。csm關閉則會出現不能相容傳統mbr啟動,mbr裝置若是...
我所認知的BIOS 反彙編BIOS之 開始
我所認知的 bios 反彙編bios 之 開始 lightseed 3 11 2010上海 我想稍微懂點 bios 的人都應該知道,目前 blog 裡面的文章其實都是很基礎很基礎的東西。說白了呢就是沒什麼技術含量,說好聽點呢,就是對技術的細節理解比較深刻。總之就是只能看看,不能排上實際用途了。不得不...