Hyper-VでAndroidを実行する方法 (Wi-Fi接続もあるよ)

ITインフラに関わる、様々なサービスや機能に関する検証を行う場合、WindowsマシンやLinuxマシン、場合によってMacOSを使って動作に関わる検証を行えば十分でしたが、最近ではスマートフォンやタブレットを使って会社のITシステムに接続する場合も増えてきたので、スマートフォンやタブレットも検証の対象に加えなければなりません。

しかし、スマートフォンやタブレットはPCと違って、仮想マシンを立ち上げて、すぐに検証というわけにはいきません。私自身、機会があってMicrosoft IntuneやAzure Active Directoryの検証を行うことが多いのですが、そのときにAndroidやiOSでの接続確認が何かと面倒くさかったりします。

そんな折、Android限定ですが、Hyper-Vの仮想マシンとして立ち上げる方法を見つけたので、
備忘録代わりとして載せておきます。

Androidイメージの用意

Android自体、フリーでOSを提供しているので、最新のOSをダウンロードして利用できます。

http://www.android-x86.org/download

上記サイトからAndroidのISOファイルをダウンロードしたら、
Hyper-Vで仮想マシンを作成し、ISOファイルをマウントすれば、、

ところが、いくつかのトラップが待ち受けています。
注意点を次から紹介します。

Hyper-V仮想マシンの作成

Hyper-Vの仮想マシンを作成自体は普通の作成方法で問題ありません。
ちなみに私は
次のパラメータで作成しました。

・仮想ディスク:第1世代 (必ず第1世代で作成してください)
・仮想ディスクの容量:可変32GB (普通のスマートフォンでもだいたいこれくらいですよね)
・仮想メモリの容量:1024MB (1GB程度割り当てておくと、スムーズに動作します)
・仮想スイッチ:接続しない
・インストールオプション:ダウンロードしたISOファイルを指定

仮想スイッチですが、普通の仮想スイッチはAndroidの仮想マシンで認識しないため、
レガシネットワークアダプターを利用しなければなりません。
Hyper-V仮想マシンの設定画面で、[ハードウェアの追加]から[レガシネットワークアダプター]を追加します。

image

それから、既存のネットワークアダプターは使わないので、削除しておきます。
最後にレガシネットワークアダプターに外部仮想スイッチを割り当てて完了。
最終的に以下のような設定になります。

image

ここまでで設定は完了です。
Android自体はCDブートで動作するので、仮想マシンの電源を入れれば、
Androidが使い始められるようになります。

image

また、デフォルトではネットワーク接続がオフの状態なので、Wi-Fi(ランチャーから[設定]を起動して操作)も起動しておきます。
(Androidの初期設定が完了してからでないと、Wi-Fiはオンにできません)

image

これで、すべてがうまくいきます。
Hyper-Vホストのネットワークが有線LANならば。

Hyper-Vホストが無線LANを利用している場合の設定

ここまで紹介した設定はHyper-Vホストが有線LANを利用していることを前提にしています。
そのため、SurfaceのようなWi-Fiしか装備していないノートPCで
Hyper-Vを起動し、Androidを動かそうと思ったら、うまくいきません。

そこで、こんなひと手間をかけてみました。

image

Hyper-Vホストに内部仮想スイッチと外部仮想スイッチをそれぞれ作成し、
Android仮想マシンのレガシネットワークアダプターは
内部仮想スイッチを利用するように設定します。

そして、外部仮想スイッチは作成すると、ネットワークアダプター一覧は次のように表示されるので、
外部仮想スイッチのプロパティを開きます。

image

ネットワークアダプターのプロパティで[共有]タブを開き、インターネット接続の共有を以下のように設定します。[ホームネットワーク接続]には内部仮想スイッチ(下の画面ではvEthernet (Internal))を選択します。

image

こうすれば、Android仮想マシン→内部仮想スイッチ→外部仮想スイッチ→インターネットという
接続になり、Wi-Fiを利用している環境でもAndroid仮想マシンが利用できるようになります。

これで普通のAndroidと同じように使えるのですが、
自動消灯(スリープ)の設定が有効になっていると、
一定時間経過したのちスリープに入り、二度とマシンを操作できなくなります。
利用するときはスリープ([設定]-[ディスプレイ])をオフにしておくことをお勧めします。