2022年6月6日 星期一

BIOS如何引導GPT磁碟中的Windwos開機

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來引導。

本篇要實現的是只有單一硬碟下如何引導。

流程

大概先解釋一下要幹嘛,這邊還有一個分支是,新裝的系統與既有的系統(不洗掉),中間分支處再解釋

  1. 準備第二個系統或PE開進去,先把磁碟轉換成GPT格式。
  2. 切成兩個分區,開頭132M與剩餘 (100M引導與32M的Ventoy)
    分支a. 如果是新裝系統在這邊把它裝到後面分區
    分支b 如果是既有的系統利用diskgenius把前面空出132M (現有系統擠到分區2),並格式化出NTFS分區
  3. 利用bdcboot把BIOS引導寫到分區2,並找到BCD文件複製出來。
  4. 編輯Window11原廠的ISO,只留bootmgr與boot/BCD剩下的都砍掉,然後把BCD文件替換成剛剛的。最後把編輯完成的ISO並放到分區1。
  5. 安裝無損版的Ventoy

上述完成後重啟就可以順利引導開機了。
有空再補圖與細節過程,今天測試出來的結果先把流程保存下來。



問題

這種方式啟動的作業系統有個問題,系統設定裡面的啟動清單會看不到,因為啟動流程是從ISO檔案轉過來的ISO卸載了就不見了。會直接導致休眠之後喚醒的問題,找不到啟動檔可以啟動。RE修復分區也沒辦法正常運作。



採到的坑

  • Ventoy雖然可以用外掛啟動VHD但是他的啟動似乎是強迫用Ventoy的BCD並不是我設置的,弄半天就是引導不成功,最後測試ISO才起來的。
  • Windows不能安裝在分區1,因為Ventoy載入的時候會掃那個位置,應該是沒限制時間掃半天都開不進去最後放棄了只好把Windows裝到分區3。

-

沒有留言:

張貼留言