[記錄]移除GRUB開機引導於MBR硬碟分割表
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磁區中刪除引導
實驗與測試過程
首先,在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 fixmbrYou 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
然而,透過此方法還是無法正常刪除,在困惑了一段時間後,突然靈光一閃,理解自己哪裡做錯了。
正確解決此問題的姿勢
若是讀到這裡的讀者,可能會有多多少少覺得前面的文章有些奇怪的地方,我也在做完三種測試過後,困惑了快半小時才發現其中的端倪。
疑惑點 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。
測試方法三:刪除該磁區
等回過神來看此解法,才發現它並不是擔心無法開機的問題,而是想要乾淨的刪除開機引導,因此並沒有測試此方法。(※註 此篇文章主要是解決GUID中,無法完整刪除的問題)
結論與回想
在這次的實驗中,終於慢慢比較清楚對於MBR格式會將開機磁區寫入的這回事,也了解使用GPT中,即使移除某個系統地開機磁區,也不會影響其他系統這件事。在此次的實驗中主要是使用一個windows10與一個Ubuntu,若是使用兩個Windows、兩個Ubuntu,或許就無法如此簡單的移除該系統,這點是還要確認的。
透過這次的實驗,還發現了許多需要研究的知識如: 啟動組態資料庫(Boot Configuration Database,BCD)、啟動程式( boot loader)、開機管理程式(e.g. windows:bootmgr,bootx64.efi、GRUB)、WindowsPE。透過不斷地挖新坑,才能讓自己的實力逐漸強大,期盼自己將來有一天還在這領域的時候,可以看到自己這些成長的足跡,共勉之。
額外閱讀
MBR (Master Boot Record) 主啟動磁區剖析