Hyper-VモードでLinux OSとAndroid OSを同時使用する
目次

Xamarinの開発環境を模索しています。普段はLinux/Hyper-V上でAPIを開発しているのですが、Hyper-VとAndroid Emulatorとの組み合わせがまだ整備されておらず一筋縄ではいかなかったのでその備忘となります。
PROBLEM
- 普段の開発環境CentOS/Hyper-Vを変更することなく、Xamarinをつかいたい
- CentOS/Hyper-V上にAPIサーバーをたてて、XamarinアプリからAPIをたたく構成
- Android EmulatorはIntel HAXM+ホスト型Hypervisor前提のものが多い
- VirtualBoxなどホスト型HypervisorだとVMがよくクラッシュしてつらい
- なので、APIサーバーはHyper-Vでたてている
- また、オフィス移動が多いのでネットワーク環境はおもにWi-Fi(無線LAN)を使用している
SOLUTION
というわけで、Hyper-Vでイメージ管理するVisual Studio Emulator for Android(VS Emulator)を使うことにしました。これで何もせずに解決かというそうではなく、まず前提としてネットワーク上の注意があります。
- VS EmulatorはHyper-VのNetwork AdapterをEthernet(有線LAN)しか使用できません。Wi-Fi(無線LAN)は使用できません
- VS Emulatorの各デバイス(Android VM)を初回起動させる際に、有線LANと無線LAN双方からネットワークにつなげていると失敗します
Hyper-VモードでLinux OS(VM)とAndroid OS(VM)を同時使用する方法
その上で、同時使用する方法ですが、先ほどネットワークの注意を考慮すると下記のような流れになります。
Stop-VM CentOS現在稼働しているLinux VMを停止しますDisable-NetAdapter Wi-Fi無線LANの接続を停止し、有線LANのみの接続にします- VS EmulatorからAndroid VMを初回起動します、そうすると有線LAN用のvEthernetが作成されます
Enable-NetAdapter Wi-Fi- 無線LAN、有線LAN、双方を接続しますStart-VM CentOS- Linux VMを起動します
WRAPUP
Windows Subsystems for Linux等、Windowsの仮想化環境はまだ発展途上にあります。おそらく今回の対処方法は一時的なものに過ぎず、こうしたネットワーク上の注意を意識することなく解決できると思われます。しばし様子見です。
