當前位置:
首頁 > 科技 > IT之家學院:BIOS、EFI與UEFI詳解

IT之家學院:BIOS、EFI與UEFI詳解

終於又有功夫寫點東西分享了,今天談一下BIOS、EFI和UEFI。

前一篇文已經說過BIOS是個程序,存儲在BIOS晶元中,而現在的新式電腦用的基本都是UEFI啟動,早期的過渡電腦用的都是EFI啟動。其實EFI或UEFI的一部分也是存儲在一個晶元中,由於它們在表面形式、基本功能上和BIOS差不多,所以習慣上我們也把存儲EFI/UEFI的晶元叫做EFI/UEFI BIOS晶元,EFI/UEFI也叫做EFI/UEFI BIOS,但在實際上它們和BIOS根本是不一樣的,所以最好還是把後面的「BIOS」尾巴去掉為好,下面就來具體談一下BIOS、EFI和UEFI。

IT之家學院:BIOS、EFI與UEFI詳解

前篇文指出BIOS用於計算機硬體自檢、CMOS設置、引導操作系統啟動、提供硬體I/O、硬體中斷等4項主要功能,因此BIOS程序可以分為若干模塊,主要有Boot Block引導模塊、CMOS設置模塊、擴展配置數據(ESCD)模塊、DMI收集硬體數據模塊,其中引導模塊直接負責執行BIOS程序本身入口、計算機基本硬體的檢測和初始化,ESCD用於BIOS與OS交換硬體配置數據,DMI則充當了硬體管理工具和系統層之間介面的角色,通過DMI,用戶可以直觀地獲得硬體的任何信息,CMOS設置模塊就是實現對硬體信息進行設置,並保存在CMOS中,是除了啟動初始化以外BIOS程序最常用的功能。

BIOS本身是彙編語言代碼,是在16位實模式下調用INT 13H中斷執行的,由於x86-64是一個高度兼容的指令集,也為了遷就BIOS的16位實模式的運行環境,所以即使現在的CPU都已是64位,如果還是在BIOS啟動(基本見於09年以前的主板),在開機時仍然都是在16位實模式下執行的。16位實模式直接能訪問的內存只有1MB,就算你安了4G、8G或者16G還是32G內存,到了BIOS上一律只先認前1MB。在這1MB內存中,前640K稱為基本內存,後面384K內存留給開機必要硬體和各類BIOS本身使用,了解了這些,下面談一下BIOS啟動計算機的具體過程。

當按下電源開關時,電源就開始向主板和其他設備供電,這時電壓還不穩定,在早期的南北橋主板上,由主板北橋向CPU發複位信號,對CPU初始化;穩定電壓後複位信號便撤掉。而對於現在的單南橋主板,則由CPU自身調整穩定電壓達到初始化的目的,當電壓穩定後,CPU便在系統BIOS保留的內存地址處執行跳轉BIOS起始處指令,開始執行POST自檢。

在POST自檢中,BIOS只檢查系統的必要核心硬體是否有問題,主要是CPU、640K基本內存、顯卡是否正常,PS/2鍵盤控制器、系統時鐘是否有錯誤等等。由於POST檢查在顯卡初始化以前,因此在這個階段如發生錯誤,是無法在屏幕上顯示的,不過主板上還有個報警揚聲器,而且如果主板的8255外圍可編程介面晶元沒有損壞的話,POST報警聲音一定是會出來的。可以根據報警聲的不同大致判斷錯誤所在,一般情況下,一聲短「嘀」聲基本代表正常啟動,不同的錯誤則是不同的短「嘀」聲和長「嘀」聲組合。POST自檢結束後,BIOS開始調用中斷完成各種硬體初始化工作。

硬體初始化工作中,主要說明兩點,首先經過POST檢測後,電腦終於出現了開機啟動畫面,這就是已經檢測到了顯卡並完成了初始化。但是請注意,由於BIOS是在16位實模式運行,因此該畫面是以VGA解析度(640*480,縱橫比4:3)顯示的,因為實模式最高支持的就是VGA。以前的小14-17寸CRT顯示器由於都是4:3比例,最高解析度也比較低,因此這個開機啟動畫面沒有什麼違和感,但現在的液晶顯示器基本上都是寬屏16:9的,解析度也較高,因此在這樣的顯示屏下,啟動畫面上的一切東西顯示都可以說「慘不忍睹」——圖形被拉長,字體很大很模糊,可以很明顯看到顯示字體的鋸齒。第二,BIOS只識別到由主引導記錄(MBR)初始化的硬碟,之所以說明這點,是因為後續的EFI或UEFI採用了一種新的GUID磁碟分區系統(GPT)格式,這種硬碟在BIOS下是無法識別的。硬體全部初始化完畢後,接下來進入更新ESCD階段。

在ESCD更新階段中,BIOS將對存儲在CMOS中和操作系統交換的硬體配置數據進行檢測,如果系統硬體發生變動,則會更新該數據,否則不更新保持原狀不變,ESCD檢測或更新結束後,BIOS將完成最後一項工作,就是啟動操作系統。

最後這一步中,BIOS根據CMOS中用戶指定的硬體啟動順序,讀取相應設備的啟動或引導記錄,引導相應設備上的操作系統啟動,進入操作系統,此後便由操作系統接替BIOS負責硬體和軟體間的相互通信。如果發現所有硬體都沒有能引導操作系統的記錄,則會在屏幕上顯示相應錯誤信息,並將電腦維持在16位實模式。

雖然BIOS作為電腦加電啟動所必不可少的部分,但是從其於1975年誕生之日起近30餘年,16位彙編語言代碼,1M內存定址,調用中斷一條條執行的理念和方式竟然一點都沒有改變,雖然經各大主板商不懈努力,BIOS也有了ACPI、USB設備支持,PnP即插即用支持等新東西,但是這在根本上沒有改變BIOS的本質,而英特爾為了遷就這些舊技術,不得不在一代又一代處理器中保留著16位實模式(否則根本無法開機的)。但是,英特爾在2001年開發了全新的安騰處理器,採用IA-64架構,並推出了全新的EFI。後來證明,安騰處理器、IA-64架構沒有推廣開來,而EFI和後繼的UEFI卻發揚光大,成為現在電腦的主要預啟動環境。

EFI,是Extensible Firmware Interface的詞頭縮寫,直譯過來就是可擴展固件介面,它是用模塊化、高級語言(主要是C語言)構建的一個小型化系統,它和BIOS一樣,主要在啟動過程中完成硬體初始化,但它是直接利用載入EFI驅動的方式,識別系統硬體並完成硬體初始化,徹底摒棄讀各種中斷執行。EFI驅動並不是直接面向CPU的代碼,而是由EFI位元組碼編寫成,EFI位元組碼是專用於EFI的虛擬機器指令,需要在EFI驅動運行環境DXE下解釋運行,這樣EFI既可以實現通配,又提供了良好的兼容。此外,EFI完全是32位或64位,摒棄16位實模式,在EFI中就可以實現處理器的最大定址,因此可以在任何內存地址存放任何信息。另外,由於EFI的驅動開發非常簡單,基於EFI的驅動模型原則上可以使EFI接觸到所有硬體功能,在EFI上實現文件讀寫,網路瀏覽都是完全可能的。i,BIOS上的的CMOS設置程序在EFI上是作為一個個EFI程序來執行的,硬體設置是硬體設置程序、而啟動管理則是另一個程序,保存CMOS又是另一個程序,雖然它們在形式的Shell上是在一起的。

EFI在功能上完全等同於一個輕量化的OS,但是EFI在制定時就定位到不足以成為專業OS的地位上,首先,它只是一個硬體和操作系統間的一個介面;其次,EFI不提供中斷訪問機制,EFI必須用輪詢的方式檢查並解釋硬體,較OS下的驅動執行效率較低,最後,EFI只有簡單的存儲器管理機制,在段保護模式下只將存儲器分段,所有程序都可以存取任何一段位置,不提供真實的保護服務。伴隨著EFI,一種全新的GUID磁碟分區系統(GPT)被引入支持,傳統MBR磁碟只能存在4個主分區,只有在創建主分區不足4個時,可以建立一個擴展分區,再在其上建立被系統識別的邏輯分區,邏輯分區也是有數量的,太多的邏輯分區會嚴重影響系統啟動,MBR硬碟分區最大僅支持2T容量,對於現在的大容量硬碟來說也是浪費。GPT支持任意多的分區,每個分區大小原則上是無限制的,但實際上受到OS的規定限制不能做到無限,不過比MBR的2T限制是非常重要的進步。GPT的分區類型由GUID表唯一指定,基本不可能出現重複,其中的EFI系統分區可以被EFI存取,用來存取部分驅動和應用程序,雖然這原則上會使EFI系統分區變得不安全,但是一般這裡放置的都是些「邊緣」數據,即使其被破壞,一般也不會造成嚴重後果,而且也能夠簡單的恢復回來。

當EFI發展到1.1的時候,英特爾決定把EFI公之於眾,於是後續的2.0吸引了眾多公司加入,EFI也不再屬於英特爾,而是屬於了Unified EFI Form的國際組織,EFI在2.0後也遂改稱為UEFI,UEFI,其中的EFI和原來是一個意思,U則是Unified(一元化、統一)的縮寫,所以UEFI的意思就是「統一的可擴展固件介面」,與前身EFI相比,UEFI主要有以下改進:

首先,UEFI具有完整的圖形驅動功能,之前的EFI雖然原則上加入了圖形驅動,但為了保證EFI和BIOS的良好過渡,EFI多數還是一種類DOS界面(仍然是640*480VGA解析度),只支持PS/2鍵盤操作(極少數支持滑鼠操作),不支持USB鍵盤和滑鼠。到了UEFI,則是擁有了完整的圖形驅動,無論是PS/2還是USB鍵盤和滑鼠,UEFI一律是支持的,而且UEFI在顯卡也支持GOP VBIOS的時候,顯示的設置界面是顯卡高解析度按640*480或1024*768顯示,因此畫面雖小但很清楚,但是這樣會導致屏幕周圍大片留黑,不過魚和熊掌不可兼得,除非UEFI默認窗口大小也是最高解析度

其次,UEFI具有一個獨特的功能,安全啟動,而EFI是沒有安全啟動的,安全啟動(Secure Boot),實際上通俗的解釋是叫做固件驗證。開啟UEFI的安全啟動後,主板會根據TPM晶元(或者CPU內置的TPM)記錄的硬體簽名對各硬體判斷,只有符合認證的硬體驅動才會被載入,而Win8以後的Windows則是在操作系統載入的過程中對硬體驅動繼續查簽名,符合Windows記錄的硬體才能被Windows載入,這在一定程度上降低了啟動型程序在操作系統啟動前被預載入造成的風險,但是這也會造成系統安裝變得壟斷

無論EFI還是UEFI,都必須要有預載入環境、驅動執行環境、驅動程序等必要部分組成,為了支持部分舊設備(如在UEFI下掛載傳統MBR硬碟,不支持UEFI啟動的顯卡在UEFI下仍然支持運行等),還需要一個CSM兼容性支持模塊、EFI或UEFI都是僅支持GPT磁碟引導系統的,下面就具體談一下EFI或UEFI啟動計算機的過程。

一般地,預載入環境和驅動執行環境是存儲在UEFI(UEFI BIOS)晶元中的,當打開電源開關時,電腦的主要部件都開始有了供電,與BIOS不同的是,UEFI預載入環境首先開始執行,負責CPU和內存(是全部容量)的初始化工作,這裡如出現重要問題,電腦即使有報警喇叭也不會響,因為UEFI沒有去驅動8255發聲,不過預載入環境只檢查CPU和內存,如果這兩個主要硬體出問題,屏幕沒顯示可以立即確定,另外一些主板會有提供LED提示,可根據CPU或內存亮燈大致判斷故障。

CPU和內存初始化成功後,驅動執行環境(DXE)載入,當DXE載入後,UEFI就具有了枚舉並載入UEFI驅動程序的能力,在此階段,UEFI會枚舉搜索各個硬體的UEFI驅動並相繼載入,完成硬體初始化工作,這相比BIOS的讀中斷載入速度會快的多,同樣如載入顯卡的UEFI驅動成功,電腦也會出現啟動畫面,硬體驅動全部載入完畢後,最後同BIOS一樣,也得去啟動操作系統。

在啟動操作系統的階段,同樣是根據啟動記錄的啟動順序,轉到相應設備(僅限GPT設備,如果啟動傳統MBR設備,則需要打開CSM支持)的引導記錄,引導操作系統並進入,這裡需要注意的是,UEFI在檢測到無任何操作系統啟動設備時,會直接進入UEFI設置頁面,而不是像BIOS那樣黑屏顯示相關信息。

綜上對BIOS和UEFI啟動計算機過程的敘述,可以概括為:BIOS先要對CPU初始化,然後跳轉到BIOS啟動處進行POST自檢,此過程如有嚴重錯誤,則電腦會用不同的報警聲音提醒,接下來採用讀中斷的方式載入各種硬體,完成硬體初始化後進入操作系統啟動過程;而UEFI則是運行預載入環境先直接初始化CPU和內存,CPU和內存若有問題則直接黑屏,其後啟動PXE採用枚舉方式搜索各種硬體並載入驅動,完成硬體初始化,之後同樣進入操作系統啟動過程。

此外,BIOS是16位彙編語言程序,只能運行在16位實模式,可訪問的內存只有1MB,而UEFI是32位或64位高級語言程序(C語言程序),突破實模式限制,可以達到要求的最大定址。

想看到更多這類內容?去APP商店搜IT之家,天天都有小歡喜。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT之家 的精彩文章:

4.9元數據線、14.9元三星耳機、外婆橋蝦皮250g僅20.5元……
IT之家學院:手把手教你全盤加密(Windows篇)
Win10發布兩周年回望中國市場:幹掉Win7任重道遠
太殘暴:小米MIUI 9內測碼被黃牛盯上,最高要價100元
魅族PRO 7採用定製版Flyme 6 UI:圖標更圓潤

TAG:IT之家 |

您可能感興趣

《我的英雄學院》將與TOWER RECORDS CAFE聯動
《我的英雄學院》in J-WORLD TOKYO舉辦決定
被指抄襲美軍學院校徽!Nike 取消 UNDEFEATED 聯名系列並致歉
被指抄襲美軍學院校徽!Nike 取消 UNDEFEATED 聯乘系列並致歉
《我的英雄學院》與J-WORLD TOKYO聯動決定
XIUMIN向開設學院的朋友送去花環!賀詞被贊SENSE滿分
IT之家學院:4G網路LTE大科普
【WELL學院】帶你走進RCA
我的英雄學院ILLEGALS 第0話
巴黎高科學院訪問教授Laurent CATOIRE應邀在機動學院作學術報告
我的英雄學院外傳ILLEGALS 第2話
【IT之家學院】Raid到底是啥?
倫敦國王學院和 NVIDIA 合作,為 NHS 內的醫院建設人工智慧平台
形象規劃師·自學院:什麼是AICI·CIM?
ALICEACADEMY(艾麗絲學院)美妝試驗場:海灘上演繹彩妝時尚大片
IT之家學院:最詳細的IPv6獲取教程
《我的英雄學院》主角在《JUMP FORCE》中被指種族歧視
勝利為YGX學院宣傳 客串一下WINNER忙內
PTC收購麻省理工學院AR創企Waypoint Labs
華為ICT學院湖北生物科技職業學院HCNA-R&S定製班順利結課