/changelogs/wsl/wsl1-to-wsl2
WSL 1 vs WSL 2: what changed and how to convert a distribution
The commands on this page have not been executed by our verification runner yet.updated 2026-10-20
- tool
- WSL
- versions
- WSL 1 → WSL 2
WSL 1 translated Linux system calls into Windows calls. WSL 2 runs a real Linux kernel in a lightweight utility VM, so every Linux program works (Docker, systemd, FUSE), and file operations inside the Linux file system are much faster. New installations default to WSL 2.
Differences
| Area | WSL 1 | WSL 2 |
|---|---|---|
| Kernel | translation layer | real Linux kernel, updated through WSL |
| System call compatibility | partial | full |
| Linux files (~/) | slower | fast (ext4 virtual disk) |
| Windows files (/mnt/c) | fast | slower (network file protocol) |
| Networking | shares the Windows IP | NAT by default; mirrored mode available |
| systemd | no | yes, with [boot] systemd=true in /etc/wsl.conf |
| Docker Desktop backend | no | yes |
Check and convert
wsl --list --verbose # NAME, STATE, VERSION
wsl --set-version Ubuntu 2 # convert one distribution
wsl --set-default-version 2 # default for new installs
wsl --update # update the WSL package and kernel
wsl --shutdown # stop the VM, e.g. after changing .wslconfigSettings files
%UserProfile%\.wslconfig: VM-wide settings for WSL 2, such as memory, processors andnetworkingMode=mirrored./etc/wsl.confinside each distribution: per-distro settings such as[boot] systemd=trueand the default user.
Run wsl --shutdown after editing either file so the changes take effect.
Sources
Related pages
flags · wingetwinget install --silent --accept-package-agreements: unattended installsInstall Windows apps without prompts: winget install --id Git.Git -e --silent --accept-package-agreements --accept-source-agreements in setup scripts.cheat sheets · homebrewHomebrew cheat sheet: install, upgrade, services and BrewfileHomebrew cheat sheet: install and remove formulae and casks, update and upgrade, pin versions, run background services, clean up, and use a Brewfile file.errors · aptapt: Could not get lock /var/lib/dpkg/lock-frontendapt fails with Could not get lock /var/lib/dpkg/lock-frontend while another apt, dpkg or unattended-upgrades runs. Wait for it; never delete the lock.