清水理史の「イニシャルB」
Windows 11の地味に便利な新機能! 「Nested Hyper-V」がAMD製CPUでもようやく可能に
2021年10月11日 06:00
2015年に対応していたIntel製CPU搭載機から遅れること実に5年! Windows 11になって、ようやくAMD製CPU搭載PCでも、入れ子になったHyper-V環境が可能になった。
今回は、Ryzen 9 3900Xを搭載したWindows 11環境において、仮想マシンの中で、さらに仮想マシンを動かしてみた。
「Nested Hyper-V」がAMD CPUに対応し、検証が捗る
AMD CPUを搭載したクライアントOS環境でも、ようやく「Nested Hyper-V」が正式に利用可能になった。
Nested Hyper-Vとは、Hyper-V環境で作成した仮想マシンの中で、さらにHyper-Vを利用して仮想マシンを動作させる技術のこと。
Microsoftのドキュメントでは「入れ子になった仮想化」と呼ばれているが、クライアントOSでも、すでに2016年8月提供のWindows 10 Anniversary Update以降でサポートされていた機能だ。
しかし、以下のドキュメントに記載されているように、前提条件として「入れ子は現在 Intelのみでサポートされています」と記載されていて、AMD製CPU搭載機では利用できなかった。
- 入れ子になった仮想化による仮想マシンでのHyper-Vの実行(Microsoft Docs)
上記のドキュメントは2016年版で、その後の2020年に、Windows Insider向けにAMD向けのNested Hyper-Vがプレビュー版として提供されていたのだが、2021年、Windows 11の登場によって、ようやくNested Hyper-Vが正式にAMD製CPUでも利用可能になったわけだ。
Nested Hyper-Vは、本来Hyper-Vコンテナ向けに開発された技術であったが、検証目的で利用されることも多い。Windows 11で言えば、WSL2を検証したいとか、今後搭載予定の新機能となるAndroidアプリ対応なども、Nested Hyper-Vが使えれば、仮想マシンの中で検証が完結する。
もちろん、企業ユーザーがサーバーをHyper-V環境に移行するための検証をするときなどにも便利だし、一般ユーザーがWindows 11の機能を試してみたいと思ったときに、仮に仮想環境が必要だとしても、実機を用意することなく手元のクライアントPC上の仮想環境だけでテストが完結するようになったのは、ありがたいところだ。
Windows 10のNested Hyper-V対応状況を確認する
それでは、実際に検証していこう。
まずは、Windows 10の状況を確認しておこう。以前、Insider向けのテストが実施されていたときは、Nested Hyper-Vにはバージョン9.3以降の仮想マシンが必要とされていたが、手元のWindows 10では、以下のように9.2までしかサポートされていなかった。
このPCにHyper-Vをインストールし、仮想マシンを作成後、その仮想マシンでHyper-Vをインストールしようとしても、Windowsの機能の「Hyper-V」がグレーアウトしてインストールできない。仮想環境を必要とする「Microsoft Defender Application Guard」や「Windowsサンドボックス」なども同様だ。
また、「WSL --install」のコマンドでWSL2をインストールすることは可能だが、Ubuntuを起動すると、以下の画面のようにLinux環境を起動できない。
これが、現状のWindows 10の状況だ。Intel製CPUであれば問題ないが、AMD製CPU環境だと、このように仮想マシン内でさらに仮想マシンを動かすことはできない。
Windows 11でNested Hyper-Vを検証
続いて、Windows 11環境で検証してみよう。まずは、同じように仮想マシンの構成バージョンを確認してみる。
Windows 10は、2021年9月末時点での最新版でも9.2までしかサポートされていなかったが、Windows 11では10.0がサポートされており、しかも10.0がデフォルトに設定されている。つまり、Windows 11環境で仮想マシンを作成した場合のバージョンは10.0となり、Nested Hyper-Vの動作要件を標準で満たすことになる。
では、早速、と言いたいところだが、構成バージョンの要件を満たしても、すぐにNested Hyper-Vは利用できない。標準では、仮想マシンの「ExposeVirtualizationExtensions」パラメーターが「False」になっているため、これを「True」に変更する必要がある。
このため、先に紹介した「入れ子になった仮想化」のドキュメントを参考に、PowerShellで以下のコマンドを実行して、パラメーターを変更する。
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
さらに、ネットワークを入れ子になった仮想スイッチ間でルーティングするため、以下のコマンドでMACアドレススプーフィングも有効化しておく。
Get-VMNetworkAdapter -VMName <VMName> | Set-VMNetworkAdapter -MacAddressSpoofing On
上記の設定をすれば、以下のようにHyper-V仮想マシン内で、さらにHyper-Vをインストールできるようになる。
さすがに仮想マシン内の仮想マシンは動作が重い
このようにして、最終的にできた環境が以下の画面だ。
今まで、Hyper-VやWSL、Windowsサンドボックスなどのテストをするために実機を用意していたが、これでAMD製のメインマシンで動作する仮想マシンだけで、動作の検証が可能となった。
実際に使ってみると、さすがに仮想マシン内の仮想マシンは動作がかなり重い。構成を工夫すれば改善できるかもしれないが、よりパワーのあるマシンでないと実用は厳しいが、検証目的であれば十分な印象だ。
これで、Windows 11の次期大型アップデートでの投入が噂されるAndroidアプリの動作検証も仮想マシン内でできそうだ。AMDユーザーにとっては、地味にうれしいWindows 11の新機能と言えそうだ。