和老BIOS說(shuō)永別EFI BIOS技術(shù)解析
BIOS,幾乎和PC有著同樣的壽命,當(dāng)年康柏第一臺(tái)“克隆”PC誕生的時(shí)候,它為了簡(jiǎn)化啟動(dòng)的設(shè)置,引入了固化程序的概念,在啟動(dòng)時(shí)負(fù)責(zé)將PC初始化,然后再將控制權(quán)交給磁盤(pán)上的操作系統(tǒng)。而今天,“康柏”這個(gè)品牌已經(jīng)消失,而B(niǎo)IOS卻作為無(wú)心插柳柳成蔭之作,延續(xù)至今。BIOS伴隨了我們十幾年,在這么長(zhǎng)的日子里,硬件升了一代又一代,電腦換了一臺(tái)又一臺(tái),唯一不變的,就是BIOS。BIOS默默伴隨著我們這幫從剛學(xué)會(huì)打ABCD的毛頭孩子長(zhǎng)大成人,當(dāng)我們都變了,它卻還是它最初的模樣。
風(fēng)華已去,佳人已老,BIOS在十幾年的守護(hù)中,一步步逐漸落后于硬件的發(fā)展,趨于落寞,垂垂老暮。BIOS在PC啟動(dòng)時(shí),將PC初始化,然后控制權(quán)交給磁盤(pán)上的操作系統(tǒng),在后面的階段,用戶的感覺(jué)是在通過(guò)操作系統(tǒng)直接和硬件對(duì)話,可實(shí)際上,操作系統(tǒng)想要與硬件進(jìn)行溝通,仍然必須通過(guò)BIOS。下面就由學(xué)習(xí)啦小編為大家介紹bios從舊到新的發(fā)展歷程吧。
我們熟悉的BIOS操作界面
BIOS的全稱是Basic Input/Output System,中文名是基本輸入輸出系統(tǒng)。BIOS即是操作系統(tǒng)和計(jì)算機(jī)硬件之間通訊的橋梁,更是充當(dāng)翻譯的角色,從DOS時(shí)代起,微軟的操作系統(tǒng)一直都是建立在“中斷”這個(gè)概念上的,程序的切換依靠中斷,系統(tǒng)的開(kāi)關(guān)依靠中斷,甚至我們按下了機(jī)箱上“Reset”鍵強(qiáng)制重啟電腦,也還是中斷在后臺(tái)的作用。為了延續(xù)整套的16位中斷系統(tǒng),無(wú)論是CPU開(kāi)發(fā)還是軟件升級(jí),都得考慮中斷模式。
在x86系列處理器進(jìn)入32位時(shí)代后,由于兼容性的原因,新的處理器保留了16位的運(yùn)行方式,此后多次處理器的升級(jí)換代都保留了這種運(yùn)行方式。甚至在含64位擴(kuò)展技術(shù)的至強(qiáng)系列處理器中,處理器加電啟動(dòng)時(shí)仍然會(huì)切換到16位的實(shí)模式下運(yùn)行。BIOS程序以16位匯編代碼、寄存器參數(shù)調(diào)用方式、靜態(tài)鏈接以及1MB以下內(nèi)存固定編址的形式存在了十幾年,雖然各大BIOS廠商近年來(lái)努力得對(duì)其進(jìn)行改進(jìn),加入了許多新元素到產(chǎn)品中,如ACPI、USB支持等,但BIOS的根本性質(zhì)沒(méi)有得到任何改變,16位的運(yùn)行工作環(huán)境是其最為致命的缺點(diǎn)。
現(xiàn)有的BIOS不但在工作方式存在令人不滿之處,在工作能力上,也令人頗有微詞。BIOS發(fā)展到現(xiàn)在,用來(lái)存放BIOS程序的芯片最大不過(guò)2Mb,換成實(shí)際字節(jié)就是256KB,面對(duì)這個(gè)數(shù)值,即使你想為BIOS編寫(xiě)一些新的功能,BIOS芯片中也不會(huì)有足夠的空間讓你寫(xiě)入。這也是BIOS這十幾年來(lái)一直停滯不前的原因之一。
所以BIOS經(jīng)過(guò)了這些年的輝煌期,已經(jīng)逐漸脫離了時(shí)代的發(fā)展,成為了PC功能和性能進(jìn)一步提升的瓶頸,只有尋求BIOS的接任者。而B(niǎo)IOS,必將在璀璨光環(huán)的環(huán)繞中,落下帷幕,成為歷史的記錄。
EFI接過(guò)接力棒
EFI的英文全稱是Extensible Firmware Interface,中文名是可擴(kuò)展固件接口,早在2006年的上半年,Intel曾經(jīng)在IDF上進(jìn)行過(guò)EFI的演示。要使用EFI系統(tǒng),必須主板和操作系統(tǒng)都支持EFI功能,目前支持EFI功能的操作系統(tǒng)有Mac OS X、Vista和Server 2003。
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有些類(lèi)似于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ū)
在實(shí)現(xiàn)中,EFI初始化模塊和驅(qū)動(dòng)執(zhí)行環(huán)境通常被集成在一個(gè)只讀存儲(chǔ)器中。Pre-EFI初始化程序在系統(tǒng)開(kāi)機(jī)的時(shí)候最先得到執(zhí)行,它負(fù)責(zé)最初的CPU、北橋、南橋、內(nèi)存和硬盤(pán)的初始化工作,緊接著載入EFI驅(qū)動(dòng)。當(dāng)EFI驅(qū)動(dòng)程序被載入運(yùn)行后,系統(tǒng)便具有控制所有硬件的能力。在EFI規(guī)范中,一種突破傳統(tǒng)MBR磁盤(pán)分區(qū)結(jié)構(gòu)限制的GUID磁盤(pán)分區(qū)系統(tǒng)(GPT)被引入,新結(jié)構(gòu)中,磁盤(pán)的分區(qū)數(shù)不再受限制(在MBR結(jié)構(gòu)下,只能存在4個(gè)主分區(qū)),并且分區(qū)類(lèi)型將由GUID來(lái)表示。在眾多的分區(qū)類(lèi)型中,EFI系統(tǒng)分區(qū)可以被EFI系統(tǒng)存取,用于存放部分驅(qū)動(dòng)和應(yīng)用程序。CSM是在x86平臺(tái)EFI系統(tǒng)中的一個(gè)特殊的模塊,它將為不具備EFI引導(dǎo)能力的操作系統(tǒng)提供類(lèi)似于傳統(tǒng)BIOS的系統(tǒng)服務(wù)。
由于EFI驅(qū)動(dòng)開(kāi)發(fā)簡(jiǎn)單,所有的硬件廠商都可以參與,為自家的硬件定制最為合適的驅(qū)動(dòng)。基于EFI的驅(qū)動(dòng)模型可以使EFI系統(tǒng)接觸到所有的硬件功能,不進(jìn)入操作操作系統(tǒng)就瀏覽網(wǎng)站不再是天方夜譚,甚至實(shí)現(xiàn)起來(lái)也非常簡(jiǎn)單。這對(duì)基于傳統(tǒng)BIOS的系統(tǒng)來(lái)說(shuō)是件不可能的任務(wù),在BIOS中添加幾個(gè)簡(jiǎn)單的USB設(shè)備支持都曾使很多BIOS設(shè)計(jì)師痛苦萬(wàn)分,更何況除了添加對(duì)無(wú)數(shù)網(wǎng)絡(luò)硬件的支持外,還得憑空構(gòu)建一個(gè)16位模式下的TCP/IP協(xié)議。
EFI是否固若金湯?
很多人擔(dān)心EFI這種開(kāi)放的模式將會(huì)導(dǎo)致新的安全隱患,因?yàn)镋FI系統(tǒng)比傳統(tǒng)的BIOS更易于受到計(jì)算機(jī)病毒的攻擊,當(dāng)一部分EFI驅(qū)動(dòng)程序被破壞時(shí),系統(tǒng)有可能面臨無(wú)法引導(dǎo)的情況。實(shí)際上,系統(tǒng)引導(dǎo)所依賴的EFI驅(qū)動(dòng)部分通常都不會(huì)存放在EFI的GUID分區(qū)中,即使分區(qū)中的驅(qū)動(dòng)程序遭到破壞,也可以用簡(jiǎn)單的方法得到恢復(fù),因?yàn)橹蛔x芯片中的EFI代碼足夠用來(lái)引導(dǎo)計(jì)算機(jī)從光驅(qū)啟動(dòng),此時(shí)插入EFI的安裝盤(pán),對(duì)EFI的系統(tǒng)存儲(chǔ)區(qū)域進(jìn)行修復(fù)或者覆蓋安裝,就能將PC恢復(fù)到正常。而且這個(gè)修復(fù)過(guò)程對(duì)操作系統(tǒng)來(lái)說(shuō),等于是從兩臺(tái)配置一模一樣配置機(jī)器中的一臺(tái)轉(zhuǎn)移到另一臺(tái),并不會(huì)出現(xiàn)需要重新識(shí)別硬件的情況。 EFI在概念上非常類(lèi)似于一個(gè)低等級(jí)的操作系統(tǒng),并且具有操控所有硬件資源的能力。不少人感覺(jué)它的不斷發(fā)展將有可能代替現(xiàn)代的操作系統(tǒng)。事實(shí)上,EFI的締造者們?cè)诘谝话嬉?guī)范出臺(tái)時(shí)就將EFI的能力限制于不足以威脅操作系統(tǒng)的統(tǒng)治地位。首先,它只是硬件和操作系統(tǒng)間的接口規(guī)范;其次,EFI環(huán)境下不提供中斷的訪問(wèn)機(jī)制,也就是說(shuō)每個(gè)EFI驅(qū)動(dòng)程序必須用輪詢的方式來(lái)檢查硬件狀態(tài),并且需要以解釋的方式運(yùn)行,較操作系統(tǒng)下的驅(qū)動(dòng)效率低得多;第三,EFI系統(tǒng)不提供復(fù)雜的存儲(chǔ)器保護(hù)功能,它只具備簡(jiǎn)單的存儲(chǔ)器管理機(jī)制,具體來(lái)說(shuō)就是指運(yùn)行在x86處理器的段保護(hù)模式下,以最大尋址能力為限把存儲(chǔ)器分為一個(gè)平坦的段,所有的程序都有權(quán)限存取任何一段位置,并不提供真實(shí)的保護(hù)服務(wù)。
EFI的命令行控制模式
EFI的設(shè)計(jì)架構(gòu)中,一旦引導(dǎo)軟件將控制權(quán)交給操作系統(tǒng),所有用于引導(dǎo)的服務(wù)代碼將全部停止工作,部分運(yùn)行時(shí)代服務(wù)程序還可以繼續(xù)工作,以便于操作系統(tǒng)一時(shí)無(wú)法找到特定設(shè)備的驅(qū)動(dòng)程序時(shí),該設(shè)備還可以繼續(xù)被使用。EFI的程序只限于類(lèi)似Java偽執(zhí)行文件的能力,并沒(méi)有直接訪問(wèn)磁盤(pán)所有資源的能力,而且在進(jìn)入操作系統(tǒng)后的大多數(shù)情況下,EFI部分的代碼都進(jìn)入沉睡模式,即使有針對(duì)EFI的病毒,也無(wú)法造成進(jìn)一步的影響。
和BIOS說(shuō)再見(jiàn)
EFI的出現(xiàn),可以說(shuō)是充分彌補(bǔ)了BIOS原有的不足。因?yàn)锽IOS過(guò)于自信芯片的安全,所以當(dāng)遇上CIH病毒,啟動(dòng)機(jī)制也被完全破壞。而EFI將主要程序文件放在了硬盤(pán)上,被破壞了還可以使用光盤(pán)進(jìn)行維修,對(duì)操作系統(tǒng)而言,這種“破壞-維修”的方式是完全透明的,不會(huì)影響操作系統(tǒng)的使用。雖然看起來(lái)EFI更容易受到損壞,但也更為易于修復(fù)。
BIOS在經(jīng)歷了十幾年發(fā)展之后,也終于走到了盡頭,外觀上的落后、功能上的羸弱、安全上的薄弱、性能上的不足,都嚴(yán)重制約著它的進(jìn)一步發(fā)展。雖然在這些日子里,BIOS能夠帶給我們基本的功能,但PC要進(jìn)步,就必須尋求更高更好的技術(shù)。
EFI作為BIOS的替代者,無(wú)論是界面、功能還是安全性,都要遠(yuǎn)遠(yuǎn)高于后者,而且作為未來(lái)主板的趨勢(shì)所向,EFI上能執(zhí)行的程序會(huì)越來(lái)越多,EFI能夠提供的基本功能也就越來(lái)越強(qiáng)。今天,微星在CES展會(huì)上展示了EFI主板的強(qiáng)大,因?yàn)楹推胀˙IOS主板在設(shè)計(jì)難度以及生產(chǎn)兼容性上并不沖突,所以可以相信,擁有諸多優(yōu)點(diǎn)的EFI會(huì)取代BIOS,讓PC越來(lái)越易于使用。
微星支持EFI技術(shù)的P35 Neo3主板
EFI BIOS界面
編輯總結(jié) :Intel作為EFI大力的推廣者和制定者,能看到EFI逐漸從服務(wù)器平臺(tái)走向桌面級(jí)市場(chǎng),其中辛酸甘苦只有自己才知道。從初期廠商對(duì)EFI的概念毫無(wú)興趣,到今天各大BIOS提供商如Phoenix, AMI等,原先被認(rèn)為是EFI發(fā)展的阻礙力量,現(xiàn)在也不斷的推出各自的解決方案。支持EFI功能的主板也逐漸退出。一切的一切,都似乎預(yù)示著我們可以和BIOS說(shuō)聲再見(jiàn),讓技術(shù)的進(jìn)步來(lái)記錄歷史。