BIOS如何引導GPT磁碟中的Windwos開機
這其實是可以實現的,主要是GPT並沒有占用MBR起始的那一段位址,這就意味著只要把那段位址補上去MBR的開機引導,仍然可以被BIOS識別。
為什麼BIOS不能引導GPT是因為,微軟的MBR預設就會去找被標記啟動的磁區中的bootmgr,然後bootmgr找到BCD,然後順著BCD的內容找到Windows資料夾的位置並啟動內核。
關鍵在於GPT分區就沒辦法讓你設置啟動標記,所以肯定啟動不了的打死這條路線了。至於Windows資料夾的位置,本身並沒有限制他可以存在邏輯分區也可以存在GPT分區下。只有bootmgr被限制必須在啟動磁區不然BIOS就找不到了。
具體怎麼實現在GPT前段寫入MBR的引導的,我並不清楚只是拿現有的工具組合起來的。個人猜測可能是直接去動硬碟的底層16進制編碼,把GPT未使用的前段補上,計算扇區起始與結束正好符合GPT的分區,讓BIOS讀取的時候能恰好讀到正確的位置。
這邊用的Ventoy來引導,因為Ventoy並沒有辦法引導到BCD所以繞一個路讓Ventoy來開ISO檔案中的BCD檔案,然後再讓BCD引導到GPT分區下的Windwos資料夾,藉此實現的。
參考的文章中有一篇是掛一顆虛擬磁碟,讓BIOS找到MBR磁碟中的bootmgr,然後才引導到GPT中的Windwos。這也是一個解法,簡單說就是要想辦法讓BIOS找到bootmgr就對了。而最簡單的辦法是直接讓一顆MBR硬碟或USB來引導。
本篇要實現的是只有單一硬碟下如何引導。
流程
大概先解釋一下要幹嘛,這邊還有一個分支是,新裝的系統與既有的系統(不洗掉),中間分支處再解釋
- 準備第二個系統或PE開進去,先把磁碟轉換成GPT格式。
- 切成兩個分區,開頭132M與剩餘 (100M引導與32M的Ventoy)
分支a. 如果是新裝系統在這邊把它裝到後面分區
分支b 如果是既有的系統利用diskgenius把前面空出132M (現有系統擠到分區2),並格式化出NTFS分區 - 利用bdcboot把BIOS引導寫到分區2,並找到BCD文件複製出來。
- 編輯Window11原廠的ISO,只留bootmgr與boot/BCD剩下的都砍掉,然後把BCD文件替換成剛剛的。最後把編輯完成的ISO並放到分區1。
- 安裝無損版的Ventoy
上述完成後重啟就可以順利引導開機了。
有空再補圖與細節過程,今天測試出來的結果先把流程保存下來。
問題
這種方式啟動的作業系統有個問題,系統設定裡面的啟動清單會看不到,因為啟動流程是從ISO檔案轉過來的ISO卸載了就不見了。會直接導致休眠之後喚醒的問題,找不到啟動檔可以啟動。RE修復分區也沒辦法正常運作。
採到的坑
- Ventoy雖然可以用外掛啟動VHD但是他的啟動似乎是強迫用Ventoy的BCD並不是我設置的,弄半天就是引導不成功,最後測試ISO才起來的。
- Windows不能安裝在分區1,因為Ventoy載入的時候會掃那個位置,應該是沒限制時間掃半天都開不進去最後放棄了只好把Windows裝到分區3。
-
沒有留言:
張貼留言