GRUB是Linux作業系統使用的開機引導程式,除了可以拿來用指定的Linux Kernel開啟Linux作業系統外,也可以拿來開Windows作業系統。電腦在開機的時候,會先啟動GRUB,GRUB能出現開機選單等待一段時間讓使用者選擇要開哪種作業系統,或者也能讓GRUB直接進入預設的作業系統。這篇文章將會介紹設定GRUB所預設進入的作業系統的方式。



讓使用者在GRUB開機選單選定的開機項目自動成為預設值

如果您的GRUB沒有開機選單,可以參考這篇文章來學習如何進入GRUB開機選單:

https://magiclen.org/grub-menu

在Linux作業系統中開啟GRUB的設定檔/etc/default/grub,進行如下的修改:

GRUB_SAVEDEFAULT=true
GRUB_DEFAULT=saved

grub-default

GRUB_SAVEDEFAULT設為true時,最後一次在GRUB開機選單中選取的開機項目會被儲存下來(存到/boot/grub/grubenv)。GRUB_DEFAULT可以指定要用哪個項目來作為預設的開機項目,但是當被設為saved時,就會使用GRUB_SAVEDEFAULT設為true時所儲存的開機項目。

修改完畢後儲存檔案,再使用以下指令來更新GRUB。

sudo grub-mkconfig -o /boot/grub/grub.cfg

grub-default

使用指令來設定預設開機項目

承上一小節,如果您想設定預設開機項目,卻又不想真的進GRUB開機選單中實際開機一次。可以用grub-set-default指令來設定預設開機項目,但是在設定之前,您得先確定您的GRUB選單長什麼樣子,可以用以下指令來查看:

grep -E "(submenu|menuentry) " /boot/grub/grub.cfg

grub-default

如上圖,可以看到menuentry是有被submenu區分階層的(縮排可明顯看出來階層)。

其中,menuentry 'Linux Mint 21 Cinnamon'表示名為Linux Mint 21 Cinnamon的開機項目;menuentry 'Linux Mint 21 Cinnamon, with Linux 5.15.0-43-generic'表示名為Linux Mint 21 Cinnamon, with Linux 5.15.0-43-generic的開機項目,依此類推。而submenu 'Advanced options for Linux Mint 21 Cinnamon'表示名為Advanced options for Linux Mint 21 Cinnamon的子選單。

grub-set-default指令用法如下:

sudo grub-set-default <開機項目的路徑>

<開機項目的路徑>要包含層級,子選單要用>字元來指向下一層。可以接受的寫法如下:

  • 0(項目順序)、Linux Mint 21 Cinnamon(項目名稱)、gnulinux-simple-3763dc9f-c07d-4efc-8ce6-6c7f80519a26(項目ID)。
  • 1>2Advanced options for Linux Mint 21 Cinnamon>2
  • 1>Linux Mint 21 Cinnamon, with Linux 5.15.0-41-genericAdvanced options for Linux Mint 21 Cinnamon>Linux Mint 21 Cinnamon, with Linux 5.15.0-41-genericgnulinux-advanced-3763dc9f-c07d-4efc-8ce6-6c7f80519a26>gnulinux-5.15.0-41-generic-advanced-3763dc9f-c07d-4efc-8ce6-6c7f80519a26

數字是在該層級下項目的順序,由上到下從0開始算起。筆者建議使用項目ID來設定預設的開機項目,因為不會像名稱或是順序這樣有變動的可能。

grub-default

如果您只想要使用grub-set-default指令來設定預設開機項目,而不想讓使用者在GRUB選單選擇開機項目之後立刻改變預設值的話,在GRUB的設定檔中就不要去設定GRUB_SAVEDEFAULT,但GRUB_DEFAULT=saved還是要有。

在GRUB設定檔設定預設開機項目

參考上一小節grub-set-default指令中<開機項目的路徑>參數的寫法。將值填寫到GRUB設定檔的GRUB_DEFAULT項目。

grub-default

修改完畢後儲存檔案,再使用以下指令來更新GRUB。

sudo grub-mkconfig -o /boot/grub/grub.cfg

grub-default