使用VHD建構作業系統

因學校強力推廣5a88,的確也讓我看到一些可能性,做了多番努力終於可以使用VHD開機了,當然還是老話一句,很多地方的使用並不是太清楚,先做紀錄避免忘記了

首先:參考了microsoft的技術文件(傳送門),文章中是直接建構開機目錄(應該是BCD吧?),我是借用了5a88格式,使用grub4dos+NTboot來製作。

Step1:建立虛擬硬碟(VHDX)

  • 使用磁碟管理(圖形介面)建立
    大略步驟:磁碟管理-->動作-->建立VHD-->設定(大小、格式、類型)-->連線VHD
  • 使用指令(diskpart)建立

    diskpart
    create vdisk file=C:\windows.vhdx maximum=25600 type=fixed
    attach vdisk
    create partition primary
    format quick label=vhdx
    assign letter=v

    語法:  CREATE VDISK FILE=<"filename"> MAXIMUM=<N> [TYPE={FIXED|EXPANDABLE}][SD=<SDDL string>] [PARENT=<"filename">] [SOURCE=<"filename">][NOERR]

Step2:將windows映像檔套用的虛擬硬碟

  • 掛載window 10映像檔
  • 開啟CMD(系統管理員)後,切換目錄至 \sources\下(有install.wim)
  • 打指令將映像套用至VHDX

    Dism /Apply-Image /ImageFile:install.wim /index:1 /ApplyDir:V:\
    (V為VHDX位置)
  • 中斷VHDX

    diskpart
    select vdisk file=C:\windows.vhdx
    detach vdisk
    exit

Step3:建立原生開機新裝置

  • (BCD)建立開機磁區及VHD放置磁區(BIOS or EFI)
    • BIOS(mbr?)

      diskpart
      select disk 0
      clean
      rem == 1. System partition ======================
      create partition primary size=100 
      format quick fs=ntfs label="System"
      assign letter="S"
      active
      rem == 2. Main partition ========================
      create partition primary
      format quick fs=ntfs label="Main"
      assign letter="M"
      exit
    • EFI

      diskpart
      select disk 0
      clean
      convert gpt
      rem == 1. System partition =========================
      create partition efi size=100 
      format quick fs=fat32 label="System"
      assign letter="S"
      rem == 2. Microsoft Reserved (MSR) partition =======
      create partition msr size=128
      rem == 3. Main partition ===========================
      create partition primary
      format quick fs=ntfs label="Main"
      assign letter="M"
      exit
  • (Grub4Dos+NTBoot) : 分割硬碟 : 分區管理 --> 重新分區
<註:System空間只設定100是只放開機資料,如要放winpe等就需加大,也許1024?>

Step4:複製VHDX至指定位置 

(說明省略)

Step5:新增開機項目

  • (BCD)開機方式分成BIOS(MBR? or legacy?) or EFI
    • BIOS

      V:
      cd v:\windows\system32 bcdboot
      bcdboot v:\windows /s S: /f BIOS
    • EFI

      V:\
      cd v:\windows\system32
      bcdboot v:\windows /s S: /f UEFI
    • 其中V為VHDX掛載後的Letter,另/f後的屬性我給ALL一樣可行,另外在使用5a88所附的WinPE執行bcdboot指令時,系統跳出此指令與winpe不相容的停止訊息(猜測可能是我的win10是1809版本),後來使用直接製作乾淨的winpe(1809版)後,就可以使用了,詳細說明如同參考2。
  • (Grub4Dos+NTBoot)
    • 設定使用Grub4Dos : 主引導紀錄 --> GRUB4DOS 0.46a
    • 複製檔案,包含 :
      • grldr
      • menu.lst
      • xxx.jpg
      • unifont.hex.gz
      • NTBOOT (由5a88複製而來)
      • sources(由5a88複製而來,為了可用的WinPE)
    • 修改menu.list,加入 :
      iftitle [find --ignore-floppies --ignore-cd --set-root /VHD/win10x64_1809.vhdx XXX \n XXX 
      hide (hd0,0)
      hide (hd0,1)
      command (bd)/NTBOOT/NTBOOT NT6=(hd0,1)/VHD/win10x64_1809.vhdx

      ((hd0,1)/VHD/win10x64_1809.vhdx 為VHDX檔案實際所在位置)
      其餘詳細設定可參考上一篇:製作USB的多系統重灌工具

      <緊急2019.11.13>------
      由於推了新的win10版本(1903)想說來重作順便檢測步驟(以上都是印象中),結果居然無法套用,尚待解決 !!
      與之前的做法不同的是我先套用BCD開機方式做好系統(包含第一次設定)然後再移到grub4dos上,不知道是否這樣會有差異!?
      ---------------------------------

Step6:重新開機後使用新裝置硬碟開機

(說明省略)

參考:

1.以虛擬硬碟開機:將 VHDX 或 VHD 新增至開機功能表(傳送門)
2.建立可開機的 WinPE 媒體(傳送門)
3.WinPE:掛接和自訂(傳送門)
4.台南市5a88(傳送門)


留言

這個網誌中的熱門文章

製作USB的多系統重灌工具

Ubuntu下建立大量帳號

複製造字檔案