本文將以手動指令操作的方式來做示範,讓大家能夠清楚地分辨UEFI、GPT分割與Linux的搭配及其運作方式,進而能更順暢地操作Linux這個免費又好用的作業系統。
在個人電腦上一般會有一段業界標準的韌體介面,稱作BIOS(Basic Input/Output System),BIOS主要功能為在電腦開機時執行系統各部分的自我硬體檢查,並啟動啟動程式或載入作業系統,而主開機紀錄(Master Boot Record,MBR)則是在PC系統上沿用多年搭配BIOS的硬碟啟動與分割方式,它是電腦開機後存取硬碟時首先會讀取的第一個磁區。電腦硬體在檢查分割表是否正確並且在完成自我硬體檢查後,電腦會將控制權交給硬碟上的啟動程式。
另外有一種說法是,將開頭的446位元組內容特別指定為主開機紀錄(MBR),緊接的稱為磁碟分割表(Disk Partition Table,DPT)。不過,這裡就以MBR統稱這兩部分,MBR本身的設計只能容納4個主要分割(Primary Partition),如果要將硬碟分割超過4個區域,就得使用延伸分割(Extended Partition),然後在延伸分割中再切割出新的邏輯分割(Logical Partition)磁區。
在以前硬碟磁區為512位元組時,MBR的分割區最大只能到2.2TB,雖然現在新的硬碟磁區設計為4K,可以讓MBR單一分割區最大到16TB。不過,這樣的方式會讓硬碟空間的使用效率降低。
隨著電腦硬體的快速發展,沿用多年的傳統BIOS和分割表MBR已經開始不敷現代所需,因此有了新一代的設計。
UEFI與新的分割表:GPT
Intel在2000年開發了可延伸韌體介面(Extensible Firmware Interface,EFI),準備用來取代傳統的BIOS,2005年Intel將EFI交由統一可延伸韌體介面論壇(Unified EFI Forum)來推廣與發展EFI,為了讓EFI成為中立公正的標準,EFI也被改名為UEFI(Unified EFI)。創立UEFI論壇時有11個電腦公司成員,包括Intel、IBM、Microsoft、AMI、Insyde及Phoenix等軟硬體與BIOS廠商。
UEFI其實是Intel在開發全新Itanium處理器架構時所研發出來的,目前中央處理器都已經進展到64位元,但是BIOS仍因相容的因素處在16位元模式,帶來了很多限制,因此配合著新作業系統的進展,Intel便開發出可以32位元或64位元模式執行的UEFI來取代舊有的BIOS。而跟隨著UEFI,新的磁碟分割表GPT(GUID Partition Table)也被設計出來取代MBR。
GPT單一分割區最大可以到達18EB(Exbibyte),分割區也可以高達128個,大幅超越了MBR的限制。GPT對於分割類型都是以GUID(Globally Unique Identifier)的形式分辨,像是Linux的一般資料分割,就是以EBD0A0A2-B9E5-4433-87C0-68B6B72699C7這樣一串GUID代表,而搭配GPT與UEFI,Linux系統裡面對於磁碟分割的識別,也會建議使用GUID的方式,這部分會在後面進一步說明。
而一般使用Linux時也大多習慣了BIOS搭配MBR的方式,接下來會針對在Linux環境中如何搭配使用UEFI與GPT的分割方式做詳細說明。
傳統BIOS搭配GPT
一般目前市面上的新電腦雖然幾乎都已配置UEFI,但其實為了相容起見,這些BIOS廠商在UEFI中還是會加入可以透過傳統BIOS開機的相容模式,而GPT雖是因為UEFI而生,但在Linux環境下,傳統BIOS還是可以使用GPT,這是因為GPT在設計時,已經預先保留原本的MBR。
這裡使用VirtualBox環境來模擬PC的環境,使用的Linux發行版本為Arch Linux,會使用Arch Linux的原因是,透過手動下指令切割磁碟分割區的方式,可以更了解整個系統操作的細節。
Arch Linux的介紹與安裝,在筆者另一篇文章中有詳細介紹,這裡就不做細部的說明,直接討論磁碟分割的切割部分。在Arch Linux環境中,筆者使用GNU Parted這個工具來進行GPT的建立與分割,parted是一個命列工具,以「parted /dev/sda」命令指定要切割「/dev/sda」這個分割區,就可以進入parted程式,如圖1所示。
|
▲圖1 以「parted /dev/sda」指令來切割分割區。 |
在parted中輸入「help」,就可以看到指令的列表與簡單說明,如圖2所示,而help加上指令,就能夠知道這個指令的詳細使用說明,譬如想要知道mklabel這個建立分割表的指令使用方法,就可以使用「help mklabel」指令來查詢詳細的使用方法說明。
|
▲圖2 在parted中輸入「help」,就能看到指令的列表與簡單說明。 |
這裡的環境是單獨一個未分割的「/dev/sda」硬碟,由說明可以知道,使用「mklabel gpt」指令可以在「
/dev/sda」建立GPT分割表,如果要建立MBR分割表或是刪除GPT分割表,則可以使用「mklabel msdos」指令,在parted中要清除GPT分割表,就是建立MBR分割表即可完成清除。
使用「mklable gpt」建立GPT分割表後,接著開始切出分割區,而GPT分割區的分割方式與會使用的開機管理程式有關,此處介紹Grub及syslinux這兩種。