Extensible Firmware Interface(EFI,可擴展固件接口)是 Intel 為全新類(lèi)型的 PC 固件的體系結構、接口和服務(wù)提出的建議標準。其主要目的是為了提供一組在 OS 加載之前(啟動(dòng)前)在所有平臺上一致的、正確指定的啟動(dòng)服務(wù),被看做是有近20多年歷史的PC BIOS的繼任者。
由于電腦教育普及,很多人都知道BIOS就是Basic Input/Output System,翻成中文是“基本輸入/輸出系統”,是一種所謂的“固件”,負責在開(kāi)機時(shí)做硬件啟動(dòng)和檢測等工作,并且擔任操作系統控制硬件時(shí)的中介角色。
然而,那些都是過(guò)去DOS 時(shí)代的事情,自從Windows NT出現,Linux 開(kāi)始嶄露頭角后,這些操作系統已將過(guò)去需要通過(guò)BIOS完成的硬件控制程序放在操作系統中完成,不再需要調用BIOS功能。一般來(lái)說(shuō),當今所謂的“電腦高手”,多半是利用BIOS來(lái)對硬件性能做些超頻調校,除了專(zhuān)業(yè)人士外,鮮有人再利用 BIOS 進(jìn)行底層工作。
因為硬件發(fā)展迅速,傳統式(Legacy)BIOS 成為進(jìn)步的包袱,現在已發(fā)展出最新的EFI(Extensible Firmware Interface)可擴展固件接口,以現在傳統 BIOS 的觀(guān)點(diǎn)來(lái)說(shuō),未來(lái)將是一個(gè)“沒(méi)有特定 BIOS”的電腦時(shí)代。
UEFI是由EFI1.10為基礎發(fā)展起來(lái)的,它的所有者已不再是Intel,而是一個(gè)稱(chēng)作Unified EFI Form的國際組織,貢獻者有Intel,Microsoft,AMI,等幾個(gè)大廠(chǎng),屬于open source,目前版本為2.1。與legacy BIOS 相比,最大的幾個(gè)區別在于:
1. 編碼99%都是由C語(yǔ)言完成;
2. 一改之前的中斷、硬件端口操作的方法,而采用了Driver/protocal的新方式;
3. 將不支持X86模式,而直接采用Flat mode(也就是不能用DOS了,現在有些 EFI 或 UEFI 能用是因為做了兼容,但實(shí)際上這部分不屬于UEFI的定義了);
4. 輸出也不再是單純的二進(jìn)制code,改為Removable Binary Drivers;
5. OS啟動(dòng)不再是調用Int19,而是直接利用protocol/device Path;
6. 對于第三方的開(kāi)發(fā),前者基本上做不到,除非參與BIOS的設計,但是還要受到ROM的大小限制,而后者就便利多了。
7.彌補BIOS對新硬件的支持不足的毛病。
UEFI將是近3年的趨勢,到時(shí)候對于PC的利用以及維護都將步入一個(gè)新的時(shí)代。
根據UEFI概念圖的結構,我們將把uEFI概念劃為兩部分:uEFI的實(shí)體 (uEFI Image)跟平臺初始化框架。
uEFI的實(shí)體-uEFI Image
?。▓D中藍框圍起部分)
根據uEFI規范定義,uEFI Image包含三種:uEFI Applications, OS Loaders and uEFI Drivers。
uEFI Applications是硬件初始化完,操作系統啟動(dòng)之前的核心應用,比如:?jiǎn)?dòng)管理、BIOS設置、uEFI Shell、診斷程式、調度和供應程式、調試應用...等等
OS Loaders是特殊的uEFI Application,主要功能是啟動(dòng)操作系統并退出和關(guān)閉uEFI應用。
uEFI Drivers是提供設備間接口協(xié)議,每個(gè)設備獨立運行提供設備版本號和相應的參數以及設備間關(guān)聯(lián),不再需要基于操作系統的支持。