UEFI BIOS
UEFI的版本發展
最初制定的EFI版本2000年12月的1.02版。在2002年的12月又釋出了加入EFI驅動程式模型的1.10版。於2005年,Intel將此規格提供給負責UEFI開發和推廣的UEFI論壇。為了反映這點,EFI也被更名為UEFI。在大部分的文件資料中,EFI和UEFI講的是一樣的東西。
UEFI論壇在2007年1月釋出2.1版的規範。目前最新公開的版本就是2009年5月發佈的2.3版。概括而論,凡依照UEFI論壇規範,使用C語言寫作的BIOS即為UEFI BIOS。
UEFI論壇成員類別 | |
---|---|
IBV(獨立BIOS 廠商) | AMI、Insyde、Phoenix |
IHV(獨立硬體廠商) | AMD、Apple、Dell、HP、IBM、Intel、聯想 |
ISV(獨立軟體廠商) | 微軟 |
EFI 系統分割區 (EFI System Partition)
EFI 系統分割區 (ESP)為一個EFI頁腦開機時所必要的 FAT32 格式的實體分割區,雖然不同的系統劃分的大小不同,但通常會小於512MB,ESP這個區域位置主要是讓UEFI韌體用以啟動UEFI開機載入程式和應用程式,其次,ESP也是一個與作業系統無關的EFI 機器必備分割區,必需標示為EF00 或 ef00 分割類型以及設定啟動9boot)旗標。 Linux系統上的ESP通常使用/boot/efi 目錄為掛載點,一旦Linux系統正常啟動後即可透過此目錄存取其內容。
相容性支援模組(Class Support Module;CSM)與平台等級 (Platform Class)
為了提供回溯相容性,大部份UEFI韌體廠商會透過相容性支援模組(CSM)來讓機器可以由傳統BIOS模式開機以啟動MBR磁碟,這主要是兼顧了傳統BIOS之相容性。 UEFI論壇則是根據相容性支援模組是否存在與否而定義出四種平台等級(類型),即是等級0到等級3,如下圖所示:
- 等級 0:等級0 乃是指純粹的舊式BIOS平台,完全不支援UEFI平台 。
- 等級 1:只有UEFI CSM的平台系統,只能在UEFI上執行舊式的BIOS介面,使用軟體插斷 INT10、INT13等。
- 等級 2:具有混合UEFI和CSM雙介面的平台系統,此等級提供最彈性的硬體選擇,可依據支援舊式介面或UEFI介面的擴充ROM來提供介面服務,因此,等級2可以支援新和舊二種開機程序並且仍可以使用額外的UEFI的預先啟動功能(如Shell和UEFI應用程式) 。
- 等級 3:這是完全排除舊式BIOS介面的平台,亦即在等級2中移除了CSM,因此只能啟動於唯有UEFI支援的BIOS,UEFI開機載入程式,UEFI作業系統。
一般而言,為了提供最大的使用彈性和相容性,目前大部份韌體廠商目前均支援等級2,但允許使用者自行設定停用或啟用此支援模組功能。下圖為一電腦的UTFI BIOS中設計的相容性支援模組的選項,使用者可以自行啟用或停用此相容性支援模組。
"Disabled" --------關閉 Option ROM.
"UEFI Only" ------僅啟動 UEFI Option ROM.
"Legacy Only" ---僅啟動 Legacy Option ROM.(預設值)
"Legacy First" ---優先啟動 UEFI Option ROM.
"UEFI First" ------優先啟動 Legacy Option ROM.
透過CSM模組的開機方式,即模擬出傳統的Legacy BIOS進行開機
Secure Boot 安全啟動設定
安全啟動是UEFI的一個可選標準(在Legacy模式下是無效的,無需設定),在一些UEFI電腦上沒有這一選項。採用了安全啟動的主機板在出廠時,可內建一些可靠的公鑰。只有用對應的私鑰簽署過的軟體(系統),才能在啟動過程中通過內建公鑰的認證從而被載入。惡意軟體不可能經過認證,自然無法被載入。因此,此舉可保證電腦啟動安全。UEFI沒有規定公鑰的具體頒發者,在預裝Win8/8.1的電腦上微軟則強制OEM廠商採用安全啟動標準並置入微軟自己的公鑰。預裝Win8/8.1電腦出廠時安全啟動預設為“開啟(Enable)”狀態,這導致在預設狀態下無法引導包括Win7在內的其他作業系統(目前,已有系統可通過認證),不過使用者可以選擇將其關閉。
這裡面有兩個選項:
第一個,安全啟動(Secure boot)選項。如果我們要在UEFI模式下安裝Win8/8.1之外的系統必須選擇關閉。另外,還需要注意在上文CSM選項設定中提到過的CSM與安全啟動相沖突的問題。鑑於次,通常我們將其設定為“關閉(Disable)”,關閉狀態下,就不需要考慮第二個設定選項了。
第二個,重置為設定模式/恢復出廠設定(Reset to Setup Mode/Restore Factory Keys)選項。這個選項用於清除或恢復內建的安全啟動金鑰。一般我們無需設定該選項。如果你的電腦預裝了Win8/8.1,曾改動過相關設定選項,現在想恢復預設設定(包括開啟安全啟動),則可以通過這個選項將金鑰恢復到預設。
引用:http://www.iruanmi.com/uefi-legacy-bios-setup/
UEFI BIOS哪裡好?
UEFI是藉由UEFI論壇制定的嚴謹規範來達成標準化,並用模組化之C語言方式的參數堆疊傳遞,藉由動態連結形式所建構出來的系統,相較於使用組合語言的傳統BIOS更易於實作,在容錯和錯誤更正的表現上更加優良,更好開發。UEFI是以32或64位元CPU保護模式執行(也稱為Flat Mode),突破傳統16位元代碼的定址能力,可達到CPU的最大定址空間。
定址空間更彈性
UEFI BIOS利用載入EFI driver的形式,來進行硬體的辨識/控制及系統資源掌控。
傳統BIOS是以真實模式中斷向量的方式增加硬體功能。它要將一段類似於驅動程式的16位元代碼,放置在記憶體0x000C0000至0x000DFFFF之間。這段記憶體空間有限(128KB),因此,當必須放置的option ROM超過128KB時,傳統BIOS便無能為力。
很多時候傳統BIOS的工程師為了解決這類問題,像剛剛提到的介面卡BIOS容量過大,便要想辦法利用可能的排列組合硬擠出空間來放驅動代碼。而重組過程有時不小心造成一些副作用,例如才剛解決的bug,重組後又再發生!也就是說,UEFI BIOS可以更有系統的分配儲存空間,避免使用強制定址。
什麼系統都能用
另外,傳統BIOS的硬體服務程式都是以16位元代碼的形式存在,在增強模式下執行的作業系統想存取這些服務會有困難。因此BIOS提供的服務在現實中只能提供給MS-DOS之類的系統用。
相對的,UEFI系統下的驅動並不是可以直接在CPU執行的代碼,而是用EBC(EFI Byte Code)這種專用於EFI driver的虛擬機器指令,該指令必須在UEFI的DXE階段被解壓縮後翻譯執行。
如此便有更佳的向下相容性,因為EFI driver是彈性的驅動程式模組架構,可不斷的擴充驅動程式及介面,不用重新編寫,所以就無需考慮因系統升級所衍生的相容性因素。
開發維護更容易
加上EFI driver開發簡單,所有的PC零組件廠商都可以參與,就像現代作業系統的開發模式,這樣的模式曾使Windows系統短短幾年就變得無比強大。有了EFI driver,也可以讓顯示卡在開機階段就載入某種程度的功能,進而可以把傳統文字介面為主的BIOS轉成圖形介面。
精簡系統用途大
最後還有EFI Shell,這是個精簡的作業系統,可以讓使用者進行BIOS的更新、系統診斷、安裝特定軟體。有了UEFI BIOS甚至可以播放CD和DVD而不需完全載入OS,EFI driver可以被載入或卸載,連TCP/IP核心程式都可以使用。基於EFI的driver model可使UEFI系統接觸到所有的硬體功能,在進入作業系統之前瀏覽網站不再是天方夜譚,甚至實作起來也非常簡單。總之,對使用者而言,多了一個方便的環境以及華麗的圖形介面,是最明顯的好處。
轉自:http://www.techbang.com/posts/4356-fully-understand-uefi-bios-theory-and-actual-combat-1-liu-xiudian