Linux 磁碟分割 UEFI 邏輯分割 MBR GPT

Linux磁區配置從頭開始 搞定MBR、GPT與UEFI

2015-01-13
本文將以手動指令操作的方式來做示範,讓大家能夠清楚地分辨UEFI、GPT分割與Linux的搭配及其運作方式,進而能更順暢地操作Linux這個免費又好用的作業系統。
在圖9的畫面中當然是選擇「Arch Linux archiso x86_64 UEFI CD」選項開機,進入系統後,一樣要注意的是硬碟分割方式,在這裡GRUB與syslinux兩種開機管理程式分割方式倒是沒什麼不同,而且在UEFI模式下,GRUB與syslinux這兩者可以同時安裝同時存在。

在UEFI模式下,除了系統與swap分割外,最主要是必須多一個給EFI使用的EFI System Partition分割,一般來說,這個分割之後會掛載在「/boot」中,因此通常會建立在第一個分割,此分割的大小建議至少512MB,而且是檔案系統型態是FAT32。

筆者使用「mkpart primary fat32 0MB 512MB」來建立這個分割,然後用指令「set 1 boot on」將這個分割設定為EFI System Partition型態。若是使用gdisk分割,EFI System Partition的分割型態編號則為EF00。EFI System Partition建立後,再分別建立系統與swap分割,建立後的分割表配置如圖10所示。


▲圖10 建立後的分割表配置。

之後在格式化時,因為EFI System Partition的格式化為FAT32,因此使用「mkfs.fat -F32 /dev/sda1」指令將這個分割格式化為FAT32。格式化之後掛載系統到「 /mnt」,接著在「/mnt」下建立「boot」目錄,然後將EFI System Partition掛載到「/mnt/boot」目錄下。

然後開始利用pacstrap安裝基礎系統base以及grub、dosfstools、efibootmgr加上syslinux。如果只安裝syslinux這個開機管理員,那安裝syslinux與efibootmgr就可以,若是使用GRUB,那就得安裝grub、eifbootmgr與dosfstools這三個軟體。

接著先設定syslinux,在使用arch-chroot進入「 /mnt」內所安裝的Arch Linux系統後,用「mkdir -p /boot/EFI/syslinux」建立syslinux的EFI目錄,然後執行「cp -r /usr/lib/syslinux/efi64/* /boot/EFI/syslinux」指令將syslinux有關EFI開機的檔案拷貝到剛剛所建立的「/boot/EFI/syslinux」目錄內。

再來執行指令「efibootmgr -c -d /dev/sda -p 1 -l /EFI/syslinux/syslinux.efi -L "Syslinux"」,在UEFI中建立一個名稱為Syslinux的開機選項。其中,「-c」選項表示建立,「-d /dev/sda -p 1」表示在「/dev/sda」中的第一個分割有syslinux開機管理員,「-l /EFI/syslinux/syslinux.efi」則代表使用的是syslinux開機管理員,「-L "Syslinux"」是指在UEFI中建立的開機選項名稱。

設定完開機選項後,因為原「/boot/syslinux/syslinux.cfg」檔案主要是給傳統BIOS開機使用,因此將「/boot/syslinux/syslinux.cfg」拷貝一份到「/boot/EFI/syslinux」目錄下,接著修改syslinux.cfg這個檔案,將Arch Linux系統root分割區的UUID設定到syslinux.cfg中。額外要注意的是,因為vmlinuz-linux、initramfs-linux.img以及initramfs-linux-fallback.img這三個Linux作業系統核心啟動檔案因為位置在「/boot」,因此路徑前要再往上加一層,syslinux.cfg的設定如圖11所示。


▲圖11 syslinux.cfg的設定內容。

到這裡,就完成syslinux的設定,接著設定GRUB。GRUB比較簡單,使用指令「grub-install --target=x86_64-efi –efi-directory=/boot --bootloader-id=arch_grub --recheck –debug」指令就可以將GRUB有關UEFI的檔案安裝到「/boot」目錄下,並在UEFI內加入開機選項,其中的「--bootloader-id=arch_grub」參數就是在UEFI內加入arch_grub這個開機選項名稱。最後,使用「grub-mkconfig -o /boot/grub/grub.cfg」指令產生GRUB的開機選單設定檔,就完成GRUB的設定。

重開機後按下〔F11〕功能鍵,便可以看到Syslinux與arch_grub這兩個剛剛添加的UEFI開機選項,如圖12所示。


▲圖12 出現Syslinux與arch_grub這兩個UEFI開機選項。

這兩個選項都可以開機進入Arch Linux系統中,只是一個是進入syslinux開機管理程式選單,另一個則是進入GRUB開機管理程式選單。

efibootmgr使用與UEFI設定

可以直接輸入「efibootmgr」指令來檢視目前UEFI中的開機選項,如圖13所示。


▲圖13 透過「efibootmgr」指令來檢視UEFI內的開機選項。

此時應該可以在列表中看到Syslinux及arch_grub這兩個開機選項,可以使用efibootmgr去移除裡面的開機選項,例如要移除Syslinux就使用「efibootmgr -b 0004 -B」指令,-b是指定要移除的編號,-B則是指進行移除。不過特別要注意的是,除了自己加入的選項外,系統內建的選項就不要去移除,以免發生慘劇。

另外,也可以在開機時按下〔F2〕功能鍵,進入UEFI的系統選單中,如圖14所示。


▲圖14 按下〔F2〕鍵進入UEFI系統選單。

將Syslinux這個UEFI開機選項設定為第一個預設開機選項,之後系統就會預設由Syslinux開機選項開機進入syslinux開機管理程式選單中。

結語

到這裡做個簡單明瞭的總結,Linux本身使用傳統BIOS開機方式,也能使用GPT分割,差別只是在使用GRUB開機時,GRUB需要一個額外的BIOS Boot分割,syslinux則不需要。

而使用UEFI模式開機時,GRUB與syslinux則都需要一個額外的EFI System分割,這分割須格式化為FAT32且掛載在「/boot」目錄下,並安裝相關UEFI檔案,同時都必須透過efibootmgr在UEFI中加入開機選項。GRUB安裝程式會自動呼叫efibootmgr,syslinux則必須另外執行efibootmgr指令,並且GRUB與syslinux可以同時並存使用。

讀者本身的電腦環境與實際使用的Linux發行版可能跟筆者不同,但基本上UEFI與Linux系統及開機管理程式上的搭配應該是相同的,希望透過本文詳盡的手動指令操作示範,能讓讀者更深入了解UEFI及GPT分割與Linux的搭配與運作方式,進而能更順暢地運用Linux這個強大的作業系統。

<本文作者:黃明華,目前主要擔任雲端及儲存技術顧問,負責協助開發相關應用產品。擅長研究各式系統及程式技術,並提供相關技術支援、諮詢、導入及評估服務,特別是自由軟體/開放原始碼相關系統與技術。>


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!