This document provides a professional DevOps-oriented setup guide for running Ubuntu 22.04 inside Windows using WSL2.
The goal of this guide is to create a clean, reproducible, optimized development environment suitable for:
- DevOps engineering
- Backend development
- Cloud tooling
- Containers and Kubernetes
- Infrastructure automation
The guide includes:
- WSL2 installation
- Ubuntu deployment
- systemd enablement
- performance tuning
- service optimization
- GUI support via WSLg
- backup and distribution management
- ⚡ Optimized WSL2 configuration
- 🖥 Linux GUI support via WSLg
- ⚙ systemd enabled environment
- 📦 Backup and distribution management
- 🛠 DevOps-ready development environment
- Documentation
- Quick Start
- Architecture Overview
- System Requirements
- Install WSL
- Install Ubuntu
- Import Ubuntu RootFS
- Update System
- Create Non-Root User
- Enable systemd
- Configure WSL2 Resources
- Disable Unnecessary Services
- Install GUI Applications
- Create GUI Launch Script
- Backup and Distribution Management
- Troubleshooting
- Contributing
- Security
For a quick installation guide, see:
Install WSL and Ubuntu quickly:
wsl --install -d Ubuntu
# restart Windows if prompted
wsl -d UbuntuUpdate the Ubuntu system:
sudo apt update && sudo apt upgrade -yEnable systemd support:
sudo nano /etc/wsl.confAdd the following configuration:
[boot]
systemd=trueRestart WSL to apply the changes:
wsl --shutdownWindows Host
│
├─ WSL2 Virtualization Layer
│
└─ Ubuntu 22.04 Environment
├─ systemd
├─ CLI Development Tools
├─ DevOps Tooling
└─ Linux GUI Apps (WSLg)
Minimum requirements:
- Windows 11 or Windows 10 with WSLg
- WSL2 support enabled
- Administrator PowerShell access
- Internet connectivity
Recommended for development workloads:
- 16 GB RAM
- 4+ CPU cores
- SSD storage
Open PowerShell as Administrator:
wsl --installRestart Windows after installation.
Verify installation:
wsl --status
wsl -l -vUpdate WSL:
wsl --updateSet WSL2 as default:
wsl --set-default-version 2Install Ubuntu distribution:
wsl --install -d UbuntuList installed distributions:
wsl -l -vLaunch Ubuntu:
wsl -d UbuntuDownload Ubuntu root filesystem:
https://cloud-images.ubuntu.com/wsl/jammy/current/
Import distribution manually:
wsl --import <DistroName> <InstallPath> <TarFile> --version 2Example:
wsl --import Ubuntu-Dev M:\WSL\Ubuntu-Dev ubuntu-jammy.rootfs.tar.gz --version 2Inside Ubuntu:
sudo apt update && sudo apt upgrade -ysudo adduser <username>
sudo usermod -aG sudo <username>Edit configuration file:
sudo nano /etc/wsl.confAdd the following:
[boot]
systemd=true
[user]
default=<username>Apply changes:
wsl --shutdownCreate or edit the following file on Windows:
C:\Users\<username>\.wslconfig
Example configuration:
[wsl2]
memory=8GB
processors=4
swap=2GB
localhostForwarding=trueApply configuration:
wsl --shutdownWSL environments do not require several background services. Disabling them reduces resource consumption.
Disable services:
sudo systemctl disable snapd
sudo systemctl disable bluetooth
sudo systemctl disable apport
sudo systemctl disable cupsStop services immediately:
sudo systemctl stop snapd bluetooth apport cupsInstall core graphical tools:
sudo apt install -y \
nautilus \
gnome-terminal \
gedit \
eog \
gnome-control-center \
xdg-user-dirsInitialize user directories:
xdg-user-dirs-updateDisable automount for virtual devices:
gsettings set org.gnome.desktop.media-handling automount false
gsettings set org.gnome.desktop.media-handling automount-open falseTest GUI:
nautilus ~Create user binary directory:
mkdir -p ~/binCreate script:
nano ~/bin/gui.shScript:
#!/bin/bash
dbus-run-session nautilus ~ >/dev/null 2>&1 &
dbus-run-session gnome-terminal >/dev/null 2>&1 &Make executable:
chmod +x ~/bin/gui.shRun:
gui.shecho 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrcVerify environment configuration:
lsb_release -a
uname -a
whoamiCreate directories:
mkdir M:\WSL\Ubuntu-Dev
mkdir M:\WSL\Ubuntu-ProdExport distribution:
wsl --export <DistroName> backup.tarImport distribution:
wsl --import <NewDistroName> <InstallPath> backup.tar --version 2Remove distribution:
wsl --unregister <DistroName>Shutdown WSL:
wsl --shutdownRestart WSL:
wsl --shutdownUpdate WSL:
wsl --updateList distributions:
wsl -l -vContributions are welcome.
If you would like to improve the documentation or add new features, please read the contribution guidelines:
If you discover a security issue, please follow the security policy described in:
This guide provides a clean, optimized DevOps-ready Ubuntu environment inside WSL2.
The setup enables:
- reproducible development environments
- lightweight Linux virtualization
- DevOps tooling support
- GUI Linux applications on Windows
This workflow is ideal for developers, DevOps engineers, and cloud infrastructure professionals.
