[折騰文] 折騰BIOS引導GPT分區GRUB,還要能啟動Windows

如標題所見,這個奇葩的組合還真的折騰出來了
從結果來說,系統進去之後完全正常運作,驅動也都正常
除了休眠功能失效之外好像就沒有其他大問題了
(已經在6樓修復啦,Yeah~~)

先附上圖(真的沒有透過其他USB啟動喔)

[折騰文] 折騰BIOS引導GPT分區GRUB,還要能啟動Windows

以下來娓娓道來吧...

在這個方案採用並成功之前,我也其實嘗試過了DUET(如果搞起來可能更厲害了,直接讓BIOS模擬UEFI啟動XDD),可惜就是剛好這台電腦的硬體規格可能都是奇行種(?AMD的Athlon X2搭配上Nvidia的Nforce晶片組,DUET引導不是卡在閃爍的游標,不然就是滑鼠鍵盤不能用(驅動丟進去還是卡住)...

後來決定退而求其次,用之前看過有人折騰的方案,BIOS引導GPT吧
不可否認影響最大的就是Wzyboy大大的這篇文 https://wzyboy.im/post/1049.html

不過其實那篇文章折騰出來的同時,也有一堆的勸退語句:

"其实从标题就能看出来我有多蛋疼了。我不期望还有别的人和我有同样的奇怪需求"
"在各种来源都说这是不可能的情况下,我最终还是曲线救国成功了"
"如导言中所说,有和我完全一样的需求的人应该不存在"

不過同時也有:
"但是本文的思路可用于一些别的折腾过程中"

就這句,前人開闢了一條道路,那這就來搞~~

首先先請來強大的Linux
(有些歷史性的一刻都是用限動錄的,所以容許我從那邊取來資料一下(被打))
[折騰文] 折騰BIOS引導GPT分區GRUB,還要能啟動Windows

第一步,MBR轉換成GPT,在Linux下輸入gptdisk之後
下指令"w"寫入新的分割表就搞定了,一轉眼就搞定(踏上不歸路了XD)

第二步,安裝BIOS引導用的GRUB在GPT分割下
這個也是小事情,畢竟是開源的力量(O
除了花了一個小時搬動分割區外,也沒有特別卡住的地方,順順完成
[折騰文] 折騰BIOS引導GPT分區GRUB,還要能啟動Windows


看到這樣的畫面,我想,可能我快成功啦~~
[折騰文] 折騰BIOS引導GPT分區GRUB,還要能啟動Windows
[折騰文] 折騰BIOS引導GPT分區GRUB,還要能啟動Windows

接下來我們來引導Windows(說不定GRUB幫我們想好解法了呢)
結果畫面一黑......咦這畫面.......不就重開了嗎XDD
果然是我太天真阿
[折騰文] 折騰BIOS引導GPT分區GRUB,還要能啟動Windows


第三步:按照大大的教學應該是要先去建立VHD,接下來把隨身碟系統換成USBOX(這東西也是神作XD),
接下來...開搞!(用磁碟管理建立32MB的VHD,固定大小,後來因為一些排錯之類被我搞成64MB了,不過32MB理應足夠)
[折騰文] 折騰BIOS引導GPT分區GRUB,還要能啟動Windows
BCD照理說有用好的話應該甚麼都不用改
以下提供個(W:請替換成你虛擬硬碟被掛載到哪個槽,zh-tw請替換成你灌系統的語言)
bcdboot C:\Windows /s W: /f BIOS /l zh-tw
[折騰文] 折騰BIOS引導GPT分區GRUB,還要能啟動Windows

第四步:設定GRUB2啟動選項,透過syslinux工具中的ramdisk引導系統
(阿...興奮到模糊(沒))
[折騰文] 折騰BIOS引導GPT分區GRUB,還要能啟動Windows
喔對了,要記得Update Grub
[折騰文] 折騰BIOS引導GPT分區GRUB,還要能啟動Windows

咦,怎麼現實就跟說好的不一樣呢
[折騰文] 折騰BIOS引導GPT分區GRUB,還要能啟動Windows

話說這個部分卡關了很久,其中之一是之前沒有正確的設定setroot指令(教學好像沒有寫呢...),之後是我把Live CD(USB) Chroot跟Live CD的boot分區搞混了,不過只是排除了這兩個Bug,又過了大概一個小時...

這次是引導進去了,但是畫面還是讓我心頭一涼
[折騰文] 折騰BIOS引導GPT分區GRUB,還要能啟動Windows

畫面上的註解就是我看到時候的想法,但是完全往錯的方向走了...
重寫了幾次MBR都引導不了,然後又測試了下是不是syslinux的指令有問題
(又過了快1個小時,可能吧)

後來想了下曾經看過8-Bit Guy的影片
8-Bit Guy Boot Sector Games
有提到說啟動不了的語句有可能是MBR上面的小程式印出的
因為這個原因下我又用二進制編輯器看了下MBR的資料,發現連任何的Reboot and...都沒有
就又卡在這裡了...

難道是Windows的磁碟管理建的虛擬磁碟有問題嗎?
還是說漏掉了甚麼呢...

後來想了下這句東西其實好像在之前的其他電腦看過,終於萌生了一個想法:
難不成是BIOS無法引導印出的?
後來嘗試把BIOS的SATA跟IDE(看到這個就知道主機板有年紀了)的控制器關掉,USB拔除...

"Reboot and Select proper Boot device
or Insert Boot Media in selected Boot device and press a key"

我想我的想法可能對了:難不成Syslinux Memdisk引導vhd跟我的BIOS不相容?
後來也決定放棄Memdisk的引導法了,但是,下一步還能用甚麼呢?

這又過了好一陣子...先吃個飯冷靜下吧

後來又想到了USBOX這個團隊他們整合了那麼多系統在隨身碟裡面,用的是一個名字有點復古的引導載入器 - GRUB4dos
又想到既然不是他可以在我電腦引導Windows PE,那理應也是可以引導Windows系統的?

接下來又開始了下半場的折騰之路...(二樓待續)
(接續一樓)...
Bobpan wrote:
用的是一個名字有點復古的引導載入器 - GRUB4dos...(恕刪)


決定要採用GRUB4dos當作載入方案後,就開始了新的折騰之路

在看著教學試誤敲了一堆指令後,有短暫的成功載入了一次
不過那一次來得太突然,又剛好按下了Ctrl + Alt + Del,而且也不確定輸入了甚麼指令
(折騰中的圖)


好吧,當作那次載入成功是假的吧,嘗試把之前可能試過的指令重現了下,結果卻出現了這個


0xc0000225...
一個模稜兩可的錯誤

絕大多數的網站都是說用個Windows復原光碟啟動修復就完事了...
不過這東西一點也不適用在我現在的情況呀XD

出錯的東西既然是\Boot\BCD,難不成是BCD的狀況,或是MBR或PBR有問題呢...
這東西讓我陷入了瘋狂試誤的循環

一直改參數 > 啟動 > 失敗
的無限循環

奇怪了,明明看起來MBR那些都引導正確了,為甚麼BCD就是找不到呢?
雖然有爬到文章說BCD出錯不見得是BCD本身的狀況,也有可能是BCD引導過程造成的
不過就是想不到問題的癥結點在甚麼地方

中途也曾經先優化下GRUB4dos的啟動腳本(畢竟跟GRUB很像,還是挺好改的),改成自動找檔案載入之類
主要是因為USB插入的時候,會導致開機的硬碟會從編號0變成編號1,感覺有一些些的小麻煩。

不過在完成這件事情之後,回想了下之前啟動成功的記憶,突然又有一個想法。

"我們嘗試看看用GRUB4dos將VHD覆蓋掉原本要啟動使用的編號1(C槽所在)硬碟呢?"

本來只是想說會有一些不一樣的引導錯誤的畫面,沒想到竟然出現的是一個熟悉的標誌:


又等待了硬碟緩慢的載入了一陣子,系統成功開好了。

我滿臉問號跟驚訝

後來又嘗試這個奇怪的設定值,拔除隨身碟(C槽的硬碟變成編號0(hd,0)),引導看看,結果出現的反而是之前誤打誤撞成功的那次預期的那種畫面:


那編號2(hd2,0)呢?
也是順利引導了

之後又試試看了編號3(hd3,0)
又出現了0xc0000225

想了下之前都是用(hd16,0)、(hd32,0)引導,這也是網路上教學引導ISO常用的幾個編號

我想,或許還是歸咎於Windows系統的BOOTMGR的軟體限制吧
而(hd0,0)不行應該就是Windows引導之後會剛好會把C槽那顆硬碟視為第一顆硬碟的緣故了

折騰了7個多小時後,還是驗證了Wzyboy的那句話
"其实从标题就能看出来我有多蛋疼了。我不期望还有别的人和我有同样的奇怪需求"

真的,折騰這個東西水比想像的還深阿!

(有了這篇驗證前一個大大的勸退文後,不知道各位看官還會想嘗試嗎XDD)
大致說明一下建議的搞法吧
(還是給大家一個方向吧,記得綜合前面提到那個大大的思路,
不過記得除非真的閒閒沒事不然不要折騰嘿)

1. 你需要有一個Windows PE的開機光碟,例如USBOX

2. 找下GRUB4Dos可以在GPT分割區上面跑的安裝教學也行,或是像我一樣在硬碟上面安裝Grub2

引導Grub4dos的腳本如下(括號內請自己貼上之類後刪除)

menuentry "Boot Windows (Grub4DOS Way)" {
insmod ext2 (如果你GRUB4裝在ext4分割區下就需要)
insmod ntfs (如果裝在NTFS分區下需要)
savedefault
set root='hd0,gpt1'(換成你GRUB4DOS安裝硬碟的,跟GRUB2一樣比較好)
search --no-floppy --fs-uuid --set=root 19d9e294-65f8-4e37-8e73-d41d6daa6e58(換成你GRUB4DOS安裝硬碟的,跟GRUB2一樣比較好)
linux /grub4dos/grub.exe(這個東西按照你Grub.exe的路徑寫)
}

3. 用PE建立一個開機虛擬硬碟,教法可以參考前面的文章與大大的那篇,就先不贅述了,這個檔案我是放在C槽,應該也可以跟grub4dos的安裝位置放一起

4. Grub4Dos 的 menu.lst 如下(可以放在grub安裝目錄下,或是你Windows的C槽下)
(這個檔案假設你的VHD直接在那顆硬碟的根目錄(C槽點開的那層)下)

default 0
timeout 3

title Windows
find --ignore-floppies --set-root /WinBoot.vhd
map --mem --top /WinBoot.vhd (hd2)
map --hook
chainloader (hd2,0)/BOOTMGR
boot

title Load Rescue USB (這項是如果之後救援隨身碟跟你電腦的Grub4DOS衝突到使用,記得在USBOX_EFI分區下新增一個空白的USBOX.txt來讓引導程式找到分區)
find --ignore-floppies --set-root /USBOX.txt
configfile /BOOT/GRUB/menu.lst

5. 還是勸退下大家吧XDD
好難啊,看攏嘸,還是繼續用幼稚園級的Xorboot做開機引導好了....
至少一台十年的PC,每個分割區都有各自Windows,
多重開機,每個人都可以各自進自已的Windows11

對了,補充一下,很久以前,曾經過N天折騰的心得,
發現
1.GPT硬碟,分割區綜使有多個WIN11,最終只能啟動一個
2.MBR硬碟,分割區可以有4個WIN11

所以我PC中2顆SSD,
第1顆512G的,用MBR,共有3個WIN11+1個DATA區,
第2顆128G的,用GPT,共有1個ESP分區(用來啟動XORBOOT開機選單)+1個Win11區+1個DATA區,

另外要測試軟體,或乾淨的WIN11做網銀使用,都是用Xprboot選單分別載入Win11的VHD去玩

對於大部分的電腦中手而言,xorboot是取代spfdisk最簡單的方法,
但是高手,當然要用Grub4Dos了,我一直想玩玩看,但是又不想折騰下去..
hunandy14
1單純只是引導沒設好。2其實可以用主分區引導邏輯分區啟動,mbr也能裝超過4個系統
rubcandy0208 wrote:
1.GPT硬碟,分割區綜使有多個WIN11,最終只能啟動一個
2.MBR硬碟,分割區可以有4個WIN11


MBR硬碟這個的確是沒錯
MBR的限制就是只能有4個主要分區,而偏偏BOOTMGR只能引導主要分割區上的Windows
所以就會有這個現象了(Linux就可以引導延伸分割區的系統XDD,然後建立一區延伸分割區就會少一個主要分割區...反正MBR之前玩過了要配分割區也是挺痛苦)

GPT的話會不會是BCD的部分沒有設定好呢?
BCD是可以設定那個啟動項要引導甚麼分割區的Windows的,還是說BOOTMGR引導GPT分割下的Windows本身就很多問題,這我就不確定了

話說這個連結也是我折騰過程中蠻常翻的一個網頁
http://reboot.pro/index.php?showtopic=19516&page=15
其中上面有一個
Use the map command of GRUB4DOS, do not install Windows entirely to the VHD, install boot files to the VHD, when the VHD is attached, hibernate works.

看起來未來可以試試看
說不定休眠就正常了
hunandy14
被限制的是BOOTMGR必須在主分區,而不是windwos要在主分區。簡單說就是100M的分區必須是主分區,C曹是不是沒影響BCD引導的過去
Bobpan
原來,以前還真的沒有這樣分離試過哈哈
照上面那層樓所說先載軟體VHD Attach
https://www.medo64.com/vhdattach/

然後設定一下


服務相依性(照文章的,設定一定要用命令提示字元)



補:
答案揭曉
系統有真的要進入休眠的感覺
不過之後電腦會變成重開,然後就整個怪怪的

不過可能是主機板的問題
後來嘗試重開的時候把電腦強制關機
就真的從休眠復原了(不過鍵盤在系統回來之前是全程失效的,預設值真的要設定好呢…也不知道是不是主機板的問題)

補充個魔改後開機狀況的影片(音樂有點吵請見諒
https://youtu.be/YKpP5yfQrJ8
rubcandy0208 wrote:
XORBOOT


剛剛又仔細看了下你的文
你電腦有ESP分區應該是可以UEFI啟動的吧

其實GPT分區搭上UEFI照理說就算主流規格了
應該會有更多好用的引導程式可以用才對
BCD改一改就可以開超過一個Windows了

而EFI的引導程式
我是習慣用REFind啦
也是可玩性不錯的一個

我這台電腦是真的太舊
根本沒有EFI引導可以用
Bobpan wrote:
如標題所見,這個奇葩(恕刪)

樓主的目的是想用老電腦跑新的OS如WIN10 , WIN11 , UEFI版Linux 對吧
其實使用Clover EFI 或是變色龍這類的Bootloader,裝在一支USB隨身碟插在主機板引導,模擬EFI環境,就可以輕易達成了
不需要做複雜的分割磁區,要煩惱的只有新OS下是否硬體還有驅動
妖妖夢 wrote:
樓主的目的是想用老電腦跑新的OS如WIN10 , WIN11 , UEFI版Linux 對吧
其實使用Clover EFI 或是變色龍這類的Bootloader,裝在一支USB隨身碟插在主機板引導,模擬EFI環境,就可以輕易達成了


我也有老775的Q9400電腦
我懶得在上面搞EFI的Win10/Win11/Mac OS
加上775的主板BIOS還是傳統的,沒支援EFI

只好用MBR來裝Win10跑,也是可以跑
搞的時間我去收套有支援EFI的3代/4代的I5電腦,都簡單太多
Bobpan
(雖然那個"硬搞"也是跟這次難度差不了多少啦,都寫成一篇文"紀念"了[大笑])
neoq0120
mbr 能裝win11唷~~,除非你的系統ssd 是過2t以上的不然該是沒有限制gpt
已使用 13 年老 PC ,
CPU Q8400,

HD 1 : MBR : DOS/Windows XP/Windows 7
HD 2 : GPT : Windows 10
Bobpan
不過說真的感覺看到MBR的主要跟邏輯分割區的機制,我之前開搞之前就一直希望能夠趕快換掉了,可能是自己奇怪的堅持吧[笑到噴淚]
neoq0120
mbr可以 + uefi 在同一顆硬碟作不同系統唷~~
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!