Skip to content

2024-10

Windows subsystem for Linux 2 (WSL2)

Set up Windows subsystem for Linux 2 (WSL2) for Linux development experience in Windows 10 and 11.

Instal WSL2

Open powershell with administrator privilege, run the following command in the host.

wsl --install --no-distribution

or install the components manually

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

After reboot, install the Linux distribution

wsl --update
wsl --set-default-version 2
wsl --install -d Ubuntu  # Or another Linux distribution

WSL2 post-install (optional) setup

Backup/move the virtual disk

If you want to move the WSL virtual disk file to another disk (in this example, D:\), run the following commands in Windows12:

wsl --export Ubuntu .\Ubuntu\ext4.tar
wsl --unregister Ubuntu
wsl --import Ubuntu D:\Ubuntu\ .\Ubuntu\ext4.tar

Default login user

Edit /etc/wsl.conf in the WSL. You may need to set the default user if you have moved the virtual disk file of the WSL distribution.

/etc/wsl.conf
[user]
default=username

Host settings

Edit .wslconfig 3 in your Windows home directory (%USERPROFILE%).

For example,

.wslconfig
[wsl2]
memory=20GB              # How much memory to assign to the WSL2 VM.
swap=8GB                 # How much swap space to add to the WSL2 VM. 0 for no swap file.
swapfile=C:\\temp\\wsl-swap.vhdx # Sets swap file path location, default is %USERPROFILE%\AppData\Local\Temp\swap.vhdx. Useful if your C drive has limited disk space.

Auto reclaim RAM and disk space

Edit .wslconfig 3 in your Windows home directory (%USERPROFILE%). 4

.wslconfig
[experimental]
autoMemoryReclaim=gradual    # Reclaim RAM usage
sparseVhd=true               # Reclaim virtual disk (vhd) usage

Maintenance

Update kernel

To (manually) update the WSL kernel, run the following commands with administrator privileges:

wsl --shutdown
wsl --update

Reclaim virtual disk space

Optimize-VHD

Note

Optimize-VHD is not available in Windows Home edition.

To reclaim disk space from virtual hard disks (VHDs), run the following commands with administrator privileges 5:

wsl --shutdown
Optimize-VHD -Path %path-to.vhdx% -Mode Full
Export and re-import

Alternatively, export the VHD as a tar file and reimport it again.

Caveats about WSL2

Poor filesystem performance across OSes

Cross-OS file access (e.g., accessing /mnt/c in WSL) is at least one order of magnitude (10x) slower than accessing natively (/home/user/).6

Check battery status

Open Windows Powershell with Administrator rights and run:

powercfg /batteryreport /output "C:\battery-report.html"

See the report at C:\battery-report.html.

Windows Postinstall

Things to do after Windows install.

See also The Ultimate Windows Development Environment Guide

CTT Windows Utility

The Chris Titus Tech's Windows Utility provides APP installs, fixes and tweaks.

irm christitus.com/win | iex

Enable MS store and winget in Windows 10 LTSC 2021

Run the following command and ignore the error. MS store will be installed.

wsreset -i

Click Microsoft.DesktopAppInstaller to install winget.

Chocolatey package manager

Install Chocolatey 🍫, a command-line interface (CLI) package manager for Windows.

Open the powershell prompt with admin privilege (e.g. via the Windows + X menu):

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

Install packages

choco feature enable -n=useRememberedArgumentsForUpgrades
choco install -y git.install --params "'/NoShellIntegration'"

choco install -y vscode qbittorrent firefox brave telegram bandizip nanazip honeyview potplayer lavfilters yt-dlp ffmpeg crystaldiskinfo crystaldiskmark directx vcredist-all sudo starship obsidian nerd-fonts-firacode nerd-fonts-hack github-desktop
choco uninstall -n --skipautouninstaller vscode qbittorrent telegram github-desktop brave

See also the  🍫 Chocolatey package list for more packages.

Disable hibernation

Disabling hibernation saves a lot of disk space (No more C:\hiberfile.sys). Run this in powershell with admin rights:

powercfg -h off

Afterward