隨著CPU及其他硬件設(shè)備的技術(shù)革新,CPU和操作系統(tǒng)已支持到64位,而BIOS卻還停留在16位;主板上更加豐富多樣的擴(kuò)展設(shè)備,也讓BIOS愈加無(wú)能為力,使得硬件無(wú)法完成初始化。現(xiàn)實(shí)表明,BIOS已經(jīng)無(wú)法滿足軟硬件高速發(fā)展的需求,成為了計(jì)算機(jī)體系發(fā)展的瓶頸。經(jīng)濟(jì)學(xué)規(guī)律告訴我們,哪里有需求哪里就有市場(chǎng),于是新的引導(dǎo)技術(shù)就在偶然也是必然中出現(xiàn)了。
1997年,Intel聯(lián)合惠普開(kāi)發(fā)出了首顆面向高端服務(wù)器市場(chǎng)的基于安騰(Itanium,也稱為IA-64)架構(gòu)的64位處理器。而當(dāng)時(shí)的BIOS已經(jīng)無(wú)法滿足Intel的需求,所以Intel于1998年啟動(dòng)了名為“Intel Boot Initiative”的項(xiàng)目來(lái)解決系統(tǒng)引導(dǎo)問(wèn)題,后來(lái)Intel將此項(xiàng)目的規(guī)范公開(kāi)并命名為EFI(Extensible Firmware Interface),即可擴(kuò)展固件接口。
IA-64構(gòu)架屬于全新構(gòu)架平臺(tái),而市面上的計(jì)算機(jī)全是32位的x86架構(gòu),如果想讓程序在IA-64平臺(tái)的計(jì)算機(jī)上運(yùn)行,就必須重新編譯,出于成本和慣性思維考慮,可以想象市場(chǎng)接受IA-64是多么困難。不出所料,IA-64的銷量不容樂(lè)觀,僅HP一家堅(jiān)持使用;2003年,AMD發(fā)布第一顆能兼容32位的基于x86-64(AMD64)架構(gòu)的64位處理器:Opteron,并于同年發(fā)布了面向桌面端計(jì)算機(jī)的Athlon 64,受到了市場(chǎng)的青睞;最終Intel決定放棄對(duì)IA-64的重點(diǎn)投入,將主要精力轉(zhuǎn)投AMD 的x86_64架構(gòu)。
雖然IA-64沒(méi)有取得成功,但EFI憑借著其良好的結(jié)構(gòu)設(shè)計(jì)存活下來(lái)并大放異彩。鑒于EFI的優(yōu)越性,2005年,CPU生產(chǎn)廠商聯(lián)合BIOS供應(yīng)商,OS供應(yīng)商以及系統(tǒng)制造商等行業(yè)內(nèi)11家知名企業(yè)(分別是:AMD, American Megatrends, ARM, Apple, Dell, Hewlett Packard Enterprise, HP Inc., Insyde Software, Intel, Lenovo, Microsoft, and Phoenix Technologies)共同建立了UEFI論壇,該論壇屬于非營(yíng)利性公司,負(fù)責(zé)開(kāi)發(fā)、促進(jìn)和管理UEFI的規(guī)范的演進(jìn)。Intel將EFI規(guī)范和相關(guān)的測(cè)試套件移交給UEFI論壇,微軟也提供了相應(yīng)的技術(shù)資料,更新了規(guī)范內(nèi)容,形成了新的UEFI(Unified Extensible Firmware Interface)規(guī)范, 該規(guī)范定位于接口規(guī)范,不涉及具體的固件實(shí)現(xiàn)。2006年1月31日,UEFI論壇推出第一個(gè)新的標(biāo)準(zhǔn)UEFI2.0。
從2005年至今,UEFI規(guī)范標(biāo)準(zhǔn)已經(jīng)升級(jí)至2.10,在行業(yè)的積極推動(dòng)下,UEFI成為替代BIOS的主要驅(qū)動(dòng)系統(tǒng)的技術(shù),2007年蘋果公司率先在MacBook Pro中使用了UEFI技術(shù),隨后同一年微軟也在Vista SP1中使用UEFI技術(shù),開(kāi)始了UEFI替換BIOS的技術(shù)迭代,特別是Wintel在PC市場(chǎng)上取得的巨大成功,讓UEFI引導(dǎo)方案從眾多技術(shù)中脫穎而出,成為了當(dāng)下的主流。
UEFI可視為一個(gè)微型的操作系統(tǒng),但無(wú)法替代操作系統(tǒng)的角色,設(shè)計(jì)之初,就被限制了功能,不提供中斷和緩存機(jī)制,其主要功能有兩個(gè):
1. 平臺(tái)初始化(Platform Initialization),為各類硬件提供初始化服務(wù);
2. 提供固件接口,為上層應(yīng)用(包括操作系統(tǒng))提供調(diào)用接口,抽象底層硬件;
相比BIOS,UEFI的優(yōu)勢(shì)大致有以下幾點(diǎn):
1. 更安全的防護(hù)措施,更有效的簽名驗(yàn)證機(jī)制;
UEFI中引入了Hash校驗(yàn)和數(shù)字簽名等技術(shù),從源頭上防止數(shù)據(jù)的篡改;安全啟動(dòng)模式從根開(kāi)始驗(yàn)證加載模塊的數(shù)字簽名,只有通過(guò)驗(yàn)證,才會(huì)運(yùn)行模塊程序;UEFI還能檢測(cè)運(yùn)行模塊是否在禁止加載的黑名單中,如果在黑名單中,同樣禁止程序運(yùn)行。
2. 支持KMS(Key Management Service)
支持Internet Key Server和HSM(Hardware Security Module)或者其他類型的KMS Provider,對(duì)密鑰進(jìn)行管理和存儲(chǔ)。
3. 支持GPT的分區(qū)方式,突破了硬盤容量限制,可以引導(dǎo)超過(guò)2T的硬盤;
GPT分區(qū)標(biāo)準(zhǔn)作為UEFI標(biāo)準(zhǔn)的一部分,支持每個(gè)磁盤最大128個(gè)主分區(qū),8 ZiB容量(每扇區(qū)512字節(jié))或者64 ZiB(每扇區(qū)4096字節(jié))。
4. 支持異步調(diào)用,開(kāi)機(jī)速度快,可識(shí)別文件系統(tǒng);
UEFI支持異步事件調(diào)用,放棄了BIOS的中斷方式,讓CPU可以在相同的時(shí)間內(nèi)做更多的事情;UEFI支持FAT32文件系統(tǒng),抽象了底層硬件I/O,通過(guò)文件方式訪問(wèn)磁盤比直接訪問(wèn)扇區(qū)更有效率, BIOS每次只能通過(guò)INT0x13按扇區(qū)讀取硬盤數(shù)據(jù),而UEFI可以讀取任意長(zhǎng)度;UEFI也不必再?gòu)拇疟P的固定位置讀取引導(dǎo)代碼,引導(dǎo)代碼可以放在任意路徑下。
5. 支持多語(yǔ)言,更友好的GUI;
BIOS永遠(yuǎn)只能是單調(diào)的單色背景,純英文的文字選項(xiàng),而UEFI可以提供本地化即多語(yǔ)言的功能,還能設(shè)計(jì)出對(duì)用戶更友好,內(nèi)容更豐富的GUI交互。
Legacy BIOS界面
UEFI界面
6. 支持多種協(xié)議:USB、SCSI、ACPI、TCP/IP,PCI等
大部分的硬件初始化都在UEFI中完成,UEFI也支持安裝硬件驅(qū)動(dòng)程序,能驅(qū)動(dòng)復(fù)雜的擴(kuò)展硬件設(shè)備;UEFI還具有網(wǎng)絡(luò)功能,在不進(jìn)入操作系統(tǒng)的情況下進(jìn)行網(wǎng)絡(luò)通訊。
7. 支持C語(yǔ)言,易開(kāi)發(fā),易維護(hù);
UEFI的大部分實(shí)現(xiàn)都使用C語(yǔ)言,并且支持C運(yùn)行時(shí)庫(kù),將普通的C代碼遷移到UEFI中,只需要很少的工作量,應(yīng)用程序和驅(qū)動(dòng)程序甚至可以使用C 。
8. 模塊化的設(shè)計(jì);
UEFI對(duì)底層硬件進(jìn)行了抽象,采用模塊化設(shè)計(jì),降低耦合性,通過(guò)固件接口(Boot Service和Runtime Service)向上提供服務(wù),屏蔽了底層硬件實(shí)現(xiàn)細(xì)節(jié),簡(jiǎn)化了UEFI上層應(yīng)用的調(diào)用;整個(gè)UEFI環(huán)境分7階段運(yùn)行:SEC(安全驗(yàn)證)->PEI(EFI前期初始化)->DXE(驅(qū)動(dòng)執(zhí)行環(huán)境)->BDS(啟動(dòng)設(shè)備選擇)->TSL(操作系統(tǒng)加載前期)->RT(Run Time)->AL(系統(tǒng)災(zāi)難恢復(fù)期),每個(gè)階段只負(fù)責(zé)處理自己的部分,完成后轉(zhuǎn)到下個(gè)階段。
UEFI階段運(yùn)行示圖
UEFI架構(gòu)圖
Boot Service主要向上提供事件處理、時(shí)間和任務(wù)優(yōu)先級(jí)相關(guān)設(shè)置,內(nèi)存分配,外設(shè)管理(注冊(cè)、注銷、安裝、卸載、響應(yīng)等),映射加載等服務(wù)。
Runtime Service主要限制中斷響應(yīng),提供時(shí)間服務(wù)(運(yùn)行時(shí)階段),虛擬內(nèi)存映射和其他各種(如Reset,獲取monotonic計(jì)數(shù),更新固件等)服務(wù)。
參考資料:
1. 《UEFI原理與編程》—— 戴正華
2. 《Unified Extensible Firmware Interface(UEFI) Specification》
3. 《UEFI Platform Initialization (PI) Specification》
聯(lián)系客服