きよくらの備忘録

「三日坊主と呼ばせない!日記」改め。主にソフトウェア開発関連の話題。

実HDDブート to VHDブート

実パーティションにインストールされたWindows 7VHDブート環境に移行する方法について、色々試したりしています。

その中で、いくつか問題があって、色々とハマったのでメモします。

その1.VHDファイルの最大容量と実パーティションの空き容量の問題

まず、立ちはだかるのが、VHDファイルの最大容量と空き領域の問題です。


バックアップ機能やDisk2VHDでファイルを作成すると、『最大サイズ=実パーティションのサイズな容量可変のVHD』が作成されます。
しかし、VHDファイルをアタッチしてブートする際には『VDHをホストしているHDDにアタッチするVHDの最大容量が必要』になります。具体例を挙げると、容量200GBの可変VHD、"win7.vhd"をVHDブートで起動しようとするならば、実際のファイルサイズが5GBであってもwin7.vhdを配置したHDDには合計200GB以上の空き領域が必要になるということになります。



ですので、上記のような方法で作成したVHDファイルを、元々の(作成の元になった)パーティションに配置して起動しようとしても、起動出来ません。


どうすれば良いかというと、おそらくは

  • 解決策1:置き場所を大きくする
    別ドライブに配置 or どうにかしてパーティションのサイズを拡張する*1等々、もっと大きい容量のパーティションに配置する
  • 解決策2:VHDを小さくする
    何らかの方法でVHDファイルの最大容量を削減して、最大容量が現パーティションに収まる用にしてしまう

の何れかの方法をとる必要が出きます。



実は、前に試したケースでは、「80GBバイトのHDDにインストールされた7の環境を抜き出して320GBのHDDに交換しそこでVHDブートさせた」ので、結果的に解決策1に沿っていた事になり、この問題に当たりませんでした。
が、現実問題として解決策2をとらざるを得ないケースの方が多いと思います。

解決策2として私がやってみた対処方法は以下の通りで、こうすることでとりあえず起動する事に成功しました。

  1. DISKPART等でパーティション(ボリューム)の縮小を実施
  2. VHD Resizer(http://vmtoolkit.com/files/folders/converters/entry87.aspx)で最大容量を縮小

(これらの操作の詳細については、それぞれ、

あたりを参照されるとわかりやすいかと思います。)

問題はここから。

とりあえず上記の手順を踏めば、バックアップやDisk2VHDで作成したVHDファイルからブート出来るようになる……のですが、実はまだまだ問題が残っていたり……。


上記の解決策2で作成したVHDファイルからブートすると、『Windows 7がDドライブからブートしている』という状態になってしまうようなのです。

そして、Windows 7は起動元ドライブがDドライブになることを想定していないから……なのか、Dドライブから起動しているにも関わらず、各種リソースについてはCドライブにアクセスに行こうとしているような挙動に出ます。
どういう事かというと……。
たとえば、エクスプローラの「お気に入り」からアクセスした「ダウンロード」フォルダにファイルを作成してみると、(現状、Dドライブとしてマウントされている)起動したはずのVHDではなくて、物理ディスク(元々のCドライブ)の方にあるユーザフォルダ配下に書き込みを行ってしまいます。


このあたりの詳細とか、解決方法(……も微妙なんですが)は、また明日以降にでも書きたいと思います。
#今日はもう、眠い……(X_X)


2009/11/06追記
解消した……と思ったら、全然解消してなかった!!
物理的に違うHDDに交換されてれば良いのだけど、一度Cドライブとしてマウントしたのを覚えちゃってるっぽいので、パーティションを解放したり色々やってもやっぱり内蔵HDDをCドライブとしてマウントしてしまう……。
解決方法をご存じの方、教えてください(T_T)

*1:ディスクを大容量の物に交換するとか、つぶしてくっつけれるパーティションがあるならそれでどうにかする