實作 Windows 原生開機虛擬硬碟 (Boot to VHD)

實作 Windows 原生開機虛擬硬碟 (Boot to VHD)

目的:將原本位於 Linux 虛擬主機下的 VHD 虛擬硬碟(Windows 作業系統),改以實體方式直接開機,並實作差異硬碟。

  • 將位於 VirtualBox 虛擬主機下的 Windows 虛擬硬碟轉換為 Fixed VHD (固定大小的 VHD)
    $ vboxmanage clonehd 來源.vhd 目的.vhd --format VHD --variant Fixed
    $ vboxmanage clonehd Windows81.vhd 2.vhd --format VHD --variant Fixed
  • 於 Windows 中使用 Visual BCD Editor 編輯 BCD 開機組態資料庫,設定 VHD 開機相關選項。透過此工具修改 Boot\BCD 檔案,如下圖:

  • 準備 Windows 開機程式相關檔案 (bootmgr)

    準備以下相關檔案:
    目的.vhd (如2.vhd)
    Boot\*
    bootmgr
    BOOTNXT
    
  • 使用 GRUB2 啟動 bootmgr
    > insmod part_msdos
    > insmod ntldr
    > insmod ntfs
    > set root='(hd0, msdos6)' # 實際的 bootmgr 所在分割區
    > ntldr /bootmgr
    > boot
    
  • 於 Windows 中實作差異硬碟 (Differential VHD),之後改開機至「差異硬碟 3.vhd」
    > diskpart
    DISKPART> create vdisk file=差異硬碟 parent=基礎硬碟
    DISKPART> create vdisk file=D:\3.vhd parent=D:\2.vhd
    

參考文件: