準備が整ったら、仮想マシンを起動する。無事起動したらサインインしてデスクトップを開く。
このとき、Windows 7がデバイスのインストールを行う。この作業が終わるまでは、しばらく放置しておき、再起動などを行わないようにする。長らくWindows 7を利用しているユーザーには言うまでもないが、タスクトレーの通知アイコンとして「ドライバーソフトウェアのインストール」があり、これを開くことで、インストール状況を表示できる。これを表示させておき、作業が終了するのを待つ。
なお、デバイスドライバのインストールはかなり時間がかかり、一瞬、ドライバのインストール作業が終わったように見えて、別のドライバのインストールが開始されることもあるので、お茶でも飲んで、しばらく放置した方がよい。また、場合によっては、途中に再起動を促すダイアログが表示されるが、ドライバインストールが全て終了するまでは待った方がよく、途中で表示された場合は「後で再起動する」を選んでおく。
仮想マシンですぐにでもやっておくべき作業がある。それは、コンピュータ名の変更だ。実機から作成したVHDは、実機と同じコンピュータ名を持ったままだ。このまま、仮想マシンを起動すると、実機がネットワークに接続されたままでは、ネットワーク内に同名のマシンが2台存在することになってしまうからだ。
もちろん実機は停止して今後起動させないとするならコンピュータ名を変える必要はないが、このことを忘れて起動してしまう可能性もある。コンピュータ名の変更は、実機も仮想マシンもWindows 7である以上同じなので、実機側を変更しても構わないが、ここでは仮想マシン側を変更するとして手順を説明する。
[コントロールパネル]の[システム]からコンピュータ名を変更する。できれば、仮想マシンを起動する前に実機を停止しておき、ネットワークのデバイスドライバがインストールされる前の段階で変更しておいた方がいいだろう。また、コンピュータ名を変更すると再起動を求められるが、取りあえずデバイスのインストールが収まるのを待つ。収まったら、一回再起動し、動作を確認しておく。
筆者は、Windows 7がインストールされたマシン2台からVHDを作り仮想化してみたが、基本的にどちらも問題なく起動できた。
仮想マシンが起動しなかった場合、以下のような原因が考えられる。
VHDの作成に失敗していると思われる場合は、「オフライン」で元のPCの起動ディスクからVHDを作成すれば解決できるかもしれない。前述したVHDの作成手順では、Windows 7を動作させたまま「オンライン」でディスクをコピーしてVHDを作成している。ボリュームシャドウコピーというオンラインでディスク(ボリューム)をコピーするための仕組みを利用しているものの、Windows 7の状態によってはコピーに失敗している可能性がある。その場合は、前述のようにディスクをPCから取り出して別のPCにつなぐか、あるいはWindows OSのインストールメディアを元のPCに差して別のWindows OSを起動して、disk2vhd.exeを実行し、元のPCのWindows 7が停止した状態でVHDを作成する、といった作業が必要になる。
ここからは、PCから移行したWindows 7環境を前提として、簡単に仮想マシンの使い方の勘所を解説しておく。
まず、USBデバイスなどを利用する場合には、Hyper-Vマネージャーから[接続]を使ってウィンドウを開かず、リモートデスクトップクライアントを利用して、仮想マシン(W7VM)に接続する。ただし、これはWindows 7 Professional/Enterprise/Ultimateに限られる。Windows 7 Home Premiumに対してリモートデスクトップ接続はできないので注意してほしい。
それには先にHyper-VマネージャーでW7VMを起動しておき、リモートデスクトップクライアントを起動して接続すればよい。このとき、[オプションの表示]を使い、[ローカルリソース]タブを表示させて、オーディオやプリンタなど接続するデバイスを指定する。それ以外のUSBデバイスなどは、[ローカルデバイスとリソース]−[詳細ボタン]から指定する。
不要なプログラムなどは、W7VMが正しく動作した後に、アンインストールする方が安全だ。実機がノートPCの場合、メーカー製の電力管理ソフトウェアなどが組み込まれていることがあるが、W7VMでは不要である。また、ディスプレイコントローラーも変わっているため、GPU関連のツールも不要になる。
仮想マシンには「チェックポイント」と呼ばれる機能がある。チェックポイントは、メニューから作成を指示すれば、その時点の仮想マシンの状態(VHDとメモリ)を記録する。以前、この機能は「スナップショット」と呼ばれていたものだ。チェックポイントは、手動で作成できるので、不要なプログラムをアンインストールする前に作成しておけば、何かアンインストールによって不具合が発生しても、元の状態に戻すことができる。
なお、仮想マシンを作成するとデフォルトで自動チェックポイントが設定される。自動チェックポイントは、起動時に自動的にチェックポイントを作成し、シャットダウン時にこれを自動的に統合する。このため起動中に行った作業は、自動チェックポイントを使ってリセットできる。注意するのは、シャットダウンすると自動チェックポイントはVHDと統合され、起動中の変更が確定するため、調子が悪い状態でシャットダウンをしないことだ。
チェックポイントが作られると、VHDとは別に差分の仮想ハードディスクファイルが作られ、そこに変更が記録されていく。Hyper-Vマネージャーでチェックポイントの「削除」を指示すると、差分仮想ハードディスクファイルとVHDが統合される(単純にチェックポイントだけを削除するのではない点に注意)。こうした処理があるため、W7VMは普段シャットダウンせず、「保存」で休止状態にして停止させておくのがいいだろう。
チェックポイントの操作は、Hyper-Vマネージャーで仮想マシンを右クリックして表示されるメニューか、または[接続]で起動した仮想マシンウィンドウの[操作]メニューから行うことができる。[チェックポイント]がチェックポイントの作成で、[元に戻す]がチェックポイントの適用によるロールバックである。
Windows 7の場合、実機でSMBv1がそのまま動作していた可能性がある。SMBとはファイル共有のための通信プロトコルで、SMBv1は既に廃れてきている古いバージョンである。一方、Windows 10を含む最近のOSでは、脆弱性対策のため、SMBv1が削除あるいは無効化されていることがよくある。
このため、Windows 10のエクスプローラーからWindows 7側が見えないといった問題が発生する可能性がある。これは、W7VM側で「Function Discovery Resource Publication」サービスを起動するようにすれば解決できる(Tech TIPS「Windows 10のエクスプローラの[ネットワーク]にPCが表示されない場合の対処方法」参照のこと)。
Windows 7世代では、まだ(SSDではなく)「ハードディスク」を内蔵した機種が大半を占めた。ハードディスクは、年々容量を増大させていたため、Windows 7の世代でも数百GBといった容量を持つ機種も少なくない。
こうしたことから、Windows 7 PCの起動ドライブをそのままVHD化してしまうと、数百GBといった容量になり、SSDを内蔵したホストへのVHDファイルのコピーが大きな負担となる可能性がある。もちろん、外付けのディスクという方法もあるが、仮想マシンでは、VHDへのアクセスが大きなボトルネックとなるため、できるだけ高速なストレージにVHDを置きたいところだ。
■VHDファイルの縮小は困難!?
仮想ハードディスクファイルは、可変長にすることが可能なのだが、実際には、ファイルサイズを拡大することは容易に行えるものの、ファイルサイズを縮小することはほとんどできない。仮想ハードディスクファイル内のパーティションサイズを縮小しても、仮想ハードディスクファイルのサイズを小さくすることはできない。
唯一できるのは、Hyper-Vマネージャーから[ディスクの編集]を使って最適化する程度だ。しかし、この作業は長時間かかる割にはほとんど効果がない。試してみても構わないが縮小できればもうけもの、たいていは長時間作業して数百MB程度の圧縮ができるだけだ。また、後述するパーティションの縮小作業は、VHDファイルに対しては意味がなく、パーティションを縮小させてもVHDファイル自体のサイズは変化しない。
■元のハードディスクで事前にパーティションを縮小しておく
そういうわけで、現実的な解決策は、VHD化する前に実機の起動ドライブを小さくしておくことだ。具体的には、Cドライブに相当するパーティションを縮小する。こうすることで、起動ドライブから作られるVHDファイルのサイズを小さくすることができる。なお、仮想的な容量は、VHDファイルの編集で、後からいつでも拡張することが可能なので、起動やドライバの組み込みなどに必要な最小容量で構わない。Windows 7ならば、30GB前後あれば十分だろう。
■パーティション縮小も簡単ではない!?
ただし、パーティションの縮小もそれほど簡単な作業ではない。というのは、空き容量が多くても、ディスクイメージ上で移動できないファイルがあると、そこまでしかパーティションを縮小できなくなるからだ。
これを俗に言うディスクデフラグソフトウェアを使って視覚化すると、下画面のようになる。空き領域はディスクの後半部分にあるものの、末尾付近に移動できないファイルがあり、それ以上小さくできなくなる。
こうした問題を引き起こすファイルとしては、「休止領域ファイル(hiberfil.sys)」と仮想記憶用の「ページングファイル(pagefile.sys)」がある。もちろん、起動中のプログラムの実行ファイルもこうしたファイルになりえる。そこで、これらを一時的に削除してパーティションを縮小する方法を紹介しよう。
■まずはディスクのクリーンアップで不要なシステムファイルを削除
以下の作業を行う前に、ディスククリーンアップで、不要なシステムファイルを全て削除しておく。少し古いが解説が以下の記事になる。
Windows 7で[スタート]メニューの[すべてのプログラム]−[アクセサリ]−[システムツール]−[ディスククリーンアップ]を起動したら、システムファイルのクリーンアップボタンを押す。対象ファイルが検索されるのを待ち、ダイアログが表示されたらリストアップされた全てのカテゴリーのチェックボックスをオンにして、[OK]ボタンを押しファイルを削除しておく。これで不要ファイルが消えるはずだ。なお、復元ポイントなどは、実機側では必要になることもあるので、ここでは削除せず、W7VMに移行してから消した方がいいだろう。
■自動起動するソフトウェアやサービスを止める
次は、システムの起動時に自動起動するソフトウェアやサービスを止める。実機では、必ずしもアンインストール作業を行う必要はない。というのは、ソフトウェアの一部は実機のハードウェアに必要なものもあり、そうでないソフトウェアでもアンインストール作業が、システム状態をおかしくする可能性もあるからだ。取りあえず「MSCONFIG32.EXE」を使い、システム起動時の実行を止めるのがよい。
ただし、Windowsのサービスに関しては、止めるべきではない。MSCONFIG32.EXEでは、Microsoftのサービスを除外することができる。サービスやプログラム実行を停止した日を記録でき、これを見ることで、実機をVHD化する前に止めたのか、それ以前から止められていたのかを判断できる。この機能を使い、実機とW7VMのそれぞれで、必要なプログラムの実行を許可すればいいだろう。
■ページングファイルと休止領域ファイルを一時的に削除する
プログラムの実行を止めたら、次は、「pagefile.sys」と「hiberfil.sys」を削除する。それには、仮想記憶と休止状態を止めなければならない。仮想記憶は、[コントロールパネル]−[システム]−[システムの詳細設定]−[パフォーマンス ]−[設定ボタン]−[詳細設定]タブ−[仮想メモリ]−[変更ボタン]で[仮想メモリ]ダイアログを開いて行う。ここで一番上のチェックボックスを「オフ」にし、「ページングファイルなし」を選択する。
なお、実際にページングファイルを使わなくなるのは再起動の後である。再起動させた後、ルートフォルダに残っている「pagefile.sys」を削除する。
休止状態を禁止するには、管理者権限でコマンドプロンプトを開き「Powercfg -H OFF」を実行する。これを設定すると自動的に「hiberfil.sys」が削除される。
■ハードディスクのパーティション縮小を実行する
このようにすることで、移動できないファイルが解消され、パーティションの縮小が最大サイズで行えるようになる。パーティションの縮小は、[スタート]メニュー右側の[管理ツール]−[コンピューターの管理]で行う。
起動したら左ペインから[記憶域]−[ディスクの管理]を選択し、ウィンドウ中央下のC:ドライブに相当する領域を右クリックして、[ボリュームの縮小]で行う。前述のディスククリーンアップと、ページファイル/休止領域ファイルの削除作業を行うと、ほぼ空き領域に相当する容量を縮小させることができる。しかし、これでは縮小作業に必要な領域がなく、縮小処理が失敗する。最低でも10GB程度の空き領域は残して、パーティションを縮小させる。
パーティションの縮小が成功したら、仮想メモリと休止状態、起動プログラムを元の設定に戻す。特に、ハードウェアに依存しないアプリケーションのサービスや常駐プログラムなどは、移行後にアプリケーションが正しく動作できなくなる可能性があるので、元通り起動するように設定し直す。こうした部分に関しては、実機の個々のハードウェアによって異なる部分なので自分で判断するしかない。
その後、disk2vhd.exeを実行してVHDファイルを作成する。
■移行後の仮想マシンでの設定変更
W7VM側では、休止状態と仮想メモリは、仮想マシン環境で制御されるので、そのままでよい。
また、起動プログラムは、ハードウェアが全く変わるため、ハードウェアに依存するもの(マシンにプリインストールされている電力管理ツールやカメラなどの搭載デバイスの制御プログラムなど)は完全に不要となる。これらはW7VMを起動した後、アンインストールすればよい(VHD作成前にアンインストールする必要はない)。
本稿では、Windows 7をWindows 10上のHyper-Vで安全に動作させるための最低限の手順を紹介した。
Windows 7が稼働しているノートPC、2機種で実際に仮想化を行ってみたが、W7VMの起動に関しては全く問題がなかった。むしろ、ホストがSSDだったため、数百GBのVHDをどうするかという点だけが問題だった。記事作成中、VHDを安易に大容量のハードディスク側に配置したところ、SSD側で起動している他の仮想マシンと比べて、起動などが遅く感じられた。Hyper-Vのボトルネックは、OSの起動ドライブとなる仮想ハードディスクファイルへのアクセスである。ここを高速化することが仮想マシンの使い勝手を上げる最初のステップとなりそうだ。
Copyright© Digital Advantage Corp. All Rights Reserved.