ハイパーバイザーをゲスト OS から非表示にするには、次の 2 つのことを行う必要があります。
- ハイパーバイザーの CPU 機能フラグを非表示にします。
- ハイパーバイザーの CPUID の葉を非表示にします。
これらのいずれも、virt-manager で完全に実行することはできません。仮想マシンの XML を編集する必要があります。
デフォルトでは、CPU は「ハイパーバイザーのデフォルト」に設定されています:
これにより、「QEMU 仮想 CPU バージョン 2.5+」になります
まず、virt-manager で CPU タイプを設定する必要があります。デフォルトの QEMU 仮想 CPU では、libvirt 内でハイパーバイザー フラグを削除することはできません。
最高のパフォーマンスと機能を得るには、[ホスト CPU 構成のコピー] と [適用] を選択するだけです。これにより、ネストされた仮想化を使用して、この仮想マシン内で 64 ビットで高速化された仮想マシンを実行できます。
これで、編集可能な仮想マシン XML に CPU セクションができます。 sudo virsh edit <vmname>
を実行 . CPU セクションは次のようになります:
<cpu mode='host-model' check='partial'>
<model fallback='allow'/>
</cpu>
ハイパーバイザーの CPU 機能を削除する要素を追加する必要があるため、次のようになります:
<cpu mode='host-model' check='partial'>
<model fallback='allow'/>
<feature policy='disable' name='hypervisor'/>
</cpu>
ここで、ハイパーバイザーの CPUID リーフも無効にする必要があります。これにより、NVIDIA ドライバーなどの他の機能が動作するようになります。
これは、 <features>
内に新しい要素を追加することによって行われます
すぐ上:
</features>
以下を追加する必要があります:
<kvm>
<hidden state='on'/>
</kvm>
ここで、VM をシャットダウンして再起動します (再起動では不十分です。完全なシャットダウンが必要です)。
この時点で、タスク マネージャーは次のように表示されます:
systeminfo
を実行することもできます PowerShell またはコマンド プロンプトで。すべてが順調であれば、下部の Hyper-V セクションにすべての「はい」の回答が表示されます:
Hyper-V Requirements: VM Monitor Mode Extensions: Yes
Virtualization Enabled In Firmware: Yes
Second Level Address Translation: Yes
Data Execution Prevention Available: Yes
やりたいことが何でもできるようになりました。