自然の赴くままに・そのときの 気分次第で・なんとなく

興味を持ったことを、なんとなく気の向くまま書いています。

VMware Workstation Pro / Player と Hyper-V の同居はできる? / ネストはできる?

先日の 2022年 8月 VMUG で「vExpert が語る  第18回 LT」の登壇ネタ、「VMware Workstation 16 Pro / Player で使う Windows 11」の中の「VMware Workstation をWindows 11 で使う」で話した内容をまとめました。

VMware Workstation Pro / Player をWindows 11 で使うには

現在提供されている VMware Workstation 16.2 Pro / Player を使えば、何も悩むことなく使うことができます。また、それ以前のバージョンでも VMware Workstation 15.5 Pro / Player 以降であれば問題なく利用できます。

では、VMware Workstation 15.1 Pro / Player 以前のバージョンではどうでしょうか。実は条件によって VMware Workstation Pro / Player のインストールができても、仮想マシンを動かすことができない場合が出てきます。この記事ではそれを説明したいと思います。

VMware Workstation Pro / Player の仕組み

VMware Workstation Pro / Player を動かすには、vSphere とは異なりホスト OS が必要になります。

Workstation Pro / Player と vSphere の違い

上の図を見ていただくとわかるのですが、VMware Workstation Pro / Player 上で仮想マシンを動かすためには、仮想マシン内のアプリケーションは仮想マシンの仮想ハードウエアにゲストOS経由で命令を出します。それを VMware Workstation Pro / Player が受け取ってホスト OS が理解できる形に変換し ホスト OS に対して命令を伝達、ホスト OS はその命令をハードウエアに出すという形をとります。命令の結果はその逆順を通って仮想マシン内のアプリケーションに伝わるので、オーバーヘッドが非常に大きくなるというのが理解できるかと思います。この方法ではリソースを効率よく使うことができません。vSphere ではこの OS の部分をハイパーバイザーである vSphere が代替することで、中間にワンクッションある命令の変換をなくしリソースを効率的に使えるようにするとともに、オーバーヘッドを小さくすることができます。VMware Infrastructure 3 まではこの処理をすべてソフトウエアで行っていましたので、VMware Workstation や VMware GSX Server のようなホスト OS が必要な仕組みよりはオーバーヘッドは少なかったのですが、リソース特に CPU パワーをまだまだ有効に使うことができませんでした。そこで VMware Infrastructure 3.5 からは命令をハードウエアに肩代わりしてもらう機能を活用することになります。それにより、今の vSphere のようなオーバーヘッドがほぼないハイパーバイザーになっていったのですが、VMware Workstation Pro / Player ではホスト OS があるのでそのようなことができません。でも幸いなことに Windows では直接ハードウエアを操作する API などが用意されていたため、VMware Workstation 15.1 Pro / Player 以前のバージョンではそれを活用することで、オーバーヘッドを減らしパフォーマンスの向上を図ることができていました。

物理 PC にインストールされた 15.1 以前の VMware Workstation Pro / Player の動作イメージ

境目は Windows 10 20H1 ビルド 19041.264 以降

Windows 10 から クライアント OS でも正式に Hyper-V が利用できるようになりました。Windows 11 ではフレッシュインストールではデフォルトで Hyper-V がオンに、Windows 10 からのアップグレードではオフになっていますが、以下のように後から簡単にインストールができるようになっています。

Hyper-V のインストール

※メーカーの Windows 11 PC では、メーカーの都合で Hyper-V がオフになっているものもあるかもしれません。その場合でも、上の手順で簡単に Hyper-V を有効にすることができます。(Windows 11 Home ではこの手順ではできません。でも、コマンド操作が必要ですが Hyper-V を有効にすることはできます。)

この Hyper-V が曲者で、Hyper-V が有効になったホスト OS では Windows のセキュリティ強化の機能 Virtualization Based Security (VBS)も有効になり、この影響で直接ハードウエアに対して API で命令を出すことができなくなりました。つまり、VMware Workstation 15.1 Pro / Player 以前のバージョンでは、ハードウエアに対して命令を伝達することができなくなりました。

VBS による影響 (VSM 仮想マシンの中で VSM の各機能が動作)

Virtualization Based Security (VBS) は何をするの?

VBS は Windows オペレーティングシステムHyper-V から独立した Virtual Secure Module (VSM) と呼ばれる仮想マシンにより機能が提供され、Local Security Authority (LSA)、Virtual Trusted Platform Module (VTPM)、Hypervisor-Enforced Code Integrity (HVCI) などのチェックと情報の管理を行っています。

VBS と VSM

同時に使えるよう VMware はどのような対処をしたの?

この課題に対して VMwareVMware Workstation Pro / Player の改修を行い、VBS が有効な状態(つまり Hyper-V がオンな状態)でも VMware Workstation Pro / Player を動作できるようにしました。このバージョンが 15.5 で、それ以降の VMware Workstation Pro / Player では、Hyper-V が動作している Windows 10 / Windows 11 でも動作ができるようになりました。具体的には WBS を通過できるように Windows Hypervisor Platform (WHP) API を使うように VMware Workstation Pro / Player の改修を行い、VMware Workstation Pro / Player は特権モードでの動作を一切せずにすべてユーザーモードで動作するようにしました。これにより、Windows 側の仮想化環境(Windows Hypervisor Platform)が変わっても WHP API を守っている限り問題なく動作できるようになりました。

15.1 までと 15.5 以降

Hyper-V 上で VMware Workstation が使えるのはどの仮想ハードウエアバージョン?

Windows 10 / 11 の Hyper-V が動作している環境で VMware Workstation Pro  / Player の仮想マシンを動かす場合、仮想ハードウエアバージョンも対応している必要があります。Hyper-V が動いている環境に使える仮想ハードウエアバージョン 16 以降が必須です。現在販売されている VMware Workstation 16 Pro / Player (16.2) では仮想ハードウエアバージョン は 18 なので問題ありませんが、古い仮想マシンをそのまま Hyper-V が動いている Windows 上の VMware Workstation Pro  / Player にコピーまたは移動して使う場合は、仮想ハードウエアバージョンを適宜アップグレードしてください。下表の赤字が対応しているバージョンです。

仮想ハードウエア
バージョン
対応する Workstation
Pro バージョン
対応する Workstation
Player バージョン
対応する
config バージョン
20 2022H2 2022H2 8
19 8
18 16.2
16
16.2
16
8
17 8
16 15.x 15.x 8
15 8
14 14.x 14.x 8
13 8
12 12.x 12.x 8
11 11.x 7.x 8
10 10.x 6.x 8
9 9.x 5.x 8
8 8.x 4.x 8
7 7.x
6.5x
3.x 8
6 6.0x 8
5 2.x 8
4 5.x 1.x 8 ※4
3 4.x 7
2 3.x 6

1
※1

※2

2.x
VMware 2.0 for Linux, VMware 2.0 for Windows NT and 2000
2
1
※1
※3
VMware 1.1 for LinuxVMware 1.0 for Windows NT and 2000 1

※1 仮想ハードウエアバージョンの記述がないが、最初の仮想ハードウエアなので便宜上 1とした。

※2 仮想ハードウエアのバージョン上げずに拡張するために config.version を使用している。

※3 仮想ハードウエアバージョン(virtualHW.version)及び config.version の記述なし
※4 これ以降は  config.version を使わず仮想ハードウエアバージョンを上げていくようになった。

ちなみに、VMware Workstation Pro / Player に存在しない仮想ハードウエアバージョンは、ESX / ESXi だけのバージョンになります。

使用している PC で Hyper-V がオンになっているかどうかを知るには

Hyper-V 上で動作することが保証されている 15.5 以降の場合、インストール時に以下のダイアログが出て、必要な機能が追加されます。

VMware Workstation インストール時に表示される WHP と VBS のメッセージ

既に VMware Workstation Pro / Player をインストール済みの場合は、「スタート」 → 「Windows ツール」 → 「システム情報」の中の「仮想化ベースのセキュリティ」で確認することができます。

仮想化ベースのセキュリティ

Hyper-V を有効にした VMware Workstation 上の 仮想マシンHyper-V をネストできるの?

今までの Hyper-V が動いていない Windows 上の VMware Workstation Pro / Player では、Hyper-V や ESXi などをネストして動かすことができました。これは Hyper-V が動作している Windows 上の VMware Workstation Pro / Player でも、仮想マシンの設定を一部変えることで、ネストさせることは可能です。

Hyper-V のネスト

うまく動かないときは

以下のダイアログが出て仮想マシンが起動しない場合、仮想マシンの設定を変えてください。

Intel VT-x/EPT 関連で動かない

変える場所は一つ、上のダイアログのメッセージに書かれている部分になります。具体的には以下の部分です。

仮想化エンジンの設定変更

Windows 11 仮想マシンが動かないときは(インストールできない、起動しない)

以下の記事を参考に .vmx ファイルを編集してください。

imaisato.hatenablog.jp

具体的には 

managedvm.autoAddVTPM = "software"

を追記するだけでインストールも起動もできるようになります。もう少しすれば現在パブリックベータの VMware Workstation 22H2 (Build 20200310 / 2022/07/28 Tech Preview が正式版になり Windows 11 もサポート対象になるので、それまで待つということもあります。それについては以下の記事を参考にしてください。

imaisato.hatenablog.jp