Hyper-V で無償 P2V (2) - Disk2VHD による P2V の仕組み
一昨日 のつづきです。
Disk2VHD による P2V の仕組みを紹介します。
Disk2VHD の P2V 機能が行っていること
最初に、Disk2VHD の P2V 機能、つまり「Prepare for use in Virtual PC」チェックボックスを有効にすると、VHDファイルのビルド時に3つの処理が行われます。
- system32 ディレクトリに 「ntkrnlpa.exe」*1 をコピー
- system32 ディレクトリに 「halacpi.dll」*2 をコピー
- boot.ini に、コピーした上記代理ファイルを利用する起動セクションを既定として追記
VHD ファイルの boot.ini を開いてみると、
通常の起動オプションに加えてもう一つ追加されているのが分かります。
ちなみに、boot.ini 上で /KERNEL= と /HAL= スイッチは、通常明示的に指定しません。このスイッチを省略すると、次のファイルを利用してブートしています。
- %SYSTEMROOT%\system32\ntoskrnl.exe
- %SYSTEMROOT%\system32\hal.dll
特に HAL については、ハードウェア環境や CPU 搭載数によって、
halaacpi.dll や halmacpi.dll など最適なもの異なります。
しかし、ブートローダは明示的に指定しない限り hal.dll で起動しようとするため、
halaacpi.dll → hal.dll といったように名前を変えて格納されています。
移行元で利用している HAL によって、P2V できない場合がある
P2V できないハードウェアは何かと言うと、ACPI 未対応のハードウェアです。といっても分かりにくいと思いますので、簡単に見分ける方法を2つ紹介します。
一つは、上記 hal.dll のプロパティ画面です。
ここで正式ファイル名の値が 「hal.dll」 そのままの場合、そのコンピューターは ACPI 非対応と認識されています。このコンピューターは P2V できないでしょう。
もう一つ見分ける方法は、デバイスマネージャです。
「デバイス(接続別)」に並べた状態で、下図の赤枠の部分が 「標準 PC」 と表示されている場合は、そのコンピューターは ACPI 非対応と認識されています。
移行元が Windows Vista / 2008 以降の場合
boot.ini という言葉から推察できるとおり、Disk2VHD の「Prepare for use in Virtual PC」機能は boot.ini の無い Windows Vista / 2008 以降では動作しません。
但し、Windows Vista / 2008 以降では、Disk2VHD のこの機能が boot.ini に行っている内容を BCD*4 に手動で行えば OK です(代理 HAL のコピーは不要)。
手順については、次回の Disk2VHD による P2V 手順 で紹介したいと思います。