快轉到主要內容

GRUB多硬碟EFI分區,雙系統開機設定方式 (custom grub menu entry)

· 民國114年乙巳年
·
切換繁體/簡體
分類   Linux系統 Linux使用技巧
標籤   GRUB Linux Windows
目錄

Add custom GRUB entries in Linux to boot different operating systems installed on separate disks, each having its own EFI partition.

問題點:如果有多個硬碟,分別安裝多個不同的作業系統,且各自帶有一個EFI分區,如何在GRUB開機選單加入其他系統的開機選項?

舉例:

  • 硬碟1安裝Ubuntu
  • 硬碟2安裝Windows
  • 硬碟3安裝FreeBSD

這三個硬碟各自帶有一個EFI分區,這樣的好處是能夠各自獨立開機,且不用擔心某個系統更新蓋掉EFI分區。

但是預設使用Ubuntu開機的情況下,GRUB是偵測不到另外二個系統的!Ivon希望可以在GRUB的開機選單,選擇要開機進入哪一個系統。

如圖所示,用Ubuntu的GRUB引導所有系統開機:

電腦開機的時候應該會看到GRUB的選單列出不同硬碟上的作業系統(主題另購):

這個時候得手寫規則加入,自訂GRUB的menu entry。

1. 列出所有硬碟的EFI分區
#

GRUB開機需要告訴它要到哪裡找到EFI,我使用最簡單的根據分區的UUID來尋找。這樣就不用寫複雜的(hd0,gpt1)語法了。

  1. 用Ubuntu系統開機

  2. 使用blikd指令取得所有硬碟的資訊

sudo blkid
  1. 我們關心的是EFI分區的UUID,所以只要看分區類型是vfat的就可以了。
sudo blkid | grep vfat
  1. 範例輸出:
# Linux的EFI
/dev/sda1: UUID="18DF-5A70" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="2402bc09-540b-48df-b8e3-94b01834a808"

# Windows的EFI
/dev/sdb1: UUID="F7BB-8172" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="Basic data partition" PARTUUID="def0b2f8-d878-4381-906e-eb527a0b8e56"

# FreeBSD的EFI
/dev/sdc1: SEC_TYPE="msdos" UUID="810D-AF9A" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="efiboot0" PARTUUID="6c3ab213a-941e-4125-8735-4f0245b3c41b"

2. 新增GRUB menu entry
#

  1. 不要直接在/boot/grub/修改GRUB開機選單。應該編輯GRUB的自訂設定檔,讓GRUB自動更新
sudo vim /etc/grub.d/40_custom
  1. 新增以下內容,每個區塊一個menuentry。需要注意分區表是gpt還是msdos。在後面search --no-floppy --fs-uuid --set=root使用EFI分區的UUID當作開機依據
menuentry "Windows" {
     insmod part_gpt
     insmod fat
     search --no-floppy --fs-uuid --set=root F7BB-8172
     chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "FreeBSD" {
    insmod part_msdos
    insmod fat
    search --no-floppy --fs-uuid --set=root 810D-AF9A
    chainloader /EFI/BOOT/BOOTX64.EFI
}
  1. 編輯GRUB設定檔
sudo vim /etc/default/grub
  1. 啟用偵測其他系統
GRUB_DISABLE_OS_PROBER=false
  1. 如果電腦開機的時候看不到GRUB選單與倒數秒數,將以下內容取消註解
GRUB_DEFAULT=0

GRUB_TIMEOUT_STYLE=menu
  1. 可以順便啟用記住上次開機選項
GRUB_DEFAULT=saved

GRUB_SAVEDEFAULT=true
  1. 更新GRUB設定
sudo update-grub
  1. 重開機,在開機選單用鍵盤方向鍵往下走,就能看到新的menu entry了。

參考資料
#

相關文章

用Systemd-boot取代GRUB作為Linux的bootloader
分類   Linux系統 Linux使用技巧
標籤   Systemd GRUB Linux
Linux Wayland桌面的縮放,放大字型、改善HiDPI支援、解決字型模糊
分類   Linux系統 Linux使用技巧
標籤   Linux GNOME KDE Plasma Wayland
給Linux顯示器進行色彩管理,套用ICC色彩描述檔,確保螢幕顏色一致
分類   Linux系統 Linux使用技巧
標籤   Linux Color Management GIMP Wayland X Window

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

(留言板載入中)這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用外部圖床網站。