はじめに
超ニッチですが、VMWare Player(vmdkファイル)上で動いていたWindowsNTをHyper-Vで動かすことをやったのでまとめておきます。
地味に色々ハマって、1,2時間かかった。。。
Hyper-Vの環境について
- Windows 10 Enterprise
PS C:\Users\sakon> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.15063.1292
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.15063.1292
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
大まかな流れ
- VMDKファイルをVHDファイルに変換する
- Hyper-Vマネージャにて新規VMを作成する
VMDKファイルをVHDファイルに変換する
Microsoft Virtual Machine Converter 3.0のダウンロード・インストール
Microsoftのオフィシャルより、Microsoft Virtual Machine Converter 3.0をダウンロードして、インストールする。
ハマりポイント
このMicrosoft Virtual Machine Converter 3.0
、PowerShell 3.0以上じゃないとエラーになるというトラップがあるらしい。
WindowsServer 2008R2とかだとPowerShell 2.0なので、Windows Management Framework 3.0をインストールして、Version 3.0にする必要がある。
technetの投稿が参考になると思う。
VMDKファイルをVHDファイルに変換する
PS C:\Users\sakon> Import-Module "C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1"
PS C:\Users\sakon> ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath D:\WindowsNT\WindowsNT.vmdk -destination D:\WindowsN
T\hyper-v -VhdType DynamicHardDisk -VhdFormat Vhd
Destination Source
----------- ------
D:\WindowsNT\hyper-v\WindowsNT.vhd D:\WindowsNT\WindowsNT.vmdk
ハマりポイント
これがエグい。
Stackoverflowの投稿が役にたった。
普通に変換すると以下のようなエラーが出力される。
PS C:\Users\sakon> ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath D:\WindowsNT\WindowsNT.vmdk -destination D:\WindowsN
T\hyper-v -VhdType DynamicHardDisk -VhdFormat Vhd
ConvertTo-MvmcVirtualHardDisk : The entry 1 is not a supported disk database entry for the descriptor.
発生場所 行:1 文字:1
+ ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath D:\WindowsNT\Windows ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (Microsoft.Accel...nversionService:DriveConversionService) [ConvertTo-MvmcVi
rtualHardDisk], VmdkDescriptorParseException
+ FullyQualifiedErrorId : DiskConversion,Microsoft.Accelerators.Mvmc.Cmdlet.Commands.ConvertToMvmcVirtualHardDiskC
ommand
ConvertTo-MvmcVirtualHardDisk : 1 つ以上のエラーが発生しました。
発生場所 行:1 文字:1
+ ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath D:\WindowsNT\Windows ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (Microsoft.Accel...nversionService:DriveConversionService) [ConvertTo-MvmcVi
rtualHardDisk], AggregateException
+ FullyQualifiedErrorId : DiskConversion,Microsoft.Accelerators.Mvmc.Cmdlet.Commands.ConvertToMvmcVirtualHardDiskC
ommand
そのため、メタデータ的なのを変更してやらないといけないらしい。
dsforkというのをダウンロードして、任意の場所に解凍する。
出力する。
PS C:\Users\sakon> .\dsfo.exe "D:\WindowsNT\WindowsNT.vmdk" 512 1024 descriptor1.txt
OK, 1024 bytes, 0.000s, MD5 = XXXXXXXXXX
出力されたdescriptor1.txt
をVisualStudioCodeか何かエディタで開いてddb.toolsInstallType = "1"
をコメントアウトして保存。
# Disk DescriptorFile
version=1
encoding="Shift_JIS"
CID=b1e83783
parentCID=ffffffff
createType="monolithicSparse"
# Extent description
RW 8388608 SPARSE "Windows NT.vmdk"
# The Disk Data Base
#DDB
ddb.adapterType = "buslogic"
ddb.geometry.cylinders = "522"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"
ddb.longContentID = "10a28426192e2eb3eeb8f5b1b1e83783"
#ddb.toolsInstallType = "1" ←これをコメントアウト
ddb.toolsVersion = "7392"
あとなんか色々〜
そして、戻す
PS C:\Users\sakon> .\dsfi.exe "D:\WindowsNT\WindowsNT.vmdk" 512 1024 descriptor1.txt
OK, written 1024 bytes at offset 512
仮想マシンの作成
んで、起動する。
わーい起動したー