從Uefi的歷史開始 BIOS和Uefi

2021-10-04 13:56:50 字數 3676 閱讀 2943

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 裡面的文章其實都是很基礎很基礎的東西。說白了呢就是沒什麼技術含量,說好聽點呢,就是對技術的細節理解比較深刻。總之就是只能看看,不能排上實際用途了。不得不...