WSL2 Nested Virtualization
Enable nested virtualization for DataTalk Manager running inside a VM — Proxmox/KVM, VMware, Hyper-V, VirtualBox, and cloud platforms.
On this page
DataTalk Manager on Windows relies on WSL2, which runs a lightweight VM inside Windows. When Windows itself runs as a guest inside a hypervisor, nested virtualization must be enabled — otherwise WSL2 fails with error 0x800705b4 and DataTalk Manager cannot start its runtime.
If DataTalk Manager is installed directly on physical hardware, you do not need this guide. Go to BIOS/UEFI settings and enable Intel VT-x or AMD-V, then return to the Troubleshooting guide.
Platform support
Proxmox / KVM — supported. Enable the +vmx CPU flag and Hyper-V enlightenments on the physical host.
QEMU (standalone) — supported. Use -cpu host or pass the +vmx flag explicitly.
VMware ESXi / vSphere — supported. Enable Expose hardware-assisted virtualization to the guest OS in VM CPU settings.
VMware Workstation / Fusion — supported. Enable Virtualize Intel VT-x/EPT or AMD-V/RVI in processor settings.
Microsoft Hyper-V — supported. Run Set-VMProcessor -ExposeVirtualizationExtensions $true on the host.
Oracle VirtualBox — limited support, potentially unstable with WSL2. Not recommended for production deployments.
AWS EC2 — supported. Use .metal instance type (standard instance types do not support nested virtualization).
Azure — supported. Use Dv3/Ev3 or newer instance family (B-series burstable VMs do not support nested virtualization).
Proxmox / KVM
Step 1 — Enable nested virtualization on the physical host
Intel CPU:
cat /sys/module/kvm_intel/parameters/nested
echo 'options kvm-intel nested=1' >> /etc/modprobe.d/kvm-intel.conf
modprobe -r kvm_intel && modprobe kvm_intel
AMD CPU:
cat /sys/module/kvm_amd/parameters/nested
echo 'options kvm-amd nested=1' >> /etc/modprobe.d/kvm-amd.conf
modprobe -r kvm_amd && modprobe kvm_amd
A physical host reboot may be required if modprobe -r fails because other VMs are running.
Step 2 — Set VM CPU flags
Apply CPU flags including Hyper-V enlightenments — required for WSL2:
qm set <VMID> -args "-cpu host,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time,hv_synic,hv_stimer,hv_stimer_direct,hv_frequencies,hv_reenlightenment,hv_vpindex,+vmx"
Then fully restart the VM (a Windows reboot is not enough — QEMU must restart):
qm stop <VMID>
qm start <VMID>
Step 3 — Verify inside the Windows guest
Open PowerShell and run:
systeminfo | findstr /i "hyper-v"
bcdedit /enum | findstr -i hypervisor
The hypervisorlaunchtype value must be Auto. If it is missing or Off:
bcdedit /set hypervisorlaunchtype auto
Test WSL2:
wsl --install Ubuntu
A message about a detected hypervisor is normal in nested environments.
VMware ESXi / vSphere
vSphere UI: VM Settings → Virtual Hardware → CPU → enable Expose hardware-assisted virtualization to the guest OS.
ESXi CLI:
vim-cmd vmsvc/power.off <vmid>
Edit the .vmx file and add:
vhv.enable = "TRUE"
hypervisor.cpuid.v0 = "FALSE"
VMware Workstation / Fusion
VM Settings → Processors → check Virtualize Intel VT-x/EPT or AMD-V/RVI.
If WSL2 is also active on the Windows host, Windows Hypervisor Platform (WHP) must be enabled on the host as well.
Microsoft Hyper-V
Run on the Hyper-V host (VM must be shut down first):
Set-VMProcessor -VMName "<YourVMName>" -ExposeVirtualizationExtensions $true
Verify inside the guest:
Get-WmiObject Win32_Processor | Select-Object VirtualizationFirmwareEnabled
Should return True.
Oracle VirtualBox
VM Settings → System → Processor → enable Enable Nested VT-x/AMD-V.
Or via CLI:
VBoxManage modifyvm "<VMName>" --nested-hw-virt on
VirtualBox nested virtualization is experimental. For production deployments, Proxmox/KVM or VMware ESXi are strongly recommended.
Windows guest configuration checklist
After enabling nested virtualization at the hypervisor level, verify the Windows guest is correctly configured:
Hyper-V launch type — run bcdedit /enum | findstr -i hypervisor and confirm hypervisorlaunchtype Auto.
WSL feature — run dism /online /get-featureinfo /featurename:Microsoft-Windows-Subsystem-Linux and confirm State: Enabled.
VM Platform — run dism /online /get-featureinfo /featurename:VirtualMachinePlatform and confirm State: Enabled.
Hypervisor Platform — run Get-WindowsOptionalFeature -Online -FeatureName HypervisorPlatform and confirm State: Enabled.
WSL version — run wsl --version and confirm WSL version: 2.x.x.
Nested VM test — run wsl --install Ubuntu and confirm it completes without error.
Enable Hypervisor Platform if it is missing:
DISM /Online /Enable-Feature /All /FeatureName:HypervisorPlatform
Downgrade WSL if needed
WSL version 2.7.8 has a confirmed regression. If WSL fails after an automatic update, downgrade to 2.7.3:
Get-AppxPackage -AllUsers | Where-Object { $_.PackageFamilyName.contains("MicrosoftCorporationII.WindowsSubsystemForLinux") } | Remove-AppxPackage -AllUsers mkdir C:\Temp
curl.exe -L -o C:\Temp\wsl273.msi https://github.com/microsoft/WSL/releases/download/2.7.3/wsl.2.7.3.0.x64.msi msiexec /i C:\Temp\wsl273.msi /L*VX C:\Temp\wsllog.txtThe file should be approximately 255 MB.
Restart Windows, then run wsl --install Ubuntu to verify.
To prevent automatic WSL updates from overwriting the working version, block updates via Group Policy: HKLM\SOFTWARE\Policies\Microsoft\Windows\WSL.
WSL2 memory limits
WSL2 uses up to 80 % of available RAM by default. On machines with limited memory, set explicit limits.
Create or edit the file at C:\Users\mySCADAsrv\.wslconfig:
[wsl2]
memory=8GB
processors=2
swap=2GB
Apply changes:
wsl --shutdown
Recommended allocation:
8 GB VM RAM — set memory=4GB.
16 GB VM RAM — set memory=8GB.
32 GB VM RAM — set memory=12GB.
Leave at least 4–6 GB free for Windows and the DataTalk Manager application.
Common error codes
0x800705b4 — nested VM creation timed out. Enable nested virtualization at the hypervisor, verify the Windows guest flags, and downgrade WSL to 2.7.3 if needed.
0x8000000d — stuck WSL registration. Run wsl --unregister <distro> and delete the Lxss registry key.
ERROR_FILE_EXISTS — old VHDX file remains at the import path. Delete …\Runtime<distro>\wslDiskStorage and retry.
WSL_E_DISTRO_NOT_FOUND — the distro was registered under a different Windows user. Re-import under the mySCADAsrv service account.
ERROR_FILE_NOT_FOUND — WSL kernel is missing. Reinstall the WSL MSI package.
0x80070005 — permission denied. Ensure the operation runs as the service account that owns the WSL distros.