Si parla sempre più spesso di Windows Subsystem for Linux (WSL), la soluzione software integrata in Windows 10 e Windows 11 che permette di eseguire Linux in Windows avviando le applicazioni anche con interfaccia grafica.
Con l’introduzione, da parte di Microsoft, del componente chiamato WSLg è infatti possibile eseguire programmi Linux in Windows con interfaccia grafica richiamandoli dal menu Start, dal desktop, dalla barra delle applicazioni del sistema operativo o da qualunque altra locazione di memoria.
Cos’è Windows Subsystem for Linux o WSL
Microsoft ha rilasciato nel tempo due versioni di WSL: la prima, presentata ad agosto 2016 per gli utenti di Windows 10, era un layer di compatibilità.
Inizialmente permetteva soltanto il caricamento da una finestra del terminale una bash di Ubuntu e SUSE. Il layer di compatibilità di WSL traduceva le chiamate inviate dall’installazione di Linux in chiamate di sistema che potevano essere gestite dal kernel di Windows. Un approccio del genere soffriva di diversi limiti, sia in termini di prestazioni che di compatibilità (ad esempio non era possibile usare un gran numero di comandi e programmi Linux).
A maggio 2019 Microsoft ha presentato WSL2, seconda versione del componente, che ha abbandonato il layer di compatibilità in favore dell’utilizzo di un vero kernel Linux e di un sottoinsieme di funzionalità della piattaforma per la virtualizzazione Hyper-V.
I benefici apparvero immediatamente tangibili: gli utenti possono oggi sfruttare delle prestazioni velocistiche di primo livello che sa assicurare Hyper-V grazie anche al supporto delle estensioni per la virtualizzazione attivabili lato BIOS: premere CTRL+MAIUSC+ESC
per aprire il Task Manager, fare clic su Più dettagli, sulla scheda Prestazioni e infine controllare che accanto alla voce Virtualizzazione compaia Abilitato.
WSL2 è disponibile sia in Windows 10 che in Windows 11, in tutte le edizioni del sistema operativo, compresa la Home.
Differenze tra Windows Subsystem for Linux e Hyper-V
Perché Microsoft ha deciso di inserire in Windows due strumenti che, seppur con approcci diversi, utilizzano la virtualizzazione?
Innanzi tutto la prima differenza: se Windows Subsystem for Linux è disponibile in tutte le edizioni di Windows 10 e 11, Hyper-V non risulta installabile sulle edizioni Home dei due sistemi operativi. Almeno in via non ufficiale perché abbiamo visto come installare Hyper-V in Windows 10 e 11 Home.
WSL2 viene configurato ed eseguito in Windows 10 e 11 come macchina virtuale utilizzando alcune delle caratteristiche base di Hyper-V. Ma non è Hyper-V.
Utilizzando lo stesso hypervisor, il componente centrale e più importante di un sistema per la virtualizzazione, WSL2 e Hyper-V possono coesistere senza alcun problema sulla stessa macchina Windows.
Diversamente rispetto ad Hyper-V, tuttavia, WSL2 non è una piattaforma per la virtualizzazione: Hyper-V, di contro, permette agli utenti di creare e personalizzare le caratteristiche di ogni singola macchina virtuale.
WSL2 rende semplice eseguire comandi Linux in Windows e di base non permette il caricamento del desktop environment usato dalle varie distribuzioni, ad esempio GNOME.
Le macchine virtuali WSL2 sono strettamente legate al sistema operativo in uso: basti pensare che premendo Windows+R
quindi digitando \\WSL$
si accede al file system utilizzato dalla distribuzione Linux che si è scelto di installare.
WSL permette inoltre di montare le unità Windows locali in modo automatico all’interno di qualunque istanza Linux e consente di usare le funzionalità per l’accelerazione hardware lato GPU (esempio CUDA Toolkit).
Una macchina virtuale Hyper-V può essere invece completamente separata dal sistema operativo ospitante (l’installazione di Windows 10 e 11 presente sulla macchina in uso).
Cambiano anche le modalità di assegnazione degli indirizzi IP locali: WSL2 attribuisce alle macchine virtuali un indirizzo privato compreso in un certo intervallo che di norma non è modificabile.
Come si può facilmente verificare con il comando ipconfig /all
dal prompt di Windows 10 o Windows 11, ecco ad esempio gli IP che lo switch virtuale predefinito di Hyper-V assegna alle macchine virtuale e gli indirizzi che WSL attribuisce alle distribuzioni Linux in uso.
Al momento WSL non permette di assegnare un IP statico a una macchina virtuale Linux né consente di personalizzarlo. Inoltre, non è possibile accedere a una macchina Linux di WSL2 dalla rete locale.
Con un po’ d’ingegno, seppur si tratti di meccanismi non supportati ufficialmente, si possono risolvere entrambi i problemi. In un nostro articolo, per esempio abbiamo visto come collegarsi a una macchina WSL dalla rete locale.
Per assegnare sempre lo stesso IP privato si possono usare i comandi presentati in questa pagina.
Nel caso di Hyper-V, invece, la personalizzazione delle schede di rete virtuali utilizzate dalle virtual machine è completamente in capo all’utente: assegnando un commutatore virtuale (virtual switch) alla macchina virtuale Hyper-V impostato su Rete esterna, è possibile fare in modo che il sistema virtualizzato appaia come un normale sistema fisico collegato alla rete locale (riceverà un IP privato dal router).
Le macchine virtuali Hyper-V sono vere e proprie virtual machine, personalizzabili in ogni loro aspetto. Nel caso di WSL, invece, la macchina non può essere riavviata o arrestata come si farebbe con Hyper-V, con altre soluzioni per la virtualizzazione o con un PC/server fisico.
La Creazione rapida Hyper-V consente di installare rapidamente una selezione di sistemi operativi sfruttando le immagini già preconfigurate per la piattaforma Microsoft. È comunque possibile, scegliendo Origine di installazione locale oppure servendosi della Console di gestione di Hyper-V avviare l’installazione di qualunque sistema operativo supportato (ad esempio qualunque distribuzione Linux o qualsivoglia versione di Windows…).
Cliccando su Altre opzioni si può personalizzare il nome della macchina virtuale e modificare eventualmente lo switch da usare.
Con un clic su Cambia origine di installazione si può specificare il file ISO per l’installazione di Ubuntu Linux, di Windows o di altri sistemi. Nell’esempio abbiamo assegnato il nome Ubuntu 22.04 alla macchina virtuale e selezionato il virtual switch EXT.
In caso di installazione delle distribuzioni Linux, disattivare la casella Questa macchina virtuale eseguirà Windows in modo da disabilitare l’emulazione della funzionalità Secure Boot.
Cliccando su Avvia inizierà così l’installazione del sistema operativo a partire dal file ISO scaricato da Internet.
Questo non succede nel caso di WSL: tutte le immagini Linux sono scaricabili attraverso il Microsoft Store oppure utilizzando il comando wsl install
e sono però pronte per l’uso.
A meno di non usare qualche “gabola” come quella presentata in uno degli articoli citati nell’introduzione, WSL permette l’utilizzo del sistema operativo Linux da riga di comando pur consentendo l’aggiunta in Windows di collegamenti diretti ai programmi Linux dotati di interfaccia grafica (cosa che non si può fare con Hyper-V).
Hyper-V, di contro, consente di eseguire qualunque sistema operativo dotato di interfaccia grafica accedendo alla macchina virtuale così come se si fosse seduti dinanzi allo schermo di un sistema fisico.
È possibile, naturalmente, condividere i file tra una macchina virtuale Hyper-V e il sistema Windows host ma è necessario impostare le schede di rete virtuali e le condivisioni in totale autonomia.