Hyper-VをVirtualBoxと併存できる形でインストールして外部へブリッジ接続する

久し振りの投稿になります。

今回、パワフルなマシンを購入して本格的な自宅サーバを仕立てる計画を立てました。今迄は古い廃棄マシンを貰ってきて使ってた訳ですが、一念発起して快適なハードウェアを購入しようという計画です。

計画と言うか、やっとお金が溜まった～！というだけなのですが。

但し。残念な事に、新型コロナの世界的な流行の煽りで、狙っていたマシンの納期がいつになるかわからないという悲しいお知らせがありまして。実際に手に入るのはいつになるか分かりません。

そこで！入手したらすぐに動けるように、現状の手持ちのマシンでそれらしい環境を先行して構築しておく事にしました。

その第一歩として、ArchLinuxのインストール用ISOを作成する為に、普段使いマシンに仮想マシンを構築する作業です。

なんでしょうね、美味しいカレーを作る為にスパイスを育てる畑を用意する所から始めるこの感じは。我ながらどうかしてるとは思うんですが。

# 環境

Windowsです。

- エディション= Windows 10 Pro
- バージョン= 20H2
- OSビルド= 19042.1237
- エクスペリエンス= Windows Feature Experience Pack 120.2212.3530.0

ハードウェア環境について。

- プロセッサ= Intel(R) Celeron(R) CPU 1005M @ 1.90GHz   1.90 GHz
- 実装 RAM= 4.00 GB （3.90 GB 使用可能）
- システムの種類= 64 ビット オペレーティング システム、x64 ベース プロセッサ

機種情報は不要でしょうけども、私自身の覚え書きとして。

- 機種= dynabook Satellite B453/L

今から7年も前、2014年頃の機種で、廃棄処分になるのを譲り受けた物です。メモリも4GBしか積んでませんし、Celeron 1.9GHz だし。およそ仮想環境を動かそうってマシンじゃありません。

しかしOSはHomeじゃなくてProですから、Hyper-Vの勉強をするだけなら何とかなるでしょう。と信じる事にしました。

# 今回の目標

- Hyper-V やりたい！WSL2ではなくて。
  - これを機にHyper-Vのネットワーク周りを理解したい。
- VirtualBox との併存。
- Hyper-Vゲストマシンへのリモートデスクトップ接続。

以上です。
実は以前にもHyper-Vを実験した事があるのですが、その時はこのどれもがうまくいかなかったのでした。

# 参考文献

Hyper-Vとその周辺、特にネットワークについて、調べてみました。
それらの理解に役立った記事です。諸先輩に感謝を。

- [WSL2とHyper-Vの関係 - Qiita](https://qiita.com/matarillo/items/ca1eecf8f9a3cd76f9ce)
- [Hyper-Vのネットワーク（接続の種類）について - アンクルエンジニアの気づき](https://uncle-atsushi.com/hyper-v_virtual_switch_configuration/)
- [Hyper-Vのスイッチの違い - 海を飛んで君の許へ。 - Hatena Blog](https://asumigakuto.hatenablog.com/entry/2019/01/25/120000)
- [ネットワークを設定する。 - 自鯖](https://jisaba.life/2019/02/24/post-68/)

Hyper-Vを有効にする手順については、以下の記事が参考になりました。Microsoftの公式ページです。これが一次情報、かな？

- [Windows 10 上に Hyper-V をインストールする](https://docs.microsoft.com/ja-jp/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v)

# Hyper-V 有効化

Hyper-Vを有効にします。

方法としてはPowerShellとかDOSコマンドとかを操る方法もありますが、今回はGUIだけでやります。Windowsなので。

1. Windowsメニューから「設定」をクリック
![Windowsメニュー-設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/08be80b6-75bb-4b2a-4fac-f134505e103f.png)

1. 「設定」画面で「アプリ」をクリック
![設定-アプリ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/43ed4ac8-ef4d-8743-0751-ff677e74b0f0.png)

1. 「アプリと機能」画面で、右または下に表示される「プログラムと機能」をクリック
![アプリと機能-プログラムと機能.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/8554f32b-3d19-0c9c-18b9-5316ca53ba9f.png)

1. 「プログラムと機能」画面で、左に表示される「Windowsの機能の有効化または無効化」をクリック
![プログラムと機能-Windows機能.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/a6a037e7-ae72-4ab5-3bcb-21b02f793d93.png)

1. この画面で以下を選択する。Hyper-Vを技術基盤とする機能も一緒に選択しておいた方が、後々混乱が無くて良いと思わるので、ついでに選択。
   - Hyper-V （及びその下の Hyper-Vプラットフォーム と Hyper-V管理ツール）
   - Linux 用 Windows サブシステム
   - Windows サンドボックス
   - Windows ハイパーバイザー プラットフォーム
   - 仮想マシン プラットフォーム
![Windowsの機能.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/e2a3505d-31ae-c2e6-dfd9-baa90fddfa12.png)

1. OKボタンをクリックすると、インストールが始まる。少し待たされる。

インストールが完了すると、Windowsメニューの「Windows 管理ツール」にHyper-V関連のツールが2つ登録されます。

- Hyper-V クイック作成
- Hyper-V マネージャー

![hyper-v_WinMenu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/e8466308-fc81-5793-c540-63eed4c140c2.png)

# Hyper-V ネットワーク設定：外部ネットワーク

Hyper-V がインストールされると、Windowsとハードウェアの間にHyper-Vハイパーバイザーが割り込むような形になります。これはHyper-Vについての解説記事を漁れば普通に解説されている内容ですので省略。

そしてこの構造が最も目に付く形で表れて、かつ理解し難いのがネットワークでしょう。これに関しては最初に挙げた参考文献を参照して下さい。

インストール直後では「Default Switch」として内部ネットワークだけが用意されていて、仮想マシンを作成すると外部から切り離されます。

正確に言うと、ホストマシンを経由してNAPTで外部にアクセスできますが、NICはホスト環境である筈のWindowsに対しても仮想NICが割り当てられます。実は**このWindowsはホストではない**んですね。**ホストはHyper-V**です。

私は以前、この辺りの事情が飲み込めなくて混乱して訳が分からず（当時はHyper-Vのネットワーク解説記事そのものがほぼ無かった）今回、冒頭の参考文献を拝見して漸く理解しました。

と言う訳で。

Hyper-V仮想マシンを作成して、ネットワーク的に外部へブリッジ接続したい場合は、下記の手順で「仮想スイッチマネージャー」から「外部ネットワーク」を作成しておきます。

1. Windowsメニュー>Windows 管理ツール>Hyper-V マネージャー
1. 「Hyper-V マネージャー」画面の右に表示される「仮想スイッチ マネージャー」をクリック
1. 「新しい仮想ネットワーク スイッチ」を選択
   1. 適当に名前を付ける。私は「Hyper-V_BridgeNetwork」とした。
   1. 必要に応じてメモを記入。私は、絶対に忘れちゃいけない注意書きを書き込んでおいた。
   1. 接続の種類= 外部ネットワーク
   1. 「管理オペレーティングシステムにこのネットワークアダプターの共有を許可する」をチェック
![Hyper-V_BridgeNetwork.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/a8192275-ee6b-3240-cc38-75b51dca466d.png)

これでOKをクリックすれば、準備は整いました。

# 仮想マシンを作ってみる

仮想マシンの作り方は、ちょっと検索すれば丁寧な解説記事が山程見つかりますので、ここでは省略。ネットワークアダプターの仮想スイッチとして上述の「Hyper-V_BridgeNetwork」を選択すれば、その仮想マシンはLAN上に存在するマシンになります。

VirtualBoxをインストールして、そちらで仮想マシンを作る事も同時に出来ます。これも手順は省略。ネットワークアダプターをきちんと選択すれば、こちらの仮想マシンもLAN上に存在するマシンになります。が、仮想スイッチとは無関係の名前になるのでとにかく分かり難い。困った物です。面倒臭いのであんまり追及していません。

仮想マシンのOSは、一瞬ちょっと動作確認するだけならば、ライセンス認証しないWindows10を使えます。ISOの入手方法やインストール手順は適当に調べて下さい。インストール後、リモートデスクトップ接続を有効にして、外部のパソコンなどからリモートデスクトップ接続を実験。仮想マシンがブリッジ接続されていれば、IPアドレスを指定して接続できるでしょう。

マシンの起動タイミングなどによって、最初はうまく接続できない可能性があります。私の場合、30分くらい（きちんと計ってなくて体感なので違うかも）色々と試していたら繋がるようになった気がします。

Windowsは、ネットワークの状態が変わってから30分くらいして漸く正常に反映された動作が始まる、という事が今でも時々あります。大昔のNetBEUIの時代からある話で、キャッシュや何かの影響らしいのですがね。

さて。Windowsをインストールした仮想マシンは、ライセンス認証しないならば、本格的に使用しないで削除しましょう。

これでやっと、想定した通りのHyper-V仮想マシンを作成できるようになりました。やったね:thumbsup_tone1: