Linux - Windows

Installare e utilizzare WSL – Windows Subsystem for Linux

Negli ultimi anni, Microsoft ha compiuto un cambio di rotta significativo nei confronti del mondo open source ed uno degli strumenti più emblematici di questa trasformazione è WSL (Windows Subsystem for Linux), una funzionalità integrata in Windows che consente di eseguire un ambiente Linux direttamente all’interno del sistema operativo Microsoft, senza ricorrere a macchine virtuali o dual boot.

Cos’è WSL

WSL (Windows Subsystem for Linux) è un sottosistema sviluppato da Microsoft che permette di eseguire binari Linux nativi su Windows. In termini pratici, significa poter aprire un terminale Bash, eseguire script shell, usare strumenti come grep, awk, curl, git e persino compilare ed eseguire applicazioni Linux, il tutto senza uscire dall’ambiente Windows.

Esistono due versioni principali:

  • WSL 1: traduce le chiamate di sistema Linux in chiamate Windows tramite un layer di compatibilità, più leggero ma con alcune limitazioni di compatibilità
  • WSL 2: Introduce un vero kernel Linux in esecuzione su una macchina virtuale (Hyper-V). Garantisce compatibilità completa con le syscall Linux, prestazioni I/O nettamente superiori e supporto a Docker nativo

Per la maggior parte degli utilizzi odierni, WSL 2 è la scelta raccomandata.

Perché usare WSL

WSL è diventato uno strumento fondamentale per diverse categorie di utenti:

  • Sviluppatori web e backend che lavorano con stack Linux (Node.js, Python, Ruby, PHP) e necessitano di un ambiente coerente con i server di produzione
  • DevOps e SysAdmin che devono gestire script Bash, strumenti come ansible, terraform o kubectl direttamente da Windows
  • Data Scientist che utilizzano librerie Python o R ottimizzate per ambienti Linux
  • Studenti e appassionati che vogliono imparare Linux senza abbandonare Windows

Rispetto alle alternative tradizionali, WSL offre vantaggi concreti. Il dual boot garantisce prestazioni native, ma risulta scomodo da gestire nella pratica quotidiana. Le macchine virtuali offrono un isolamento completo dell’ambiente, ma comportano un consumo significativo di risorse hardware. WSL 2, invece, combina leggerezza, integrazione nativa con Windows e prestazioni elevate, rappresentando nella maggior parte dei casi la soluzione più equilibrata.

Installazione

Su Windows 10 (build 19041 e successive) e Windows 11, l’installazione è un singolo comando eseguito in PowerShell con privilegi di amministratore:

wsl --install

# Output atteso
Download in corso: Sottosistema Windows per Linux 2.7.8
Installazione in corso: Sottosistema Windows per Linux 2.7.8
Sottosistema Windows per Linux 2.7.8 è stato installato.
Installazione del componente facoltativo di Windows: VirtualMachinePlatform

Strumento Gestione e manutenzione immagini distribuzione
Versione: 10.0.26100.8521

Versione immagine: 10.0.26200.8655

Attivazione funzionalità
[==========================100.0%==========================]
Operazione completata.
L'operazione richiesta è stata eseguita. Le modifiche avranno effetto al riavvio del sistema.

Il comando abilita il componente WSL e attiva la piattaforma di virtualizzazione necessaria per WSL 2. Al termine viene richiesto un riavvio e successivamente possiamo verificarne lo stato con

wsl --list --verbose

# Output atteso
sottosistema Windows per Linux non ha distribuzioni installate.
Per risolvere il problema, installare una distribuzione con le istruzioni seguenti:

Usare 'wsl.exe --list --online' per elencare le distribuzioni disponibili
e 'wsl.exe --install <Distro>' per l'installazione.

Se non risulta nessuna distribuzione installata, possiamo verificare le distribuzioni disponibili con il comando

wsl --list --online

# Output atteso
Di seguito è riportato un elenco di distribuzioni valide che è possibile installare.
Installare con 'wsl.exe --install <Distro>'.

NAME                            FRIENDLY NAME
Ubuntu                          Ubuntu
Ubuntu-26.04                    Ubuntu 26.04 LTS
Ubuntu-24.04                    Ubuntu 24.04 LTS
Ubuntu-22.04                    Ubuntu 22.04 LTS
openSUSE-Tumbleweed             openSUSE Tumbleweed
openSUSE-Leap-16.0              openSUSE Leap 16.0
SUSE-Linux-Enterprise-15-SP7    SUSE Linux Enterprise 15 SP7
SUSE-Linux-Enterprise-16.0      SUSE Linux Enterprise 16.0
kali-linux                      Kali Linux Rolling
Debian                          Debian GNU/Linux
AlmaLinux-8                     AlmaLinux OS 8
AlmaLinux-9                     AlmaLinux OS 9
AlmaLinux-Kitten-10             AlmaLinux OS Kitten 10
AlmaLinux-10                    AlmaLinux OS 10
archlinux                       Arch Linux
FedoraLinux-44                  Fedora Linux 44
FedoraLinux-43                  Fedora Linux 43
eLxr                            eLxr 12.12.0.0 GNU/Linux
OracleLinux_7_9                 Oracle Linux 7.9
OracleLinux_8_10                Oracle Linux 8.10
OracleLinux_9_5                 Oracle Linux 9.5
SUSE-Linux-Enterprise-15-SP6    SUSE Linux Enterprise 15 SP6

Scelta la distribuzione che si vuole utilizzare è sufficiente digitare il comando passando il valore della colonna “NAME” corrispondente. Supponendo di vole installare Kali Linux il comando è

wsl --install -d kali-linux

# Output atteso
Download in corso: Kali Linux Rolling
Installazione: Kali Linux Rolling
Installazione della distribuzione completata. Può essere avviato tramite 'wsl.exe -d kali-linux'
Avvio di kali-linux in corso...
Waiting for systemd to start...
running
Please create a default Kali WSL user. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: carlo
New password:
Retype new password:
passwd: password updated successfully
usermod: no changes
┌──(carlo㉿PCWIN001)-[/mnt/c/Users/carlo]

Al primo avvio della distribuzione, viene richiesto di creare un nome utente e una password per l’account Linux, indipendenti dalle credenziali Windows.

Gestione delle distribuzioni

Completata l’installazione è possibile gestire le distribuzioni WSL dal terminale. Il comando wsl –list –verbose mostra lo stato di tutte le distribuzioni installate con la versione WSL associata e indica quelle attualmente in esecuzione

wsl --list --verbose

# Output atteso
  NAME          STATE           VERSION
* kali-linux    Running         2

Per avviare una distribuzione specifica o impostarne una come predefinita (utile per eseguire wsl senza argomenti) possiamo usare i comandi seguenti

# Avvio di una distribuzione
wsl -d kali-linux

# Imposta la distribuzione come predefinita
wsl --set-default kali-linux

Se si vuole fermare tutte le istanze in esecuzione e la macchina virtuale sottostante, utile per liberare memoria o applicare modifiche alla configurazione

wsl --shutdown

Se invece si vuole spegnere solo una distribuzione

wsl --terminate kali-linux

Dopo aver installato la distribuzione scelta è buona pratica effettuare l’aggiornamento del sistema. Per Kali Linux il comando è

sudo apt update && sudo apt full-upgrade -y

Infine, le distribuzioni possono essere esportate come archivi tar per backup o migrazione su un altro PC, e reimportate in seguito

wsl --export kali-linux C:\backup\kali-linux.tar
wsl --import kali-linux C:\WSL\kali-linux C:\backup\kali-linux.tar

Navigare nel filesystem

In WSL è possibile accedere ai file di Windows attraverso il percorso /mnt/

ls -lha /mnt/c/"Program Files"/

Viceversa, da Windows Explorer è possibile accedere ai file Linux digitando nella barra degli indirizzi

\\wsl$\kali-linux

Per ottenere le migliori prestazioni, conviene lavorare sui file all’interno del filesystem Linux in quanto le operazioni I/O attraverso il mount /mnt/c/ incrociano due filesystem e risultano significativamente più lente.

Gestione della rete

WSL 2 dispone di un proprio indirizzo IP, separato da quello del PC Windows ed i due ambienti si trovano su una rete virtuale interna gestita tramite un’interfaccia Hyper-V. Verso l’esterno, WSL 2 si presenta con l’indirizzo IP del PC Windows grazie al NAT

WSL 2 (172.20.10.100) → NAT → Windows (192.168.0.100) → Destinazione

Questo aspetto ha implicazioni pratiche rilevanti. Le regole firewall sui server remoti vanno configurate con l’IP Windows, e i log di accesso registreranno sempre l’IP del PC Windows, non quello interno di WSL.

Per recuperare l’indirizzo IP assegnato ad una distribuzione WSL

ip addr show eth0 | grep "inet "

Il comando può variare in base alla distribuzione linux scelta.

Chiamare comandi Linux da PowerShell

Una delle funzionalità più distintive di WSL è la possibilità di richiamare comandi Linux direttamente da una sessione PowerShell, senza aprire un terminale separato. Il prefisso wsl passa il comando alla distribuzione predefinita e restituisce l’output in PowerShell e la directory di lavoro corrente in Windows viene automaticamente mappata al percorso equivalente in WSL.

# Cercare una stringa ricorsivamente nei file della cartella corrente
wsl grep -r "Error" .

# Usare awk per estrarre una colonna da un file di testo
wsl awk '{print $2}' report.txt

# Visualizzare i file ordinati per dimensione
wsl ls -lhS /mnt/c/Windows/

È possibile anche costruire pipeline che attraversano i due ambienti: PowerShell produce l’output e WSL lo elabora con strumenti Linux, o viceversa.

# Filtrare l'output di un comando PowerShell con grep
Get-Content C:\log\app.log | wsl grep -i "ERROR"

# Contare le occorrenze con sort e uniq
Get-Content C:\log\app.log | wsl grep "Error" | wsl sort | wsl uniq -c

Questo approccio è utile in contesti dove si vuole sfruttare la potenza degli strumenti Unix su file e output Windows senza abbandonare PowerShell come shell principale.

Eseguire servizi locali in WSL

WSL 2 espone automaticamente le porte aperte dai servizi Linux su localhost di Windows. Un server avviato in WSL è immediatamente raggiungibile dal browser Windows, da Postman o da qualsiasi altro client senza configurazioni aggiuntive.

Questo rende WSL un ambiente di sviluppo locale completo: invece di installare nginx, PostgreSQL o Node.js direttamente su Windows, si installano nella distribuzione Linux e si accede ai servizi da Windows come se fossero in esecuzione localmente.

# Avviare un server web nginx in WSL
sudo apt install nginx
sudo service nginx start

Aprendo http://localhost nel browser Windows si vedrà la pagina di benvenuto di nginx servita da WSL. Lo stesso vale per qualsiasi altra porta

# Avviare un server Python sulla porta 8080
python3 -m http.server 8080

# Output atteso
Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...
127.0.0.1 - - [21/Jun/2026 13:22:27] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [21/Jun/2026 13:22:32] "GET /Test.txt HTTP/1.1" 200 -

In questo caso il servizio è raggiungibile da Windows all’indirizzo http://localhost:8080. Il forwarding automatico delle porte è gestito da WSL 2 tramite l’interfaccia virtuale Hyper-V e non richiede nessuna configurazione manuale.