細說裝機的武功祕笈,深入剖析(Legacy BIOS和UEFI)

細說裝機的武功秘笈,深入剖析(Legacy BIOS和UEFI)

啟動

UEFI與Legacy+UEFI啟動模式的區別,很多重裝電腦操作系統的用戶如果使用的是光盤啟動,都要跟BIOS打交道,很多用戶會發現,當進入Bios設置啟動模式時,會發現有兩種模式,即Legacy+UEFI和UEFI。因此小編接下來就跟大家講講這裡兩者之間的區別,感興趣的朋友一起來看一下吧!

在說之前我們需要先了解下BOOT是什麼?下面一起來看看BOOT、BIOS、UEFI之間區別介紹。

1. 什麼是BOOT?

BOOT其實是你按開機鍵之後,在電腦微軟操作系統運行之前就自動運行的一段小程序。表象上就是Windows引導畫面之前那些黑屏藍屏的英文那個階段就是BOOT了。通過這段小程序,它就可以初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬件環境帶到一個合適的狀態,以便為最終調用操作系統內核準備好正確的環境。

2. 什麼是BIOS?

BIOS它其實也是在電腦裡的微軟系統運行之前,但是BOOT出現後加載運行的一個預啟動的操作環境程序,嚴格來算是軟件。是一組固化到計算機內主板上一個ROM芯片上的程序,直譯過來後中文名稱就是”基本輸入輸出系統”。它保存著計算機最重要的基本輸入輸出的程序、系統設置信息、開機後自檢程序和系統自啟動程序。其主要功能是為計算機提供最底層的、最直接的硬件設置和控制。

重點是在很多教程中很多人都把它和BOOT混淆,很多BOOT設置,也叫BIOS設置了。但是嚴格起來說了,BOOT設置是說電腦一按開機鍵後,出現那段黑屏界面BOOT運行時,你按快捷鍵調出各種BOOT後的程序,例如BIOS的這個按鍵過程。而BIOS設置是,你必須按對快捷鍵,從BOOT進入BIOS程序後,在BIOS程序中的設置的這個過程。

編寫語言:彙編語言編寫的程序

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

BIOS啟動流程:

  1. 系統開機 - 上電自檢(Power On Self Test 或 POST)。

  2. POST過後初始化用於啟動的硬件(磁盤、鍵盤控制器等)。

  3. BIOS會運行BIOS磁盤啟動順序中第一個磁盤的首440bytes(MBR啟動代碼區域)內的代碼。

  4. 啟動引導代碼從BIOS獲得控制權,然後引導啟動下一階段的代碼(如果有的話)(一般是系統的啟動引導代碼)。

  5. 再次被啟動的代碼(二階段代碼)(即啟動引導)會查閱支持和配置文件。

  6. 根據配置文件中的信息,啟動引導程序會將內核和initramfs文件載入系統的RAM中,然後開始啟動內核。

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卻發揚光大,成為現在電腦的主要預啟動環境。

3. 什麼是UEFI?

UEFI它其實和BIOS是同一個性質的東西,同一種程序,是隨著發展出現的BIOS升級版,被看做是有近20多年曆史的BIOS的繼任者。全稱“統一的可擴展固件接口”,它也是在電腦裡微軟系統運行之前,但是BOOT出現後加載運行的一個預啟動操作環境程序。因為硬件發展迅速,傳統式(Legacy)BIOS成為進步的包袱,現在已發展出最新的UEFI(UnifiedExtensibleFirmwareInterface)可擴展固件接口。但造化弄人的是,理論上說是比BIOS更先進的UEFI,卻還是諸多支持不足,往往很多是UEFI啟動電腦,到頭來還是切換回BIOS。

編寫的語言:高級程序設計語言C語言

UEFI啟動流程:

  1. 系統開機 - 上電自檢(Power On Self Test 或 POST)。

  2. UEFI 固件被加載,並由它初始化啟動要用的硬件。

  3. 固件讀取其引導管理器以確定從何處(比如,從哪個硬盤及分區)加載哪個 UEFI 應用。

  4. 固件按照引導管理器中的啟動項目,加載UEFI 應用。

  5. 已啟動的 UEFI 應用還可以啟動其他應用(對應於 UEFI shell 或 rEFInd 之類的引導管理器的情況)或者啟動內核及initramfs(對應於GRUB之類引導器的情況),這取決於 UEFI 應用的配置。

4. BIOS和UEFI有什麼區別?

BIOS和UEFI有什麼區別,我們這裡只說說BIOS電腦和UEFI電腦,在U盤啟動使用上的區別。

①.電腦是UEFI模式的可切換回BIOS模式,BIOS模式的變不了UEFI模式。程序功能性上其實意義是同樣一種程序,而UEFI本身應該是一種更先進的接口,但是因為電腦硬件更新換代還沒那麼快,支持不足,很多UEFI電腦還是有支持切換回BIOS的模式選項。

②.進入BIOS和進入UEFI快捷鍵是一樣的,軟件界面設置操作也差不多。

③.但是BIOS和UEFI的啟動引導支持是不同的,支持BIOS的U盤啟動,很多在UEFI下就無法啟動,所以往往支持BIOSU盤啟動的U盤,在UEFI電腦上就必須切換回BIOS。

④.GHOST系統鏡像或者GHOST這個範疇裡的各類軟件與系統重裝工具,在UEFI啟動電腦上重裝容易出現各類問題,兼容性沒傳統BIOS的電腦好。

傳統的BIOS引導安裝的電腦,分區表的格式是MBR的,裝機基本是BIOS引導+MBR分區的格式。

而UEFI引導安裝的電腦,硬盤分區表是GPT格式的,操作系統安裝後它是運行在UEFI引導+GPT分區的格式基礎上。從硬盤分區上來說UEFI和BIOS就是兩個完全不同的分區表格式了,所以往往用GHOST備份出來的系統,你再重裝還原,最好是原BIOS的裝在BIOS引導方式的電腦上,原UEFI的裝在UEFI的電腦上。不然很容易出問題。

最好的解決方式就是,如果你的電腦是UEFI模式的,你又不想切換成BIOS方式,UEFI模式的電腦最好使用U當家工具來安裝微軟官方原版原盤的ISO鏡像,而不是ghost系統。因為微軟官方原版鏡像就可以對UEFI和GPT一次性的設置好。但是我要和你說一聲,假設你想UEFI,那麼你只能裝出產年份在win8及以後的win10,這兩款64位系統。win8以下的微軟系統你就別折騰了,因為win7,xp,2003那些,它們出生的那個年代還沒有UEFI呢,都不是原生支持UEFI的。

但是從我個人的建議來說呢,如果你買的電腦原來預裝的是UEFI模式下安裝的系統,最好還是切換回BIOS模式,然後重新全部格式化硬盤GPT分區轉換回MBR,老老實實用BIOS+mbr分區裝系統吧。

⑤.UEFI電腦只支持64位系統,而BIOS電腦無法支持掛載單塊空間大於2T空間的硬盤。

5. 使用過程中對於BIOS和UEFI的注意事項

①如果是重裝系統(就是電腦原先已經裝過微軟系統),BIOS的就不用多說了沒啥糾結的,BIOS的就直接用U當家然後看教程就裝了。

②UEFI的就要糾結一下了,如果電腦原先裝過系統是UEFI+GPT分區模式的。

③使用U大俠BIOS製作U盤,UEFI的電腦必須切換成BIOS,並且硬盤分區是GPT的要全部轉換成MBR,才能GHOST重裝。硬盤轉換分區原先的資料可能全無。因為你原先是UEFI+GPT分區的電腦,就算你切換為BIOS模式能成功啟動U大俠U盤,BIOS模式下是無法識別出原先UEFI模式下的GPT分區的硬盤的。

④如果是新裝系統(就是電腦原先沒裝過微軟系統),這種情況也有很多,例如你電腦買回來是沒帶系統的,廠家不包預裝系統只有DOS,或者是蘋果電腦原先自帶蘋果系統,或者是電腦買回來預裝的是Linux系統。

這種情況,不論是BIOS還是UEFI,我都不建議你用GHOST鏡像新裝,問題很多的。最好就是下載微軟官方原版原盤的ISO鏡像,用U大俠工具(不論BIOS版還是UEFI版都可以)直接一鍵把微軟官方原版鏡像寫入U盤,然後U盤啟動直接走官方原版鏡像的安裝流程。

因為微軟官方原版原盤鏡像,雖然是未激活,而且也沒驅動,但是對電腦新裝引導支持好,可以讓你真正電腦重新分區一次,裝好各種支持。一般重裝才用GHOST,新裝最好是原版。

補充

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語言程序),突破實模式限制,可以達到要求的最大尋址。

啟動方式和硬盤分區方式的組合

MBR分區

MBR的意思是“主引導記錄”,是IBM公司早年間提出的。它是存在於磁盤驅動器開始部分的一個特殊的啟動扇區。這個扇區包含了已安裝的操作系統系統信息,並用一小段代碼來啟動系統。如果你安裝了Windows,其啟動信息就放在這一段代碼中——如果MBR的信息損壞或誤刪就不能正常啟動Windows,這時候你就需要找一個引導修復軟件工具來修復它就可以了。Linux系統中MBR通常會是GRUB加載器。MBR。當一臺電腦啟動時,它會先啟動主板自帶的bios系統,bios加載MBR,MBR再啟動Windows,這就是mbr的啟動過程。


GPT分區

GPT的意思是GUID Partition Table,即“全局唯一標識磁盤分區表”。他是另外一種更加先進新穎的磁盤組織方式,一種使用UEFI啟動的磁盤組織方式。最開始是為了更好的兼容性,後來因為其更大的支持內存(mbr分區最多支持2T的磁盤),更多的兼容而被廣泛使用,特別是蘋果的MAC系統全部使用gpt分區。gtp不在有分區的概念,所有CDEF盤都在一段信息中存儲。可以簡單的理解為更先進但是使用不夠廣泛的技術。因為兼容問題,gpt其實在引導的最開始部分也有一段mbr引導,也叫做“保護引導”,為了防止設備不支持uefi 區別。

內存支持:mbr最多支持2T,而gpt理論上是無限制的。

分區:mbr最多支持四個主分區,gpt沒有限制。如果你想跑多系統,mbr最多4個而gpt沒有限制。

系統:win7只能用mbr分區(也可以但是很麻煩,不建議),從Win8開始微軟建議你使用gpt。

其它:gpt是由uefi啟動的,而uefi是後來才提出的概念,兼容性和穩定性不如bios+mbr。

實際選擇

如果你的硬盤超過2T,那麼你必須選擇GPT+UEFI,2t以下就無所謂了;

如果你對電腦不太懂,那麼我建議你使用MBR,因為大多數電腦默認都是MBR bios啟動,如果你選擇了gpt那麼你必須在bios下設置啟動項,對於一個新人來說比較複雜,每家電腦的主板還有不同無疑增加了難度。

如果你比較精通,建議gpt。畢竟gpt代表了未來,可以預見早晚uefi會會替代掉bios。

從系統多方面來說,win7用戶建議mbr簡單易操作,8和10的用戶還是花點力氣學習一下gpt吧畢竟是一種趨勢。蘋果用戶就不用說了,gpt沒得選。

方案:Legacy BIOS + MBR(Win 7推薦),UEFI + GPT(Win 10推薦)。一般現在的主板都是支持這兩種方式啟動的。


分享到:


相關文章: