EFI在開(kāi)機(jī)時(shí)的作用和BIOS一樣,就是初始化PC,但在細(xì)節(jié)上卻又不一樣。BIOS對(duì)PC的初始化,只是按照一定的順序?qū)τ布,?jiǎn)單地檢查硬件是否能工作,而EFI不但檢查硬件的完好性,還會(huì)加載硬件在EFI中的驅(qū)動(dòng)程序,不用操作系統(tǒng)負(fù)責(zé)驅(qū)動(dòng)的加載工作。 EFI的最革命之處,是顛覆了BIOS的界面概念,讓操作界面和Windows一樣易于上手。在EFI的操作界面中,鼠標(biāo)成為了替代鍵盤(pán)的輸入工具,各功能調(diào)節(jié)的模塊也做的和Windows程序一樣,可以說(shuō),EFI就是一個(gè)小型化的Windows系統(tǒng)。
對(duì)于操作系統(tǒng)來(lái)說(shuō),如果主板使用的是BIOS,那么操作系統(tǒng)就必須面對(duì)所有的硬件,大到主板顯卡,小到鼠標(biāo)鍵盤(pán),每次重裝系統(tǒng)或者系統(tǒng)升級(jí),都必須手動(dòng)安裝新的驅(qū)動(dòng),否則硬件很可能無(wú)法正常工作。而基于EFI的主板則方便很多,因?yàn)镋FI架構(gòu)使用的驅(qū)動(dòng)基于EFI Byte Code。EFI Byte Code有些類似于Java的中間代碼,并不由CPU直接執(zhí)行操作,而是需要EFI層進(jìn)行翻譯。對(duì)于不同的操作系統(tǒng)來(lái)說(shuō),EFI將硬件層很好地保護(hù)了起來(lái),所有操作系統(tǒng)看到的,都只是EFI留給EFI Byte Code的程序接口,而EFI Byte Code又直接和Windows的API聯(lián)系,這就意味著無(wú)論操作系統(tǒng)是Windows還是Linux,只要有EFI Byte Code支持,只需要一份驅(qū)動(dòng)程序就能吃遍所有操作系統(tǒng)平臺(tái)。
更為神奇的是,EFI Byte Code驅(qū)動(dòng)還能繞過(guò)操作系統(tǒng),直接安裝在EFI環(huán)境中,這樣對(duì)硬件的控制就由EFI層負(fù)責(zé),EFI向操作系統(tǒng)直接提供硬件操作的接口,不需要操作系統(tǒng)再調(diào)用驅(qū)動(dòng)。這種方式的優(yōu)點(diǎn)是不需要進(jìn)入操作系統(tǒng),只需要進(jìn)入EFI界面,更新驅(qū)動(dòng)程序就可以完成,而且不需要對(duì)每一個(gè)操作系統(tǒng)進(jìn)行驅(qū)動(dòng)升級(jí),只要EFI界面中升級(jí)一次,所有上層的操作系統(tǒng)都可以直接調(diào)用新的EFI接口。
EFI在開(kāi)機(jī)之始就能夠驅(qū)動(dòng)所有的硬件,網(wǎng)絡(luò)當(dāng)然也不會(huì)例外,所以在EFI的操作界面中,程序可以直接連接上互聯(lián)網(wǎng),向外界求助操作系統(tǒng)的維修信息或者在線升級(jí)驅(qū)動(dòng)程序。
更方便的編程方式
有人會(huì)問(wèn):既然EFI功能那么強(qiáng)大,那它存放在什么地方?是存放在原來(lái)的BIOS芯片中嗎?答案當(dāng)然是No。BIOS芯片只有256KB,遠(yuǎn)遠(yuǎn)不夠EFI使用。EFI是以小型磁盤(pán)分區(qū)的形式存放在硬盤(pán)上的。EFI的安裝,必須在支持EFI功能的主板上,使用光驅(qū)引導(dǎo)系統(tǒng),然后對(duì)磁盤(pán)進(jìn)行EFI化的處理,這個(gè)處理的過(guò)程,主要就是劃分EFI獨(dú)用的磁盤(pán)空間。
EFI的存儲(chǔ)空間大約為50MB到100MB,具體視驅(qū)動(dòng)文件多少而定。在這部分空間中,包含以下幾個(gè)部分:
1. Pre-EFI初始化模塊
2. EFI驅(qū)動(dòng)執(zhí)行環(huán)境
3. EFI驅(qū)動(dòng)程序
4. 兼容性支持模塊(CSM)
5. EFI高層應(yīng)用
6. GUID 磁盤(pán)分區(qū)