相關文章

Title 在前面的文章,我們了解傳統BIOS和新一代UEFI開機流程的差別,看完LKK的傳統BIOS歷經20年不變所帶來的限制與包袱,接下來就要進入實戰的階段了,一起來認識升級UEFI的好處,以及目前有哪些硬體和作業系統可以支援這個新一代韌體。

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(獨立軟體廠商) 微軟

 

UEFI BIOS哪裡好?

UEFI是藉由UEFI論壇制定的嚴謹規範來達成標準化,並用模組化之C語言方式的參數堆疊傳遞,藉由動態連結形式所建構出來的系統,相較於使用組合語言的傳統BIOS更易於實作,在容錯和錯誤更正的表現上更加優良,更好開發。UEFI是以32或64位元CPU保護模式執行(也稱為Flat Mode),突破傳統16位元代碼的定址能力,可達到CPU的最大定址空間。

1. 定址空間更彈性

UEFI BIOS利用載入EFI driver的形式,來進行硬體的辨識/控制及系統資源掌控。

傳統BIOS是以真實模式中斷向量的方式增加硬體功能。它要將一段類似於驅動程式的16位元代碼,放置在記憶體0x000C0000至0x000DFFFF之間。這段記憶體空間有限(128KB),因此,當必須放置的option ROM超過128KB時,傳統BIOS便無能為力。

很多時候傳統BIOS的工程師為了解決這類問題,像剛剛提到的介面卡BIOS容量過大,便要想辦法利用可能的排列組合硬擠出空間來放驅動代碼。而重組過程有時不小心造成一些副作用,例如才剛解決的bug,重組後又再發生!也就是說,UEFI BIOS可以更有系統的分配儲存空間,避免使用強制定址。

2. 什麼系統都能用

另外,傳統BIOS的硬體服務程式都是以16位元代碼的形式存在,在增強模式下執行的作業系統想存取這些服務會有困難。因此BIOS提供的服務在現實中只能提供給MS-DOS之類的系統用。

相對的,UEFI系統下的驅動並不是可以直接在CPU執行的代碼,而是用EBC(EFI Byte Code)這種專用於EFI driver的虛擬機器指令,該指令必須在UEFI的DXE階段被解壓縮後翻譯執行。

如此便有更佳的向下相容性,因為EFI driver是彈性的驅動程式模組架構,可不斷的擴充驅動程式及介面,不用重新編寫,所以就無需考慮因系統升級所衍生的相容性因素。

3. 開發維護更容易

加上EFI driver開發簡單,所有的PC零組件廠商都可以參與,就像現代作業系統的開發模式,這樣的模式曾使Windows系統短短幾年就變得無比強大。有了EFI driver,也可以讓顯示卡在開機階段就載入某種程度的功能,進而可以把傳統文字介面為主的BIOS轉成圖形介面。

4. 精簡系統用途大

最後還有EFI Shell,這是個精簡的作業系統,可以讓使用者進行BIOS的更新、系統診斷、安裝特定軟體。有了UEFI BIOS甚至可以播放CD和DVD而不需完全載入OS,EFI driver可以被載入或卸載,連TCP/IP核心程式都可以使用。基於EFI的driver model可使UEFI系統接觸到所有的硬體功能,在進入作業系統之前瀏覽網站不再是天方夜譚,甚至實作起來也非常簡單。總之,對使用者而言,多了一個方便的環境以及華麗的圖形介面,是最明顯的好處。

傳統BIOS vs. UEFI BIOS重點差異
BIOS種類 傳統BIOS UEFI BIOS
程式語言 組合語言 C語言
資源控制 中斷向量
寫死的記憶體存取
寫死的輸出/輸入存取
驅動程式/協定
處理器運行環境 X86 16位元 CPU保護模式
擴充方式 接合中斷向量 載入驅動程式
第三方IHV和ISV支援性 較差 較佳且可以支援多平台
圖形化能力 較差 較佳
內建簡化的作業系統前環境

有誰在用UEFI?

UEFI支援必須藉由軟硬體的相互合作來達成,我們來看看目前市面上流通的產品中,哪些已經採用了UEFI。

支援UEFI的硬體

1. 2006年,蘋果電腦推出第一台使用Intel處理器架構的麥金塔電腦。從此開始用EFI/UEFI framework,而非以往搭載IBM PowerPC處理器的麥金塔電腦用的、發源於Sun Microsystems(昇陽電腦公司)的Open Firmware。

▲ 目前新版的Mac OS X都已經支援UEFI。

2. Intel自家的行動型、桌上型和伺服器電腦主機板自2006年起開始全面轉換為EFI/UEFI BIOS。例如從945系列晶片組開始,Intel的主機板就已經使用了該framework。

3. 此外,2008年開始,許多64位元電腦系統也正式支援EFI/UEFI BIOS。如IBM的x3450伺服器、微星科技具備ClickBIOS的主機板(包括下一篇介紹的EFINITY主機板)、HP筆記型電腦EliteBook系列和平板電腦、HP Compaq筆記型電腦較新的機種。

▲ 微軟到了Windows Server 2008才開始支援UEFI。

支援UEFI的作業系統

1. 早在2000年,Linux作業系統便可以支援EFI,當時是elilo EFIboot loader(開機載體),演化至今是EFI版本的grub。

2. 蘋果電腦到了Mac OS X 10.4(代號Tiger)的Intel版便可以支援EFI。

3. 2002年微軟給Itanium CPU使用的Windows 2000 Advanced Server Limited Edition及Datacenter Server Limited Edition版支援了EFI v1.10規範。後來的Windows Server 2003 for IA-64版和Windows XP 64-bit版本也支援EFI。至於UEFI的支援是從Windows Server 2008和Vista SP1的64位元版本開始,包括Windows 7也只有64位元版完整支援UEFI。

▲ Intel自家的D945PSN主機板。

使用 Facebook 留言

746bb0ee50507ed52b5866c4d028600f?size=48&default=wavatar
1.  Terry (發表於 2010年12月14日 13:03)
Mac OS X之所以不能裝在PC上,是不是因為BIOS不一樣的關係 ? 那以後如果都用UEFI,是不是就可以在PC上裝OS X了?
C3371477b3026522a337c60b52b8000b?size=48&default=wavatar
2.  My0613 (發表於 2010年12月14日 13:15)
※ 引述《Terry》的留言:
> Mac OS X之所以不能裝在PC上,是不是因為BIOS不一樣的關係 ? 那以後如果都用UEFI,是不是就可以在PC上裝OS X了?
(⊙ˍ⊙)
個人覺得應該沒那麼簡單,先不談版權的問題,
單單device driver 的支援要能應付PC的五花八門硬體,
就要不少人力來做了。
746bb0ee50507ed52b5866c4d028600f?size=48&default=wavatar
4.  Terry (發表於 2010年12月14日 13:52)
※ 引述《Alex》的留言:
> 不是出現過讓自組PC能用OS X的USB Dongle ?

這我知道,好像叫EFI-X <( ̄︶ ̄)>

發表回應

謹慎發言,尊重彼此。按此展開留言規則