安裝了 Linux + Windows 的雙系統,但卻不見開機選單?放心,很多人跟你一樣。
事先聲明#
- 在磁區間操作有一定風險,若操作不當導致不可逆的後果,本站概不負責。
- 本文全程以
Ubuntu 20.04.3 LTS
操作,其他版本不一定適用。
MBR (Master Boot Record, 主啟動磁區)#
首先,一般計算機在開機時,會先執行 BIOS
之後才進入 OS。
但其實準確的說,在進入 OS 前,會先經過 MBR (Master Boot Record)
,也就是 主啟動磁區
。
至於進入哪個作業系統,這就靠 MBR 的設定了。
Boot Loader (開機引導)#
雙系統並非什麼新鮮事,但對新手來說,可能會持續糾結 Dual Booting 的問題好一陣子。
為了方便使用雙系統,大多數的作法是在進入 OS 前,載入一個選單,由使用者手動選擇來決定使用哪個 OS 以達到雙系統的目的。而這個選單就是大家所說的 Boot Loader (開機引導)。
其中 GNU Project
中的程式「GRUB (GRand Unified Bootloader)
」極具代表性。
而 Ubuntu
預設就會安裝 Grub(以下以 Ubuntu 做解說)
Linux + Windows 雙系統#
若使用者在已有 Windows System 下的計算機安裝第二(或更多)個系統,那對 MBR 會有什麼影響?
當計算機只有單一系統時,MBR 理所當然的只會進入該系統。
但若是安裝了第二個系統,這時 MBR 有著極大的可能會被第二個系統所覆寫,進而導致一個「MBR 會指向越晚安裝的系統」的現象。
安裝 OS 的順序也有關係?#
正因為大多數情況下 MBR 會被最後一個安裝的系統給覆蓋設定,因此若是最後一個安裝的系統有如 GURB 之類的開機引導,那麼就可以成功顯示開機選單。
因此大多數情況下都會建議使用者先安裝 Windows 後,才安裝 Linux。
由於前面提到的,Ubuntu 預設會自動為使用者安裝 Grub,因此若是先安裝 Windows 再安裝 Ubuntu 的話,那麼 MBR 將會指向 Linux 的 Boot Loader 也就是 Grub。
我偏要先安裝 Linux 再裝 Windows#
同理,若是讓 MBR 指向 Windows 的 Boot Loader,那將不會有 Grub,也就是會直接進入 Windows。
即便如此,在某些情況下仍然有著需要最後安裝 Windows 的需求。
而大多數的新手玩家在安裝完雙系統後,發現開機選單消失,大多數都是因為上述原因。
這時候其實只需要手動再安裝一次 Grub 即可。
正式開始 - 手動安裝 Grub 以覆寫 MBR 設定#
Step. 1 - 準備 Ubuntu Live CD#
你需要準備一個裝有 Ubuntu OS 的開機碟,靠它來協助你手動安裝 Grub。
Step. 2 - 進入 Ubuntu#
利用開機碟進入 Ubuntu 的安裝界面。
注意!
別急著按下安裝,我們僅需要使用試用模式即可,按下「Try Ubuntu (試用 Ubuntu)
」後進入 Ubuntu 桌面環境。
Step. 3 - 確定 EFI、Ubuntu 及 Ubuntu’s Boot 所在磁區#
接著掛載原有的 Ubuntu 安裝區。
使用fdisk -l
指令查看當前磁區狀況。記得使用 root 權限執行。1$ sudo fdisk -l 2...... 3Device Start End Sectors Size Type 4/dev/sda1 2048 624639 622592 304M EFI System 5...... 6/dev/sda4 173963264 886562815 712599552 339.8G Linux filesystem 7/dev/sda5 886562816 891875327 5312512 2.5G Linux filesystem 8......
每個人的磁區編號不同,以上面例子來說:
/dev/sda1
為EFI System
。EFI 的磁區編號不重要,記得是在哪個硬碟就好,如上述為/dev/sda
。- 而
Ubuntu
則是裝在/dev/sda4
。- 若當初在安裝
Ubuntu
時,有選擇另外分割Boot
,那麼就會看到如例子中的/dev/sda5
,反之則沒有。
Step. 4 - Mount Ubuntu and its Boot#
確認完計算機上的磁區後,就可以開始操作了。
首先先將Ubuntu
mount 起來,以下的磁區請依個人在Step. 3
所見更改。1sudo mount /dev/sda4 /mnt 2sudo mount /dev/sda5 /mnt/boot/efi # 若 Boot 有獨立分割才需要
Step. 5 - 安裝 Grub#
1$ sudo chroot /mnt 2$ grub-install /dev/sda # 請自行依照個人在 `Step. 3` 所見的 EFI 磁碟編號更改。 3...... 4$ update-grub 5......
Step. 6 - 重新開機,迎接 Grub 的到來 :)#
1reboot
安裝過程報錯#
cannot find efi directory
- 這可能是因為 Grub 安裝程式抓不到你掛載下來的 EFI 目錄,這時請在
grub-install
後加上參數「--efi-directory=/mnt/boot/efi
」來指定。
- 這可能是因為 Grub 安裝程式抓不到你掛載下來的 EFI 目錄,這時請在
若還有其他錯誤,那麼請試著將路徑參數手動指定 (請自行確認計算機上的路徑):
1grub-install --boot-directory=/mnt/boot --efi-directory=/mnt/boot/efi --target=x86_64-efi
若錯誤依舊無法解決,那麼可能是在前面幾個步驟出錯,請自行再檢查一次,或者將錯誤訊息丟上 Google,以及到 Ubuntu 社群「askubuntu.com」看看大家的討論。
不再自動進入 Windows,改為自動進入 Ubuntu !?開機選單呢!!#
編輯以下檔案:
1sudo vim /etc/default/grub
找到「GRUB_TIMEOUT_STYLE=hidden
」在前方加上「#
」註解掉,即「#GRUB_TIMEOUT_STYLE=hidden
」,保存並關閉。
在更早的版本中則是「GRUB_HIDDEN_TIMEOUT=0
」,一樣將其註解為「#GRUB_HIDDEN_TIMEOUT=0
」後保存。
沒意外的話就可以在 Reboot 之後看見 Grub 選單了!