[記錄]移除GRUB開機引導於MBR硬碟分割表

Lau Dai He
7 min readMar 4, 2020

--

Author:Lau Dai

Date:2020/02/26

此篇文章是因為要進行筆電灌雙系統,所以要進行測試是否可以完整,以免將來要移除Linux系統的時候導致錯誤發生。

許多文章在教學移除Linux磁區前,都有先聲明不要直接移除。抱持著好奇的心情,來測試看看如果直接移除會發生哪些後果。

準備過程

硬體:一顆HDD or SSD

軟體:Windows OS & Linux(在此使用Ubuntu)

起初先將windows安裝後,再安裝Ubuntu,在這次安裝過程中我將 Ubuntu/boot區塊獨立出來,剩下的就是/區塊 安裝系統。

解決方案

網路上相關解決方案有好幾種,目前歸納如下:

1. 透過Windows作業系統軟體(光碟、USB都可),使用 bootrec.exe進行修復

修复MBR主引导记录,解决Windows10未能启动的问题(bootrec.exe)

Win10如何手動修復系統引導文件?(bootrec.exe)

2. MbrFix軟體修復

簡易完整移除Ubuntu,於Windows雙系統 (MbrFix)

Ubuntu/Win10双系统安全删除Ubuntu的方法(MbrFix)

在Windows/Ubuntu雙系統下簡單移除Ubuntu(MbrFix)

3. 進入EFI磁區中刪除引導

107.06.30 刪除雙系統的 grub 介面 (使用進入磁碟區刪除的方式)

實驗與測試過程

首先,在Windows作業系統中,直接透過磁碟管理將Ubuntu的 /boot刪除,確認該磁區已被刪除,且之後重開機後發現確實有出現以下畫面。

grub>

於是乎,再重新開機透過 F8開機選單選到Windows OS進行測試。

測試方法一:透過Bootrec.exe

透過修復系統,我們到疑難排解,進階選項的命令提示字元進行修復。

輸入 bcdedit /enum 去檢查我們的啟動組態資料庫(bcd),結果發現沒有異常,可以正常顯示。

於是再使用 bootrec /scanos 進行OS檢查,結果也只有一個Windows OS,到這裡都還覺得算是正常。

最後分別使用了

bootrec /fixmbr
bootrec /fixboot
bootrec /rebuildbcd

還是無法進行修復, grub> 依舊會出現在開機畫面上,因此方案一作罷。

測試方法二:透過Mbrfix

透過開機選單的方式進入作業系統,並使用Mbrfix軟體,進行啟動磁區修復。Mbrfix官網下載位置

1. 開啟管理員權限的命令提示字元(cmd)
2. 抵達 Mbrfix.exe 位置
3. 使用 Mbrfix.exe /drive {disk number} fixmbr [選填os /win7,/vista]
disk number,可以透過diskpart去確認。
完整步驟:
1. (windows 10) win+x → A
2. cd C:\Users\laudai\Desktop\mbrfix
3. diskpart後,list disk。確認安裝windows系統的是磁碟0因此指令是:
mbrfix /drive 0 fixmbr
You are about to Fix MBR,
are you sure (Y/N)? y

然而,不論我試了好幾種指令,都是無法成功修復。因此第二種方案也作罷。

測試方法三:刪除該磁區

1. 進入diskpart
2. list disk
3. 透過磁碟管理找到含有EFI字樣的硬碟編號
4. select disk 0 //選擇該顆硬碟
5. list volume //顯示磁區清單
6. select volume 3 //進入該磁區
7. assign letter=Z //將該磁區掛載沒有使用的代號
8. 另開一個cmd,並且進入剛才所指派的代號
9. 透過dir確認是否有 名為EFI的資料夾,並進入該資料夾
10.rmdir /S ubuntu
assignLetter
透過指派該磁區代號,藉由這樣的方式進入,用以刪除grub開機磁區
delete the volume
刪除該磁區

然而,透過此方法還是無法正常刪除,在困惑了一段時間後,突然靈光一閃,理解自己哪裡做錯了。

正確解決此問題的姿勢

若是讀到這裡的讀者,可能會有多多少少覺得前面的文章有些奇怪的地方,我也在做完三種測試過後,困惑了快半小時才發現其中的端倪。

疑惑點 1

為什麼移除了該作業系統的開機磁區,卻還是可以透過開機選單,載入Windows的系統。

疑惑點 2

當在使用list disk的時候,Gpt 格式竟然是 " * "字號。(表示該硬碟格式是使用GPT切割表)

頓時了解,我在一開始的前置作業就使用錯誤,我是透過UEFI 的方式安裝系統,因此我的磁碟格式才會是GPT(GUID Partition Table),而非MBR磁區。

修正此問題後,我將繼續我的實驗。

重新測試 - 一道曙光

在此次測試,一樣先進入windows系統刪除Linux磁區。不同上次的測試,重新開機後,在我們主機板的開機選單內只會剩下你一顆開機硬碟,倘若是上次那種GUID的方式,會保留Ubuntu開機選項。

測試方法一:透過Bootrec.exe

因此,透過修復USB系統進入,並使用 bootrec /fixmbr,重新開機後,即可正常進入windows系統。

測試方法二:透過Mbrfix

重新整理好測試環境後,先保留兩者的系統,然後執行該軟體,使用的指令為: mbrfix /drive 0 fixmbr,雖然該軟體有win7 , vista兩種選項,但在win10的情況下,使用這指令仍可正常的修復。修正後,就可以正常地使用windows。

在此次測試中,可以正常修復你的MBR

測試方法三:刪除該磁區

等回過神來看此解法,才發現它並不是擔心無法開機的問題,而是想要乾淨的刪除開機引導,因此並沒有測試此方法。(※註 此篇文章主要是解決GUID中,無法完整刪除的問題)

結論與回想

在這次的實驗中,終於慢慢比較清楚對於MBR格式會將開機磁區寫入的這回事,也了解使用GPT中,即使移除某個系統地開機磁區,也不會影響其他系統這件事。在此次的實驗中主要是使用一個windows10與一個Ubuntu,若是使用兩個Windows、兩個Ubuntu,或許就無法如此簡單的移除該系統,這點是還要確認的。

透過這次的實驗,還發現了許多需要研究的知識如: 啟動組態資料庫(Boot Configuration Database,BCD)、啟動程式( boot loader)、開機管理程式(e.g. windows:bootmgr,bootx64.efi、GRUB)、WindowsPE。透過不斷地挖新坑,才能讓自己的實力逐漸強大,期盼自己將來有一天還在這領域的時候,可以看到自己這些成長的足跡,共勉之。

額外閱讀

分割表格式科普:MBR/GPT是什麼?它們有什麼異同?

如何初始化磁碟,且選擇MBR還是GPT?

Windows開機管理程式

MBR (Master Boot Record) 主啟動磁區剖析

Windows PE(Microsoft Documents)

UEFI 的 BCD 系統存放區設定(Microsoft Documents)

--

--

Lau Dai He
Lau Dai He

Written by Lau Dai He

Less is more. 2021/08/01起,主要會紀錄各種技術的精華重點文章,方向可能是Pyhton, Linux, WIndows等都有可能。文章內容精簡為主,搭配少部份的個人情感抒發等。(inspired by 路人甲的世界​-知乎作者)

No responses yet