VMDKファイルをHyper-V(VHDXファイル)に変換する


VMware Playerを使用していたのですが、Dockerを始め昨今のWindowsプラットフォームでの開発ではHyper-V前提になってきており、VMwareだと何かと厳しいので移行するためのメモです。
基本的にvmdkファイルのWindowsNTをHyper-Vで動かすを参考にしながら、所々違うことをしています。

環境

ホストOS: Windows 10 Pro 1809
VMware: VMware Workstation 14 Player
ゲストOS: Windows 10 Pro 1809(Workstation 11.x仮想マシン)

VMDKファイルの編集

VMDKファイルのddb.toolsInstallTypeをコメントアウトする必要があるらしく、
dsfork.exeというツールが紹介されているが、やっていることはVMDKファイルのヘッダーを差し替えているだけなので、バイナリエディタで置換しました。
具体的には、ddb.toolsInstallType の前に #を挿入して、その少し後ろのオフセット0x3E0あたりの0x00を削除しました。
多分ddコマンドとかでも同様のことができると思う。

VHDXファイルに変換

Microsoft Virtual Machine Converterをインストールして、PowerShellのConvertTo-MvmcVhdコマンドレットで変換しました。
ConvertTo-MvmcVhdコマンドレットでは、-VhdFormat でVHD/VHDXが指定できるので、VHDXにしてます。

PS> import-module "C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1"
PS> help ConvertTo-MvmcVhd

名前
    ConvertTo-MvmcVirtualHardDisk

構文
    ConvertTo-MvmcVirtualHardDisk [-SourceLiteralPath] <string> [[-DestinationLiteralPath] <string>] [[-VhdType] {Dynam
    icHardDisk | FixedHardDisk}] [[-VhdFormat] {Vhd | Vhdx}]  [<CommonParameters>]


エイリアス
    ConvertTo-MvmcVhd


注釈
    なし
PS> ConvertTo-MvmcVhd -SourceLiteralPath "D:\Virtual Machenes\Windows 10 x64\Windows10.vmdk" -DestinationLiteralPath "D:\Virtual Machenes\Windows 10 x64\Windows10.vhdx" -VhdFormat Vhdx

Destination                                       Source
-----------                                       ------
D:\Virtual Machenes\Windows 10 x64\Windows10.vhdx D:\Virtual Machenes\Windows 10 x64\Windows10.vmdk

PS >

Hyper-Vの有効化と仮想マシンの作成

VMwareはアンインストールせずに、Windowsの機能の有効化または無効化でHyper-V プラットフォームを有効にした後、Hyper-Vマネージャで新規の仮想マシンを作成します。
その際、世代の指定では第1世代を指定します。

第2世代でも試したが、VMWareではSATA(IDE)接続だったせいか、そのままでは起動ロゴが出ずに起動しませんでした。
stackoverflowではISOファイルで起動してbootrec.exe /fixBootが有効、みたいなことが書いてあったけど、直りませんでした。

追記

変換後の仮想マシン(Windows 10)でライセンス認証をしようとしたのですが、今のところ失敗しています。
ハードウェアの変更で行けると思っていたのですが、「Windows をライセンス認証できません」と言われて完了できません。

追記2

こちらにP2Vで作成したVHDXファイルを第2世代の仮想マシンで起動する手順が記載されている。
もしかしたら参考になるかも。
Disk2VHD UEFI ファームウェアのマシンのブート手順