快轉到主要內容

Linux + Win 雙系統卻不見 Grub 開機選單?

·1691 字
Computer-Science Windows Ubuntu Grub
目錄

安裝了 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/sda1EFI 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」來指定。

若還有其他錯誤,那麼請試著將路徑參數手動指定 (請自行確認計算機上的路徑):

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 選單了!

Alpaca
作者
Alpaca
No one can stop my feet.

相關文章

一招啟動 Windows 10 「終極效能」!讓你的電腦瞬間活起來!
·1087 字
Computer-Science Windows
Ubuntu 18 如何顯示電量百分比?
·308 字
Computer-Science Ubuntu Gnome
Simply setting up a Proxy Server with SSH
·344 字
Computer-Science SSH

Did you know that SSH can make your host as a proxy server?

How to use GnuPG to sign files and messages?
·1769 字
Computer-Science Cryptography PGP

用 GnuPG 簽署、驗證、加密、解密 你的檔案及訊息。

How to use GnuPG to generate PGP key?
·1393 字
Computer-Science Cryptography PGP

怎麼使用 GnuPG 生成 PGP 金鑰?

《SQL Basics-03》UPDATE、ALTER、DROP
·907 字
Computer-Science SQL Database

一些基礎常見的 SQL 語法。