Windows Subsystem for Linux (WSL): perché è importante saperlo usare
Windows Subsystem for Linux (WSL) è una funzionalità di Windows 10 e 11 che permette di eseguire ambienti GNU/Linux senza bisogno di macchine virtuali o dual boot. Ideale per sviluppatori e utenti avanzati, offre interoperabilità tra Windows e Linux, accesso ai file system, supporto per applicazioni grafiche e integrazione con strumenti di sviluppo.

Un tempo pensare che Microsoft avrebbe supportato un’implementazione del kernel Linux nativa nel suo sistema operativo Windows sarebbe stata pura fantascienza. Eppure, Windows Subsystem for Linux (WSL, Sottosistema Windows per Linux in italiano) è una funzionalità introdotta già qualche anno fa in Windows 10 e Windows 11 che consente di eseguire un ambiente GNU/Linux direttamente all’interno del sistema operativo Microsoft, senza la necessità di utilizzare soluzioni per la virtualizzazione vere e proprie o impostare configurazioni dual boot.
Perché è importante usare Windows Subsystem for Linux (WSL)
La possibilità di installare ed eseguire le principali distribuzioni Linux da una finestra Windows, rappresenta un’opportunità davvero ghiotta per un’ampia schiera di utenti. Windows Subsystem for Linux è ideale per sviluppatori che lavorano su progetti Web od open source che presuppongono l’utilizzo di strumenti Linux. Con WSL si possono configurare veri e propri ambienti di lavoro in una mini-macchina virtuale basata sul kernel del pinguino, beneficiando dell’intera offerta software Linux non nativamente disponibile su Windows.
Uno dei principali vantaggi di Windows Subsystem for Linux, è che utilizza meno risorse (CPU, memoria) ed è più veloce nell’esecuzione dei processi rispetto alle macchine virtuali tradizionali.
Inoltre, WSL nasce per facilitare l’integrazione tra sistemi operativi ed applicazioni Windows e Linux. Una prova? Dopo aver installato Windows Subsystem for Linux, basta premere Windows+R
quindi digitare \\WSL$
o cliccare su Linux nel riquadro di spostamento di Esplora file (Windows+E
) per leggere e scrivere file in qualunque macchina Linux! Tant’è vero che in un altro articolo abbiamo spiegato come WSL sia un’alternativa a utilità come DiskInternals per la lettura di partizioni ext.
Allo stesso modo, se provate a digitare il comando ls /mnt/c
da una macchina Linux caricata con WSL, potete accedere in lettura e scrittura all’intero contenuto dell’unità C: di Windows.
Come si presenta Windows Subsystem for Linux in Windows 10 e 11
Windows Subsystem for Linux è una funzionalità opzionale, che può essere installata su richiesta utilizzando la finestra del terminale o prompt dei comandi.
Come abbiamo spiegato nell’articolo su come eseguire Linux in Windows, al quale vi inviamo per tutti gli approfondimenti, suggeriamo di digitare il comando seguente per ottenere una lista delle distribuzioni Linux installabili in Windows:
wsl -l -o
Per procedere con l’installazione di WSL e di una specifica distribuzione, basta digitare il comando seguente. Ad esempio, per abilitare WSL e – allo stesso tempo – installare Ubuntu 24.04 LTS (Long Term Support), basta impartire quanto segue:
wsl --install -d Ubuntu-24.04
Per assegnare un nome ben preciso alla distribuzione (ad esempio se sulla macchina Windows fosse già installata, con WSL, un’altra istanza di Ubuntu 24.04 LTS):
wsl --install -d Ubuntu-24.04 --name TEST
Nell’esempio, abbiamo chiamato TEST
la macchina virtuale Ubuntu-24-04 aggiunta con WSL per ricordarci che si tratta dell’installazione che usiamo per fare test ed esperimenti con Linux.
I riferimenti ai nomi delle macchine Linux installate con WSL, si trovano direttamente nel menu Start di Windows 10 o di Windows 11.
Al primo avvio della distribuzione Linux, WSL chiede di impostare un nome e una password per l’account root, dotati dei privilegi amministrativi più ampi.
Interfaccia testuale ma possibilità di eseguire applicazioni grafiche
Windows Subsystem for Linux nasce come uno strumento col quale si interagisce prevalentemente da interfaccia testuale, usando la finestra del terminale di Windows.
A seconda della distribuzione installata, utilizzando la sintassi prevista del package manager integrato nella distro Linux stessa, si può chiedere l’aggiornamento dei software e dei componenti già presenti. Su Ubuntu, ad esempio, si può procedere con il classico comando:
sudo apt update && sudo apt upgrade -y
Come abbiamo spiegato nell’articolo su come eseguire programmi Linux su Windows con interfaccia grafica (GUI), Windows Subsystem for Linux – grazie a WSLg – permette di avviare anche le applicazioni grafiche. Se digitate quanto segue in un’installazione di Ubuntu caricato con WSL, potete ad esempio avviare il celeberrimo editor dotato di interfaccia grafica gedit:
sudo apt install gedit -y
gedit
L’icona di gedit, come di qualunque altro programma Linux dotato di interfaccia grafica, appare nella barra degli indirizzi di Windows e può essere addirittura aggiunta al menu Start, al desktop o inserita in qualunque altra posizione di memoria.
Aggiornamento di Windows Subsystem for Linux
Importante, dopo aver installato Windows Subsystem for Linux e periodicamente, è verificare la presenza di eventuali aggiornamenti. Per procedere in tal senso, basta aprire una finestra del terminale in Windows e digitare il semplice comando seguente:
wsl --update
La finestra di benvenuto di WSL e il blog Windows Command Line di Microsoft riportano le ultime novità aggiunte dagli sviluppatori. Con il comando seguente, si può verificare la versione di WSL installata (confrontatela con quella riportata nel repository GitHub ufficiale):
wsl -v
L’importante, è verificare che il comando wsl -l -v
(che mostra la lista delle distribuzioni installate in WSL) indichi sempre “2” al di sotto della colonna Version:
La distribuzione indicata con l’asterisco è quella predefinita; la colonna State indica quali machine virtuali sono in esecuzione e quali risultano arrestate.
Pronti per usare Linux in modo produttivo con Windows Subsystem for Linux!
Una volta installata una distribuzione Linux con Windows Subsystem for Linux, si possono eseguire in una finestra Windows tutti i software disponibili sul pinguino. Facendoli eventualmente interagire con il sistema Windows sottostante o con altri host (remoti o connessi in rete locale).
Windows Subsystem for Linux è essenziale per chi desidera combinare la potenza degli strumenti Linux con la comodità dell’ambiente Windows. WSL offre un modo leggero ed efficiente per eseguire software Linux senza il sovraccarico delle macchine virtuali tradizionali o la scomodità del dual boot.
Cosa si può fare con WSL
WSL offre una vasta gamma di funzionalità utili per sviluppatori e utenti avanzati:
- Sviluppo software. Creazione e testing di applicazioni Linux direttamente su Windows. Uso di Docker per la containerizzazione senza necessità di macchine virtuali pesanti.
- Gestione di file system. Accesso ai file system Windows (/mnt/c) da Linux e viceversa. Montaggio automatico dei dischi Windows con opzioni configurabili tramite file
/etc/wsl.conf
. - Interoperabilità tra Windows e Linux: Richiamare applicazioni Windows da Linux usando la shell (
explorer.exe
). Eseguire script Bash che integrano strumenti sia Linux che Windows. - Machine Learning e GPU computing: Utilizzo della GPU del dispositivo per accelerare carichi di lavoro in Python o TensorFlow direttamente su WSL.
- Networking avanzato: Configurazione personalizzata della rete tra Windows e Linux. Uso di strumenti di analisi della rete disponibili in distribuzioni specializzate.
- Automazione e scripting: Creazione di script Bash per automatizzare attività complesse. Uso di cron job per pianificare operazioni periodiche.
- Test di sicurezza informatica: Utilizzo delle distribuzioni Kali Linux o Parrot OS per attività di penetration testing.
Cosa si può installare nelle distribuzioni Linux su WSL
Una volta installata una distribuzione in Windows Subsystem for Linux, è possibile caricare (usando i package manager disponibili):
- Software e strumenti da riga di comando: Utilità GNU/Linux come bash, grep, sed, awk.
- Editor di testo e strumenti di sviluppo come vim, nano, emacs.
- Linguaggi di programmazione come Python, Ruby, Node.js, Go, Rust, C/C++, JavaScript.
- Ambienti di sviluppo e runtime come pip per Python o npm per Node.js.
- Servizi e database: Server web e applicazioni come Apache, Nginx.
- Database come MySQL, PostgreSQL, MongoDB.
- Servizi SSHD per connessioni remote.
- Applicazioni grafiche: Come visto in precedenza, WSL supporta l’esecuzione di applicazioni grafiche Linux (GUI) direttamente su Windows.
- Strumenti per la sicurezza informatica: Distribuzioni come Kali Linux includono strumenti preinstallati per penetration testing e analisi della sicurezza (che possono comunque essere installati manualmente sulle altre distro…).
Gestione delle interfacce di rete in Windows Subsystem for Linux
La gestione delle interfacce di rete in Windows Subsystem for Linux è un aspetto fondamentale per la comunicazione tra il sistema operativo host (Windows) e le distribuzioni Linux eseguite come macchine virtuali.
Per impostazione predefinita, le macchine Linux sono configurate in modalità NAT quindi le comunicazioni di rete possono avvenire verso la rete Internet oltre che da e fra il sottostante sistema Windows host.
Potete verificarlo con ifconfig
dopo aver eventualmente installato il tool con il comando sudo apt install net-tools
(in Debian, Ubuntu e derivate):
Come si vede nell’immagine, le macchine Windows Subsystem for Linux si trovano in una rete privata accessibile dal sistema operativo Windows host ma non dagli altri IP della LAN vera e propria.
Provate a digitare nano hello.py quindi a incollare (tasto destro del mouse) quanto segue:
from http.server import SimpleHTTPRequestHandler, HTTPServer class MyHandler(SimpleHTTPRequestHandler): def do_GET(self): self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers() self.wfile.write(b"Hello, World!
") server_address = ("", 8080) # Ascolta sulla porta 8080 httpd = HTTPServer(server_address, MyHandler) print("Server in esecuzione su http://localhost:8080") httpd.serve_forever()
Il codice Python che proponiamo non fa altro che attiva un server HTTP che risponde sulla porta TCP 8080 e che risponde a ogni richiesta con una pagina Web contenente il messaggio Hello World.
Provate ad aprire il browser Web sul sistema Windows e digitate localhost:8080
nella barra degli indirizzi: vi risponderà il server HTTP Python con il messaggio Hello World. Se pensate che questo può essere fatto con qualunque applicazione Web, comprenderete immediatamente quali siano le potenzialità di Windows Subsystem for Linux. Bello, vero?
Interfaccia di rete mirrored: a cosa serve
La modalità di rete mirrored in Windows Subsystem for Linux è una configurazione avanzata che consente di migliorare la compatibilità di rete tra il sistema host Windows e le distribuzioni Linux eseguite in WSL.
Può essere usata in sostituzione della configurazione NAT, predefinita in WSL. La modalità mirrored replica infatti le interfacce di rete disponibili su Windows direttamente nella distribuzione Linux. Consente l’uso di IPv6, migliorando la compatibilità con reti moderne e applicazioni che richiedono il supporto di questo protocollo; è possibile utilizzare il multicast per applicazioni o servizi che richiedono comunicazioni di gruppo, come streaming video o protocolli specifici; migliora l’interazione con le VPN configurate su Windows, consentendo alle distribuzioni Linux di sfruttare direttamente la connessione VPN senza configurazioni aggiuntive.
L’aspetto forse più importante, però, è che con l’uso della modalità mirrored le distribuzioni Linux di WSL diventano parte integrante della rete locale, condividendo lo stesso indirizzo IP del sistema Windows host. Questo permette di accedere ai servizi eseguiti su WSL da altri dispositivi nella LAN e alle macchine WSL di accedere ai sistemi fisici e virtuali collegati in rete locale.
È comunque possibile collegarsi ai server Windows eventualmente in esecuzione sulla macchina host utilizzando localhost
(127.0.0.1).
Digitando WSL Settings nel menu Start di Windows e cliccando su Reti, è possibile impostare su Mirrored il menu a tendina Modalità di rete. In questo modo la modalità Mirrored viene applicata per tutte le macchine in esecuzione in WSL.
Il file di configurazione di Windows Subsystem for Linux
Agendo sull’impostazione Modalità di rete come sulle altre opzioni contenute nella finestra WSL Settings, quest’ultima crea un file di configurazione per WSL chiamato .wslconfig
e posizionato nella cartella del profilo utente correntemente in uso (%userprofile%
). Per accedere rapidamente a tale file, potete infatti premere Windows+R
quindi scrivere %userprofile%\.wslconfig
e premere Invio.
Il file può essere anche modificato manualmente, come spiegato nell’articolo sulle opzioni di configurazione avanzate di WSL.
Dopo ogni modifica, direttamente sul file oppure tramite la finestra WSL Settings, è necessario chiudere e riavviare le macchine Linux in modo da applicare le modifiche. È possibile farlo da riga di comando digitando quanto segue:
wsl --shutdown
Digitando il comando ifconfig
nella finestra della macchina WSL, l’IP privato che si legge corrisponde a quello della macchina host, diversamente dal caso visto in precedenza.
Adesso, se provate a riavviare lo script Python presentato in precedenza (python3 hello.py
) quindi a digitare l’IP privato del sistema Windows host nella barra degli indirizzi di un altro dispositivo collegato in rete locale, dovreste ottenere il messaggio Hello World.
Se ciò non avvenisse, dopo aver attivato la modalità mirrored di WSL e verificato che l’opzione Firewall Hyper-V abilitato sia attiva, si può creare una regola dedicata in Windows Firewall:
netsh advfirewall firewall add rule name="Consenti LAN" dir=in action=allow remoteip=192.168.1.0/24
A 192.168.1.0
va sostituito l’intervallo IP utilizzato nell’ambito della propria rete locale; 24
va specificato se la subnet mask è 255.255.255.0
(se fosse 255.255.0.0
, ad esempio, va indicato 16
). In Windows fate sempre riferimento all’output del comando ipconfig /all
.
Clonare repository GitHub
Se si avesse la necessità di fare esperimenti in locale con il contenuto di un repository GitHub, è possibile clonarlo molto semplicemente su Linux usando il comando seguente nella distro installata con WSL:
git clone URL_REPOSITORY.git
Al posto di URL_REPOSITORY
, va semplicemente incollato l’URL del repository che si desidera clonare in locale.
Conclusioni
Windows Subsystem for Linux (WSL) rappresenta una soluzione potente e versatile che consente agli utenti di integrare perfettamente l’ambiente Linux all’interno di Windows.
Grazie alla sua leggerezza e all’efficienza nell’utilizzo delle risorse, WSL si presenta come uno strumento ideale per sviluppatori e professionisti che desiderano sfruttare le potenzialità di Linux senza dover ricorrere a soluzioni di virtualizzazione pesanti o configurazioni dual boot.
Con il supporto per applicazioni grafiche tramite WSLg e le sue numerose funzionalità avanzate, come l’integrazione dei file system e l’uso di strumenti di sviluppo, WSL apre possibilità infinite per la produttività e l’innovazione.
La continua evoluzione di Windows Subsystem for Linux rende sempre più facile e conveniente lavorare in ambienti misti, confermando la sua importanza crescente nel panorama delle tecnologie per il software e lo sviluppo.