LoginSignup
1
5

More than 5 years have passed since last update.

VHDXファイルをWIMに変換して物理ディスクにインストール

Last updated at Posted at 2018-08-04

はじめに

VHDブートはサブとして使うか、サブWindowsがある上で運用しようね……!

VHDネイティブブート のみ でメイン運用していたため、Windowsの大型アップデートが適用できずに詰んだ/(^o^)\
状態から .vhdx ファイルの中身を物理ディスクに展開することで解決できたので、その方法を残しておきます。

2018/08/19 仮想メモリの設定が初期化されることの追記

注意事項

  • Windows PE を用意する
  • Windows Subsystem for Linux(WSL) はアンインストールしておく
    • WSL 関連でイメージ作成時の処理が失敗するため
  • 現状の .vhdx ファイルのバックアップをとる
  • Windows OSをインストールするディスクの既存パーティションは初期化する

作業準備

Windows PE ブートメディアの作成

管理者必携のトラブルシューティングツール「Windows PE 5.0」の起動用USBメモリを作成する (1/2)Windows 10 用の Windows PE (WinPE) のUSBメモリセットアップ例 の記事を参考に作成する。

WSL バックアップ

WSL の環境をバックアップする。
要はルートディレクトリ以下を .tar.bz2 として固めてしまう。

やり方は WSLのバックアップを検討する の記事に書かれている通りにすればいい。

  1. 除外ディレクトリ設定ファイルの作成

    WSL
    $ cat <<EOF > /mnt/f/exclude.txt
    > /mnt
    > /dev
    > /proc
    > /tmp
    > /sys
    > /run
    > /var/log
    > EOF
    
  2. tar コマンドで圧縮

    WSL
    sudo tar -cvpjf /mnt/f/WSLbackup/20180803-backup.tar.bz2 -X /mnt/f/exclude.txt /
    

WSL アンインストール

Windows設定の アプリと機能 からアンインストールしておく。

アンインストール後はPCを再起動し、Windows PE を起動させる。

Windows PE で作業開始

以下、Windows PE 上から操作していく。

  1. .vhdx ファイルを .wim ファイルに変換
  2. ディスクのパーティション再構成
  3. 作成した .wim ファイルからディスクにWindowsインストール

変数設定

コマンド操作で用いるファルダ/ファイルパスをあらかじめ変数に設定しておく。

まずは現在認識されているボリュームのドライブ文字を確認。

cmd
echo list volume | diskpart

あとは dir コマンドなどで次のパスについて位置を特定し、変数の設定を行う。
.vhdx ファイルのパス以外は、Windowsをインストールするディスクとは別のディスクないし外部メディアを指定すること)

  • .vhdx ファイルのパス
  • .vhdx ファイルをマウントするフォルダパス
  • 一時保存用フォルダ(scratch)のパス
  • 作成する .wim ファイルのパス

    cmd
    set vhdx=C:\path\to\windows.vhdx
    set mnt=E:\mount
    set scratch=E:\scratch
    set wim=E:\wim\win10-yyyy-mm-dd.wim
    

.vhdx ファイルのバックアップ

作業を開始する前に現在使用している .vhdx ファイルをバックアップしておく。
バックアップはコピーすればいい。

が、次のコマンドで .vhdx から .vhd ファイルへ変換してバックアップをとることもできる。

cmd
echo create vdisk file="F:\vhd\win10-yyyy-mm-dd.vhd" source=%vhdx% type=fixed | diskpart

容量可変にしたい場合は type=expandable とする。

VHDX -> WIM 変換

.vhdx ファイルを .wim ファイルへ変換していく。

  1. .vhdx ファイルをマウント

    cmd
    mkdir %mnt%
    Dism /Mount-Image /ImageFile:%vhdx% /index:1 /MountDir:%mnt% /ReadOnly
    

    Windowsイメージを .vhd ファイルからマウントする場合、index1 にするべきらしい。

  2. マウントしたイメージを .wim ファイルに変換

    cmd
    mkdir %scratch%
    Dism /Capture-Image /ImageFile:%wim% /Compress:max /CaptureDir:%mnt% /Name:"Windows-VHDX" /CheckIntegrity /Verify /ScratchDir:%scratch%
    

    イメージ作成・展開時にデフォルト設定では一時保存領域が小さすぎて失敗する。
    これを避けるため /Scratch オプションを用いて一時保存フォルダを指定している。

  3. .wim ファイルが作成できたらアンマウント

    cmd
    Dism /Unmount-Image /MountDir:%mnt% /discard
    

パーティションの再構成

Windows起動ディスクのパーティションを再構成する。

  1. ドライブ文字 C の割当解除

    C ドライブは後々Windowsイメージをインストールするパーティションに設定するため、ここで一度変更して解除する。
    (このとき R, S, X割り当ててはいけない

    cmd
    (
      echo select volume C:
      echo assign letter=T
    ) | diskpart
    
  2. Windows起動用ディスクの番号を確認

    cmd
    (
      echo select volume <Number>
      echo list disk
    ) | diskpart
    
  3. Windows起動用ディスクをフォーマット

    cmd
    (
      echo select disk <DiskNumber>
      echo clean
      echo convert gpt
      echo list partition
    ) | diskpart
    
  4. 各パーティションを構成

    cmd
    (
      echo select disk <DiskNumber>
    
      echo create partition primary size=1024
      echo format quick fs=ntfs label=Recovery
      echo assign letter=R
      echo setid id=de94bba4-06d1-4d40-a16a-bfd50179d6ac
    
      echo create partition efi size=512
      echo format quick fs=fat32 label=EFI
      echo assign letter=S
    
      echo create partition msr size=16
    
      echo create partition primary
      echo format quick fs=ntfs label=Windows
      echo assign letter=C
    
      echo list partition
    ) | diskpart
    

以上でパーティション再構成は完了です。

partition 回復環境ツール EFIシステム MSR Windows
Letter R S -- C

WIMからDiskにインストール

  1. .wim イメージを作成したWindowsパーティションにインストールする。

    cmd
    Dism /Apply-Image /ImageFile:%wim% /index:1 /ApplyDir:C:\ /CheckIntegrity /Verify /ScratchDir:%scratch%
    
  2. ブートコーダーの設定

    cmd
    bcdboot C:\Windows /l ja-JP /s S:
    

終わり

以上で必要な操作は終了です。
Windows PE を終了してPCを再起動しましょう。
ディスクにインストールされたWindowsが起動するはずです。

cmd
exit

お疲れ様でした。


(8/19 追記)
仮想メモリ(ページファイル)の設定が初期化されるみたいです。
なので [コントロールパネル] -> [システムとセキュリティ] -> [システム] -> [システムの詳細設定] から設定の確認をし、必要ならば再度設定を行って下さい。

別ドライブにページファイルを移動していた場合はインストールしたWindowsではそれを認識しないので、一旦有効化してから削除してみてください。

  • あるドライブにおけるページファイルの有無を確認

    管理者
    Get-ChildItem G:\ -Attributes Hidden -Filter pagefile.sys
    

また、休止状態 も有効化されているので不要であれば無効化してください。

管理者
powercfg /h off
powercfg /a

補足:UEFI/GPT パーティションの構成について

UEFI/GPT ベースのハードドライブパーティションを参考にする。

  • 回復環境ツール パーティション

    • 指定された GUID を設定する必要がある
    • 容量が足りない場合は勝手にパーティションが増設されてしまうので、あらかじめ多めの容量を確保したほうがいいらしい
    最低サイズ 個人的推奨サイズ ファイルシステム ドライブ文字 GUID
    300 MB 1024 MB NTFS R DE94BBA4-06D1-4D40-A16A-BFD50179D6AC
  • EFIシステム パーティション

    • 最低値だと大型アップデートのときにエラーが発生することがあるため多めに確保
    最低サイズ 個人的推奨サイズ ファイルシステム ドライブ文字
    100 MB 512 MB FAT32 S
  • Microsoft予約 パーティション(MSR)

    • 規定サイズの16MBを確保すればいい
    • ドライブ文字は割り当てられない
    最低サイズ 個人的推奨サイズ ファイルシステム ドライブ文字
    16 MB 16 MB (自動) --
  • Windows パーティション

    • Windows OS をインストールするパーティション
    最低サイズ 個人的推奨サイズ ファイルシステム ドライブ文字
    20 GB お好きに NTFS C

参考

1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5