WSL2 Windows: subsystem Linux

WSL2 (Windows Subsystem for Linux 2) è la tecnologia Microsoft che permette di eseguire una distribuzione Linux completa direttamente in Windows 10 e Windows 11. Rispetto al precedente WSL1, gira su una vera macchina virtuale leggera basata su Hyper-V con kernel Linux reale compilato da Microsoft, offrendo compatibilità praticamente totale con tool e syscall Linux. È diventato lo strumento standard per sviluppatori che lavorano su Windows ma necessitano ambiente Linux per backend (Node.js, Python, Ruby, Go, PHP), container Docker, scripting shell, strumenti unix come grep/awk/sed/find/rsync/ssh. Microsoft ha investito molto in WSL e oggi è una soluzione professionale, non più solo "giocattolo per developer".

Installazione su Windows 11

Su Windows 11 e Windows 10 (build 2004+) l'installazione è semplificata. Apri PowerShell come amministratore ed esegui wsl --install: il comando abilita le feature necessarie (Virtual Machine Platform, Windows Subsystem for Linux), installa il kernel WSL2 e scarica Ubuntu di default. Riavvia il PC. Al primo avvio di Ubuntu da menu Start ti viene chiesto di creare l'utente Linux con password (separato da utente Windows).

Per installare distribuzioni alternative: wsl --list --online mostra l'elenco delle distro disponibili dal Microsoft Store (Ubuntu 22.04, 24.04, Debian, Kali Linux, Oracle Linux, openSUSE Leap, openSUSE Tumbleweed, SUSE Linux Enterprise Server, Alpine WSL, Pengwin, Pengwin Enterprise). Installazione di una distro specifica: wsl --install -d Debian o wsl --install -d kali-linux. Si possono installare più distro contemporanee, ognuna isolata con suo filesystem.

WSL1 vs WSL2: differenze tecniche

WSL1 (rilasciato 2016) traduceva syscall Linux in equivalenti Win32: niente kernel Linux reale, niente VM. Vantaggio: I/O su filesystem Windows (NTFS via /mnt/c) molto veloce, footprint memoria minimo. Svantaggio: compatibilità incompleta (alcuni programmi che facevano syscall esotici non funzionavano, no Docker, no syscall ioctl complete).

WSL2 (rilasciato 2020) usa kernel Linux reale (5.15.x mantenuto da Microsoft) in una VM leggera Hyper-V con boot tempo <2 secondi. Vantaggio: compatibilità totale (Docker funziona nativo, syscall complete, ottime performance I/O su filesystem Linux ext4 dentro la VM). Svantaggio: accesso ai file Windows da /mnt/c è più lento (overhead 9P protocol). Quasi sempre meglio WSL2; WSL1 solo per casi specifici dove serve massima velocità I/O cross-filesystem (raro). Migrare distro da WSL1 a WSL2: wsl --set-version Ubuntu 2.

Casi d'uso: sviluppo web e tool unix

WSL2 è ideale per: sviluppo web con stack Linux identico a server di produzione (Node.js, Python, Ruby on Rails, Laravel PHP, Go, Rust). Si installa LTS Ubuntu o Debian, ci si configura ambiente con nvm/pyenv/rbenv/sdkman, si lavora come si farebbe su un server Linux puro. Hot reload, watcher, file system events funzionano correttamente in WSL2.

Docker Desktop per Windows usa WSL2 come backend Linux per i container: integrazione perfetta, performance native. Bash scripting completo (script .sh con shebang, cron interno via systemd in WSL2 recente, jobs). Uso di strumenti unix per file processing: grep, awk, sed, find, xargs, jq, rsync. Strumenti sysadmin: ssh, scp, rsync verso server remoti con configurazione ~/.ssh/config. Strumenti DevOps: ansible, terraform, kubectl, helm, aws-cli, gcloud-cli.

Integrazione con VS Code

L'estensione "WSL" di VS Code (Microsoft ufficiale) è un game-changer: apri una cartella all'interno della home WSL e VS Code lavora come se fosse installato dentro Linux. Il server VS Code gira in WSL (terminale integrato, debugger, lint, formatter, package manager), il client GUI gira in Windows. Tutto trasparente: hot reload del codice in dev server WSL si vede sul browser Windows tramite localhost (port forwarding automatico).

Workflow di sviluppo eccellente: codice e dipendenze in WSL (Linux), editor su Windows (UI nativa veloce), browser su Windows (Chrome/Edge/Firefox), database in container Docker dentro WSL2. Performance ottime perché tutto vive nel filesystem ext4 di Linux, non in NTFS attraverso /mnt/c. Le estensioni VS Code che servono per il linguaggio (Python, ESLint, GoLang) si installano in WSL automaticamente al primo uso.

Gestione e configurazione avanzata

Comandi essenziali: wsl --list -v elenca distro e versione (1 o 2), wsl --shutdown termina tutte le distro (utile per liberare RAM), wsl --terminate Ubuntu termina una specifica, wsl --export Ubuntu backup.tar esporta backup completo del filesystem, wsl --import NewDistro C:\wsl\NewDistro backup.tar reimporta backup come distro nuova. Le distro vivono come file .vhdx in %LOCALAPPDATA%\Packages\: si possono spostare su altro disco con export/import.

File .wslconfig in %USERPROFILE% per configurare comportamento globale WSL2: limite RAM (memory=8GB), limite CPU (processors=4), swap, networking mode (NAT default, mirrored per port forwarding migliore in Windows 11 22H2+), DNS tunneling, autoProxy. Riduzione RAM utilizzata: WSL2 di default può prendere fino al 50% RAM disponibile; limite manuale evita che consumi tutta la RAM su laptop modesti.

GUI app, GPU e systemd

WSL2 supporta GUI Linux app via WSLg (incluso da Windows 11 e Win10 recent): puoi lanciare nautilus, gedit, gimp, libreoffice da terminale WSL e si aprono come finestre native Windows. Implementato via Wayland compositor che fa relay a RDP server interno + WSLg client Windows. Utile per testare app GUI Linux senza VM completa.

GPU passthrough via DirectX 12 abstraction: WSL2 può sfruttare GPU NVIDIA/AMD per workload CUDA, ROCm, OpenCL, Vulkan compute. Particolarmente usato per ML/AI: TensorFlow, PyTorch con CUDA dentro WSL2 funzionano (alternativa a setup Linux dual-boot). Performance simili a Linux nativo per la maggior parte dei task. Systemd è supportato dal 2022: systemctl funziona, servizi come postgresql, redis, snap si avviano. Abilitare in /etc/wsl.conf con [boot]\nsystemd=true.

Backup, sicurezza e best practice

Backup periodico: wsl --export Ubuntu C:\backup\ubuntu-$(date).tar esporta filesystem in tar (uncompressed). Per backup compressi, exportare poi gzip. Combinare in script Powershell schedulato. Considera anche backup di /home/user/projects via Git o sync verso cloud per repository di lavoro.

Sicurezza: la VM WSL2 condivide rete con host Windows (NAT). Servizi in WSL ascoltano su localhost: non esposti a rete esterna a meno di port forwarding esplicito. Firewall Windows applicato. Updates Linux regolari: sudo apt update && sudo apt upgrade settimanale. Kernel WSL aggiornato via Windows Update. Per produzione: WSL non sostituisce server Linux dedicato. È ambiente di sviluppo locale eccellente, non target di deployment.

Hai bisogno di aiuto?

Se vuoi consulenza software dal team di G Tech Group, scrivici tramite il modulo di contatto.

Hai trovato utile quest'articolo?

  • Guida Completa a Vlc Media Player

    Guida Completa a VLC Media Player Introduzione VLC Media Player è un lettore multimediale gratuito e...
  • Guida Completa a Pidgin

    Guida Completa a Pidgin Introduzione Pidgin è un client di messaggistica istantanea che ti permette ...
  • Guida Completa a Discord

    Guida Completa a Discord Discord è una piattaforma di comunicazione progettata per creare comunità o...
  • Guida Completa a Zoom

    Guida Completa a Zoom Zoom è un'applicazione di videoconferenza che consente di effettuare riunioni ...
  • Che cosa è GIMP?

    Che cosa è GIMP? GIMP, che sta per GNU Image Manipulation Program, è un software di manipolazione di...