I ran into a frustrating WSL2 installation problem on Windows 11 where Virtual Machine Platform simply wouldn't enable.
The feature installation would get stuck, and trying to enable it through PowerShell didn't help either. In some cases, the installation would hang around percentages like 14.9% or 37.8% and stay there indefinitely.
The usual checks were already done:
- Virtualization was enabled in BIOS.
- Windows had been updated.
- PowerShell was running as Administrator.
- Restarting didn't fix it.
What eventually worked was completely resetting the WSL/virtualization setup and reinstalling it cleanly.
I've since used this process to help a few other people with essentially the same problem, so I'm documenting it here.
Before You Start
This is a reset procedure. If you already have important WSL distributions, projects, databases, SSH keys, or other files inside WSL, back them up first.
For example:
wsl --export Ubuntu ubuntu-backup.tar
If this is a fresh/broken installation with nothing important inside it, continue.
The Fix
1. Finish Windows Update
Go to:
Settings → Windows Update
Install everything available and restart.
After restarting, check for updates again.
Don't skip this.
2. Disable the virtualization features
Open:
Control Panel → Programs → Turn Windows features on or off
Disable:
- Virtual Machine Platform
- Hyper-V, if enabled
- Any Hyper-V/hypervisor-related features you previously enabled
Apply the changes and restart if Windows asks you to.
3. Remove the existing WSL installation
Open PowerShell as Administrator:
wsl --uninstall
Then check:
wsl -l -v
You shouldn't have an existing distro that you need to preserve.
Again: don't delete a distro containing data you care about.
4. Restart Windows
Do a full restart.
This is important because we're changing Windows virtualization components, not just installing a normal application.
5. Check BIOS virtualization
Open:
Task Manager → Performance → CPU
Check:
Virtualization: Enabled
If it says Disabled, enter your BIOS/UEFI and enable CPU virtualization.
Depending on your hardware, it may be called:
- Intel Virtualization Technology / VT-x
- AMD-V
- SVM Mode
6. Check Windows Update again
Go back to:
Settings → Windows Update
Check again and install anything pending.
Restart if required.
7. Enable WSL
Go back to:
Turn Windows features on or off
Enable:
Windows Subsystem for Linux
Apply the change and restart if prompted.
8. Enable Virtual Machine Platform
Go back to the same menu and enable:
Virtual Machine Platform
You can also do it from an elevated PowerShell:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Then restart Windows.
9. Install WSL again
Open PowerShell as Administrator:
wsl --install
Ubuntu should be installed by default.
If you want to see the available distributions:
wsl --list --online
10. Verify WSL2
Finally:
wsl -l -v
You should see something like:
NAME STATE VERSION
* Ubuntu Running 2
The important part is:
VERSION
2
That's it.
Why This Worked
I don't think there was a single magic command here.
The useful part was resetting the Windows virtualization/WSL state instead of repeatedly trying to enable Virtual Machine Platform on top of the broken configuration.
The sequence is essentially:
Windows Update
↓
Disable virtualization features
↓
Remove WSL
↓
Reboot
↓
Verify BIOS virtualization
↓
Update Windows again
↓
Enable WSL
↓
Enable Virtual Machine Platform
↓
Reboot
↓
wsl --install
This isn't an official Microsoft "fix" for every WSL2 installation problem. It's the recovery sequence that worked for me when the normal installation path was stuck.
If you're seeing the same Virtual Machine Platform hanging at a percentage and never completing, this is what I'd try after the normal troubleshooting steps fail.
One Last Thing
If you're reading this because you've been staring at 37.8% for three hours, you're probably not alone.
I originally solved this for myself and later found several people dealing with almost the exact same issue.
A single screenshot and a few steps were enough to get some of them running again.
So I figured I'd finally write the solution down properly.
Hope it saves you the headache.