Pages

Wednesday, May 13, 2020

いつでも仮想化Windows 7 in Windows 10 (1/2):Windows 10への移行 - @IT

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

Windows 7 PCを丸ごと仮想化して活用する Windows 7 PCを丸ごと仮想化して活用する
Windows 7 PCを仮想化することで、ハードウェア故障などから保護することが可能になる。

 「Windows 7」の無償サポートが2020年1月14日に終了した。有償であればサポートサービスを継続できるものの、個人などが利用するには少しコストがかかりすぎる感じがある。

 また、Windows 7は、新しいCPUやデバイスなどのサポートがないため、新たに購入したPCにインストールすることも難しくなってきている。ハードウェアの故障などを考えると、いまあるWindows 7 PCはいつまでも利用できるとは限らない。

 しかし、既にサポートが終了したアプリケーションなどを、Windows 7環境で使い続けたいという場合もあるだろう。こうした問題に対して、ここでは、仮想マシン環境に稼働中のWindows 7を移行させる手順を解説する。なお、Windows 10のHyper-Vは、Windowsバージョンによって動作に違いがある。ここでは、「Windows 10 November 2019 Update(バージョン1909)」での作業を想定して解説する。

 また、詳細には触れないが、Hyper-V環境で動作させるに当たってWindows 7のライセンスが別途必要になることがあるので、ライセンス条項について事前に確認しておいてほしい。特に、PCにプリインストールされている、いわゆるOEM版のWindows OSは、原則としてプリインストール以外のマシンへ移すことが禁止されている。

どのように仮想化するか

 Windows 10 Pro以上が持つHyper-Vを利用して仮想マシン環境を作り、この中にWindows 7環境を移行させる。それには、Windows 7 PCの起動パーティションなどを仮想ハードディスクファイル(以下VHD)化し、これを使って仮想マシンを作る。

 実機で動いているWindows 7の起動パーティションをVHD化するには、Microsoftが「Windows Sysinternals」として無償提供しているツール群の中の「disk2vhd.exe」を使う(disk2vhd.exeは、「Disk2vhd v2.01」ページでダウンロードできる)。このツールを使って作成した「VHD」をインターネット接続の禁じられた仮想マシン内で動作させる。これにより、インターネット側からの攻撃を受けることなく、Windows 7を動作させることができるようになるわけだ。

 なお、インターネット接続を禁じても、仮想マシンとホストマシンをつなぐLAN内のファイル共有は有効にできるため、必要なファイルがあるならホストマシンでダウンロードを行い、これを仮想マシンから利用する。Hyper-Vでは、光学ドライブやUSBデバイスを仮想マシン内から扱うことも可能であるため、Windows 7でしか動作できなくなった古いデバイスも利用が可能だ。

 ここでは、Windows 7 PCを「実機」、Hyper-Vで仮想マシンを動かすPCを「ホスト」と呼ぶ。また、Windows 7が動作している仮想マシン環境を「W7VM」と呼んで区別することにする。

仮想化の手順 仮想化の手順
仮想化の手順Windows 7が動作している「実機」のディスクを仮想ハードディスクファイル(VHD)に変換し、仮想環境「W7VM」として起動する。

 具体的にWindows7プリインストールマシンを仮想化するには、以下の手順を行う。

  1. disk2vhd.exeを使い、外付けHDDなどにVHDを作成する
  2. VHDをホストにコピーし、Hyper-Vで仮想マシンを作る
  3. W7VMを起動させて環境を設定する

 ただし、「1.」を行う前にホスト側マシンの環境などに応じて、下準備としてデータファイルの待避や起動パーティションの縮小などを行っておく必要がある。この部分に関しては、ホスト環境にも関係するため、一通りの手順を説明したあとに解説する。

Windows7マシンを仮想化する

 事前準備として、バックアップも兼ねて、データファイルを他のマシンや外付けディスクなどに移動させておく。VHD化は、実機の起動パーティションの全セクターコピーとなる。

 実機で500GBのディスクを1パーティションで使っていれば、500GBのVHDができる。Windows 7世代のPCでは、SSDはそれほど普及しておらず、ディスクを内蔵したPCの方が大多数だった。

 その後、SSDが普及したときに、PCのストレージはスペック上小さくなった。このため、最近では500GB、1TBのSSD搭載マシンも普通だが、ホストの中には、数百GB程度のものもあるだろう。そうしたサイズに対して500GBは大きすぎる。もちろん、500GBで問題ないというのであれば、そのまま作業を続けて構わないが、大き過ぎるということであれば、事前にパーティションを縮小しておく必要がある。というのは、VHDファイルは、ファイルサイズを縮小することがほとんどできないからだ。このため、VHD化する段階で必要最小限としておく必要がある(方法は後述)。

 まずは、現在稼働しているWindows7の起動ドライブをdisk2vhd.exeを使ってVHD化する。disk2vhd.exeに関しては、Tech TIPSの「Disk2vhdツールでWindowsの物理ディスク環境をVHDファイルに変換する」を参照してほしい。

disk2vhd.exeを実行する disk2vhd.exeを実行する
disk2vhd.exeを起動したら、VHDファイルの作成先を指定し、VHD化するボリューム(パーティション)を指定する。このとき、起動ボリューム(C:ドライブ)の前にある「システムで予約済み」の領域も含めてVHD化する。

 disk2vhd.exeを実行する前には、事前にその他のアプリケーションを終了し、できれば不要なサービスも一時的に停止しておき、なるべくコピー元ディスクの書き換えが生じないようにしておく。

 なお、既にWindows 7 PCの動作が安定していない場合でも、ディスクが健在なら、取り出して、SATA-USBアダプターなどを使ってホストに接続し、これを使って仮想マシンを作ることも可能だ。Hyper-Vは、起動イメージとして物理ディスクを使うこともできる。ただし、ディスクの故障などを考えるとVHD化しておいた方がいいだろう。

 VHD化は、disk2vhd.exeを起動し、C:ドライブのパーティションを指定するだけでよい。C:ドライブ自体をコピーするため、VHDファイルの作成先は別ドライブになっている必要があり、かつ大きなファイルを移動させるため、できれば、外付けのHDDを使った方がいい。なお、Windows 7のインストールでは、起動パーティションの前にある予約領域「システムで予約済み」ボリュームがあるのが一般的だ。これはBitLocker用の予約領域なのでVHDに含めておく。

 作業時間はハードウェアに依存するが、100GBの内蔵ドライブのVHDファイルをUSB 2.0の外付けドライブ上に作成するのに1時間程度はかかる。disk2vhd.exeでは、VHDファイルの作成先をネットワークの共有フォルダにすることも可能である。ただし、共有フォルダへの書き込みは速度が落ち、作業が長時間かかるため、ネットワークへの負担も少なくないことは理解しておいた方がいいだろう。

 作成作業が完了すると、disk2vhd.exeは「.vhdx」という拡張子のVHDファイルを保存する(「.vhd」ではない)。これはホストへコピーしておく。

仮想マシンを準備する

 VHD化の間に、ホストで仮想マシンを準備する。Windows 10のHyper-Vに関しては、以下の記事を参考にしてほしい。

 Hyper-V自体の有効化などについては上記の記事を参考にしていただきたい。

仮想スイッチを作成する

 まずは、Hyper-Vマネージャーを起動し、W7VM用に「内部ネットワーク」仮想スイッチ(ソフトウェアで実現された仮想的なネットワークスイッチング機器)を作成する。

Hyper-Vで仮想スイッチを作成する(1) Hyper-Vで仮想スイッチを作成する(1)
Hyper-Vマネージャーを起動し、左ペインの[仮想スイッチマネージャー]をクリックして、[仮想スイッチマネージャー]ダイアログを開く。

Hyper-Vで仮想スイッチを作成する(2) Hyper-Vで仮想スイッチを作成する(2)
[仮想スイッチマネージャー]ダイアログでは、[新しい仮想スイッチネットワーク]を選び、[内部]を選択し、[仮想スイッチの作成]ボタンを押す。

Hyper-Vで仮想スイッチを作成する(3) Hyper-Vで仮想スイッチを作成する(3)
「仮想スイッチのプロパティ」では作成した仮想スイッチに名前を付ける。

 「内部ネットワーク」とは、インターネット接続はできないが、仮想マシンとホストだけが接続されているLAN内のアクセスが可能な仮想スイッチだ(特別な設定をしない限り、ホストに接続している外部のLANにはアクセス不可)。もちろん、既にHyper-Vを利用していて、「内部ネットワーク」を自身で作成してあるのなら、それを使っても問題ない。

 ただし、Hyper-Vを初めて有効化した後、デフォルトで作られる「Default Switch(既定のネットワーク)」の場合、ここで内部ネットワークを選択しても、インターネット接続が可能なネットワークスイッチが作成されてしまうため、これとは別にネットワークスイッチを作成する必要がある。

 内部ネットワークにするのは、Windows 7のサポートが切れており、インターネット接続で危険が生じるためだ。Windows 7からアクセスすると悪意のあるソフトウェアを送り込むようなサイトの出現も考えられるので、Windows 7からのインターネットアクセスは遮断しておいた方が安全である。

仮想マシンを作成する

 次に仮想マシンを作成する。これには、Hyper-Vマネージャーの[操作ペイン]にある[新規]−[仮想マシン]を選択し、[仮想マシンの新規作成]ウィザードを起動する。

 ポイントとしては、以下の4点に注意する。

  • 仮想マシンの世代は「第1世代」
  • メモリの割り当ては実機に準じ、動的メモリを有効にする
  • ネットワークは作成した「内部ネットワーク」とする
  • 「既存の仮想ハードディスクを使用する」を選択し実機から作成したVHDを指定

 Windows 10のHyper-Vによる仮想マシンには「第1世代」「第2世代」の2種類がある。このうち仮想マシン上のOS(ゲストOS)としてのWindows 7でサポートされるのは、第1世代だけだ(第2世代には非対応)。

 ここで注意が必要なのはWindows 7搭載PCのファームウェアの種類だ。第1世代の仮想マシンはUEFIに対応していない。そのため、元のPCのファームウェアがUEFIの場合、そこから作成されたVHDでは、第1世代だとOSを起動できない可能性が高い。

 もっとも、Windows 7世代では、ほとんどのマシンのファームウェアが旧来のBIOSであり、たとえUEFIに対応していてもBIOSエミュレーションだったと思われる。Windows 7自体はUEFIからの起動にも対応しているが、UEFIからの起動は推奨環境ではなかったためだ。このため、ほとんどの場合、UEFI非対応の第1世代でも移行できると考えられるが、最終的には実機で確認してほしい。

 起動ドライブのパーティションテーブルがGPTになっていれば、UEFIから起動しており、MBRパーティション形式ならば、BIOSからの起動であると判断できる(確認方法は、Tech TIPS「WindowsでGPT保護パーティションを削除する」参照のこと)。

 メモリの割り当ては実機に合わせて行う。少なくとも実機よりもメモリを減らすと起動時にメモリ不足に陥る可能性がある。なお、Hyper-Vでは動的メモリ割り当てを行えるため、メモリ割り当てが固定した値にはならない(Hyper-V上でWindows 7が頻繁にハングアップするようならば、動的メモリ割り当てを無効にするとよい)。このため、少しぐらい多めに割り当てても問題はない。ただし、仮想マシンの実割り当てメモリ量は、あくまでもホストの物理メモリ量との兼ね合いで決まることに留意されたい。

 実機から作成したVHDファイルは、できるだけ高速なストレージに置くようにした方がよい。基本的に仮想マシンでWindows OSを動作させる場合、仮想ハードディスクファイルへのアクセス性能がボトルネックになりやすい。実機では、Windows 7が直接ディスクをアクセスしているのに対して、仮想マシンでは、ディスクのエミュレーションが行われるため、アクセス速度に大きな差が生じる。このため、ハードディスクよりもSSD上に置く方がパフォーマンスは高くなる。

 次ページでは、Windows 10のHyper-V上で動作させたWindows 7の設定方法などについて解説する。

Copyright© Digital Advantage Corp. All Rights Reserved.

Let's block ads! (Why?)



"ハードウェア" - Google ニュース
May 14, 2020 at 03:00AM
https://ift.tt/3fHMflE

いつでも仮想化Windows 7 in Windows 10 (1/2):Windows 10への移行 - @IT
"ハードウェア" - Google ニュース
https://ift.tt/2RrtF7u
Shoes Man Tutorial
Pos News Update
Meme Update
Korean Entertainment News
Japan News Update

No comments:

Post a Comment