Running Hyper-V in QEMU/KVM with Nested Virtualization on Linux.
Windows 11專業版內建「Hyper-V」虛擬化技術,除了開虛擬機,亦是跑Docker、Linux子系統 (WSL)、Android子系統 (WSA) 的必要條件。
若在Linux系統安裝Windows QEMU/KVM虛擬機,要如何在虛擬機內部啟用Hyper-V呢?
虛擬機裡面的虛擬化技術,稱作巢狀虛擬化 (Nested Virtualization),QEMU/KVM要達成巢狀虛擬化是有可能的,只需要調整一些參數即可。
1. 調整虛擬機組態#
用Virt Manager 安裝Windows 11虛擬機,記得裝專業版。
點選Virt Manager → 編輯 → 偏好設定。再點選編輯虛擬機硬體 → CPU數,編輯XML
找到
<features> </features>
這段,加入以下內容。設定Hyper-V模式為custom,並隱藏KVM狀態。
<features>
<acpi/>
<apic/>
<hyperv mode="custom">
<relaxed state="on"/>
<vapic state="on"/>
<spinlocks state="on" retries="8191"/>
<vpindex state="on"/>
<runtime state="on"/>
<synic state="on"/>
<stimer state="on"/>
<reset state="on"/>
<vendor_id state="on" value="123456789123"/>
<frequencies state="on"/>
</hyperv>
<kvm>
<hidden state="on"/>
</kvm>
<vmport state="off"/>
<smm state="on"/>
<ioapic driver="kvm"/>
</features>
2. 於KVM虛擬機內部啟用Hyper-V#
開機進入Windows,參考 Microsoft文件啟用Hyper-V。
- 專業版以系統管理員身份執行終端機,用PowerShell指令啟用Hyper-V:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
- 重開機後,用以下指令確認Hyper-V服務有上線,應會看到
State: Enabled
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V
3. 安裝WSL與WSA#
WSL參照此說明: 在Windows 11安裝WSL2子系統 (Ubuntu)。有了WSL後在裡面直接裝Docker即可。
WSA請參考 Microsoft官方說明 適用於 Android™ 的 Windows 子系統 ️