:::

雜談:在實體機器裡面架設虛擬機器的虛擬機器失敗 / TALK: Virtual Machine Failure Within Nested Virtualization on a Physical Machine

7月 25, 2025 , , 0 Comments Edit Copy Download

2025-0320-111359.png

沒想到Proxmox VE裡面的Windows無法啟動WSL2的原因,可能是因為Proxmox VE宿主機的CPU是AMD。


Windows中的虛擬機器 / Virtual Machines in Windows

2025-0320-105456.png

為了測試Docker Desktop在Windows環境下的運作,我用Proxmox VE架設了Windows 11 Pro N作業系統,然後安裝Docker Desktop來使用。Docker Desktop需要使用Windows的WSL (Windows Subsystem for Linux)來執行Docker容器,通常安裝完Docker Desktop後,軟體會再要求Windows配置好WSL。

2025-0320-105958.png

然而,當我嘗試使用「wsl --install」來安裝Ubuntu時,卻收到了以下錯誤訊息:

PS C:\Users\user> wsl --install
Downloading: Ubuntu
Installing: Ubuntu
WSL2 is not supported with your current machine configuration.
Please enable the "Virtual Machine Platform" optional component and ensure virtualization is enabled in the BIOS.
Enable "Virtual Machine Platform" by running: wsl.exe --install --no-distribution
For information please visit https://aka.ms/enablevirtualization
Error code: Wsl/InstallDistro/Service/RegisterDistro/CreateVm/HCS/HCS_E_HYPERV_NOT_INSTALLED

幾經調查後,似乎是因為虛擬機器本身沒有啟動硬體虛擬化功能的緣故。那接下來就要離開Windows虛擬機器,從宿主機(host)來看看可能的原因了。

Proxmox VE環境 / Proxmox VE Environment

2025-0320-105303.png

宿主機使用的CPU是AMD Ryzen 9 7940HS。就跟現代的CPU一樣,基本上都支援硬體虛擬化的功能。

2025-0320-110454.png

根據Proxmox VE在Enable Nested Hardware-assisted Virtualization裡面的說明,虛擬化的參數已經開啟。但因為我使用的是AMD的CPU,跟PVE說明中的Intel有點不一樣。

設定CPU / CPU Settings

2025-0320-110333.png

說明中也提到應該讓客機的CPU使用宿主機的CPU,設定為host即可。但結果依然是無法成功。

2025-0320-110802.png

我嘗試了網路上提到的幾種設定,不過還是無法在客機Windows裡面啟用WSL。

2025-0320-110931.png

有許多建議跟教學,不過看起來大家使用的CPU都是Intel系列。而Proxmox VE在CPU設定裡面也有hv-evmcs可供設定,這個設定似乎可以加強客機巢狀虛擬化的功能,但只能在Intel CPU裡面使用。

小結 / In Closing

幾經研究之後,感覺似乎是AMD的CPU無法啟用巢狀虛擬化,抑或是Windows的WSL還有其他要求,可能還有我沒察覺到的細節?

總之這次嘗試算是失敗了。這篇就把過程記錄一下,看看未來有沒有辦法克服吧。