DataTalk

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.

Physical hardware only?

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.

Windows host with Hyper-V

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
Limited support

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:

Remove current WSL
Get-AppxPackage -AllUsers | Where-Object { $_.PackageFamilyName.contains("MicrosoftCorporationII.WindowsSubsystemForLinux") } | Remove-AppxPackage -AllUsers
Download WSL 2.7.3
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
Install
msiexec /i C:\Temp\wsl273.msi /L*VX C:\Temp\wsllog.txt

The file should be approximately 255 MB.

Restart and test

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.