1. 程式人生 > >UEFI boot 和 Legacy boot 區別

UEFI boot 和 Legacy boot 區別

Legacy BIOS Boot 是如何啟動或引導的

當系統首次引導時,或系統被重置時,處理器會執行一個位於已知位置處的程式碼。這個位置在基本輸入 / 輸出系統(BIOS) 中。CPU 會呼叫這個重置向量來啟動一個位於快閃記憶體/ROM 中的已知地址處的程式。通常,它執行一個啟動自測(POST)來檢查機器。最後,它從引導驅動器上的主引導記錄(MBR)載入第一個扇區。

載入程式就位於 MBR 第一個扇區裡面。此時載入程式就被裝入 RAM 並執行。這個引導載入程式在大小上小於 512 位元組(一個扇區)。BIOS 自檢完成之後,將 MBR 的程式碼讀入記憶體,管理權交給 MBR , MBR 再讀取 DPT ,從 DPT (Disk Partition Table,硬碟分割槽表佔據 MBR 扇區的64個位元組(偏移01BEH--偏移01FDH))找出硬碟的所有分割槽哪一個是啟用的主分割槽。到這裡為止,所以系統都是一樣的。下面就有區別了。 DPT讀完找到主分割槽之後然後找到這個主分割槽的 PBR (Partition Boot Record 分割槽引導記錄),PBR位於啟用主分割槽的第一個扇區。安裝不同作業系統的時候 PBR 是會被改變的, XP 的 PBR 寫死的程式碼是去找 NTLDR 。而 Vista 和 7 的 PBR 裡寫進的就是去找 Bootmgr 。

這個時候顯示器上還沒有顯示引導管理器的介面。 Bootmgr 被找到之後管理權就交到了 Bootmgr。 Boot Manager 首先從 BCD 中讀取 Boot Manager 選單的語言版本資訊,然後再呼叫 BOOTMGR 與相應語言的 BOOTMGR.EXE.MUI 組成相應語言的啟動選單,之後才會在顯示器上顯示引導管理器,也就是選擇多作業系統的那個文字介面。最後,當你選擇了相應的作業系統,這裡是 Win7 或 8 (如果選擇 XP, 會轉入 XP 的啟動流程,找到 XP 的NTLDR 然後啟動), Bootmgr 就去尋找系統分割槽(系統分割槽和主分割槽的概念不是一樣的哦)Windows/System32 下的 Winload.exe 載入作業系統核心。

EFI Boot 介紹



EFI 的全稱是可擴充套件韌體介面 (Extensible Firmware Interface),它是 Intel 公司為全新型別的韌體體系結構、介面和服務提出的建議性標準。該標準有兩個主要用途:向作業系統的載入程式和某些在計算機初始化時執行的應用程式提供一套標準的執行環境;為作業系統提供一套與韌體通訊的互動協議。

簡單說,EFI 是 BIOS 的替代者。它為作業系統和韌體提供了更加強大、安全、方便的互動途徑。EFI 規範定義的介面,包括資料表包含平臺的資訊,可在 OS Loader 和 OS 的啟動和執行時服務。 

EFI 韌體提供了幾種技術優勢:

  1. 引導能力支援大容量磁碟(超過 2 TIB );

  2. 更快的啟動;

  3. 獨立 CPU 的體系結構;

  4. CPU 的獨立的驅動程式;

  5. 靈活的預作業系統環境,包括網路功能;

  6. 模組化設計;


EFI 啟動還需要一個特殊的分割槽表,該分割槽表指向一個特殊的檔案。通常情況下該檔案位於\EFI 路徑,EFI 啟動涉及到一個寫入到 firmware 中的 boot loader, EFI 並不把啟動程式放置在 MBR 中,firmware 知道如何讀取分割槽表以及 FAT 的檔案格式。EFI 系統分割槽是用 FAT 格式格式化的特定分割槽,其中包含 boot loader, 該 boot loader 是 EFI 可執行程式,可被 EFI boot manager 載入和執行。

Boot loader 被設定為一個可以通過韌體訪問的檔案。Boot loader 允許使用者選擇並載入作業系統。所有的 boot manager 都包含一個 EFI 變數,該變數被用來定義韌體配置引數。

MBR 與 GPT



MBR:主引導記錄(Master Boot Record,縮寫:MBR),又叫做主引導扇區,是計算機開機後訪問硬碟時所必須要讀取的首個扇區,它在硬碟上的三維地址為(柱面,磁頭,扇區)=(0,0,1)。

主引導扇區記錄著硬碟本身的相關資訊以及硬碟各個分割槽的大小及位置資訊,是資料資訊的重要入口。如果它受到破壞,硬碟上的基本資料結構資訊將會丟失,需要用繁瑣的方式試探性的重建資料結構資訊後才可能重新訪問原先的資料。主引導扇區內的資訊是通過分割槽程式寫入的,它是低階格式化的產物,和作業系統沒有任何關係(作業系統是建立在高階格式化的硬碟分割槽之上,是和一定的檔案系統相聯絡的)。

對於硬碟而言,一個扇區可能的位元組數為 128×2n (n=0,1,2,3)。大多情況下,取 n=2,即一個扇區(sector)的大小為 512 位元組。

MBR 的限制:

  1. 在 MBR 分割槽表中最多 4 個主分割槽或者 3 個主分割槽+1 個擴充套件分割槽:從主引導記錄的結構可以知道,它僅僅包含一個 64 個位元組的硬碟分割槽表。由於每個分割槽資訊需要 16 個位元組,所以對於採用 MBR 型分割槽結構的硬碟,最多隻能識別 4 個主要分割槽(Primary partition)。

  2. MBR 分割槽方案無法支援超過 2TB 容量的磁碟。因為這一方案用 4 個位元組儲存分割槽的總扇區數,最大能表示 2 的 32 次方的扇區個數,按每扇區 512 位元組計算,每個分割槽最大不能超過 2TB 。磁碟容量超過 2TB 以後,分割槽的起始位置也就無法表示了。

GPT:全域性唯一標識分割槽表(GUID Partition Table,縮寫:GPT)是一個實體硬碟的分割槽結構。GUID 分割槽表 (GPT) 是作為 Extensible Firmware Interface (EFI) 計劃的一部分引入的。相對於 PC 常用的較舊的主引導記錄 (MBR) 分割槽方案,GPT 提供了更加靈活的磁碟分割槽機制。

GPT 使用 GUID 分割槽表 (GPT) 磁碟分割槽系統。GPT 磁碟提供了以下好處:

  1. 最多允許 128 個分割槽;主引導記錄 (MBR) 磁碟可以支援 4 個主分割槽和擴充套件分割槽內的 124 個附加分割槽。

  2. 允許大於 2 TB 的卷容量,而 2 TB 是 MBR 磁碟的極限。

  3. 由於分割槽表提供了複製和迴圈冗餘校檢 (CRC) 保護,所以更加可靠。

  4. 能在所有基於 x64 平臺上用作儲存卷,包括執行 Windows XP Professional x64 Edition 的平臺。從 Windows Server 2003 SP1 開始,GPT 磁碟也可用作基於 x86 的Windows 平臺上的儲存卷。

  5. 可用作基於 x64 的 Windows 7、Windows Vista 和 Windows Server 2008 版本上的引導卷。從 Windows Server 2003 SP1 開始,GPT 磁碟也可用作基於 Itanium 的系統上的引導卷。

注意:Windows 僅支援從包含 Unified Extensible Firmware Interface (UEFI) 引導韌體的系統上的 GPT 磁碟引導。

GOP 與 VBIOS 的區別

VBIOS 是計算機圖形卡或整合圖形控制器的 BIOS,類似系統 BIOS 提供了一組軟體所使用的程式函式來訪問系統硬體一樣,VBIOS 也是提供了一組視訊相關的程式使用的函式訪問視訊硬體。通常由顯示卡廠商提供一個二進位制 Bin 檔案給 ODM 廠商,將其包在系統 BIOS 中。

而 GOP (Graphic Output Protocol) driver 是 EFI 架構下取代傳統 VBIOS 黑箱的 EFI driver,它被設計成在作業系統啟動之前支援基本需求的圖形輸出功能。

VBT: Video bios table。VBT 是一個特別製作的客製化過得特殊 binary 資料塊。靠 BMP utility 來編輯。VBT 同樣如同 legacy vbios 一樣記錄了 detail timing、GPIO Pins、Clock 等顯示方面的引數資訊。

兩者的不同點:Pre-OS boot 時期,EFI 是通過標準的 GOP protocol 來實現顯示 output。而 lagacy vbios需要通過 INT10 interrupter 來實現。


哪些系統支援 UEFI 啟動?為什麼當前我們不能支援 32bit 的 win8 UEFI 啟動?

目前我們的 BIOS 的 Build 生成是 x64 模式的,因此 32 位的 Win8 UEFI 是不被支援的。

PS:為什麼都是文字了呢?因為我懶唄,想看的還是會看。