Windows Subsystem Linux (WSL) un'integrazione tra Windows e Linux: prova e commento

 

Una delle novità più interessanti di Windows 10  (64 bit) a partire dalla versione 1607 è la possibilità di far girare un ambiente GNU/Linux direttamente sul suo desktop. Si tratta dello Windows Subsystem for Linux (WSL). In rete si trovano molte informazioni sulle modalità di installazione e configurazione di WSL, quindi non mi dilungherò troppo su questi aspetti se non sui punti un po' critici. Quest'articolo si basa su una installazione Ubuntu 18.04 e 20.04  e Debian Buster con ambiente DE MATE e XFCE4.

La prima cosa importante da sapere è che esistono 2 versioni di WSL, la 1 e la 2.  Con la 2 (che carica anche il kernel Linux come da istruzioni) l'ntegrazione è stata ulteriormente ampliata. Tuttavia questa possibilità d'installare la versione 2 ha due condizioni: che sia installato un Windows 10 con almeno la build 19041 e che il vostro BIOS del computer supporti la virtualizzazione Hyper-V. Non solo, deve anche supportare la  SLAT (conversione di secondo livello). Per testare se il vostro BIOS supporta tutto questo da Powershell date 'systeminfo'. In fondo alla sezione 'Requisiti Hyper-V dovete avere tutto con 'Si'. Nel caso contrario dovrete accontentarvi di installare la versione 1.

Questa possibilità offerta da Microsoft con indubbio peso sull'annosa diatriba tra i due sistemi operativi, è stata pensata per favorire gli sviluppatori. Tuttavia offre uno spazio notevole all'utente misto Linux/Windows nell'uso quotidiano di un computer desktop. Per far girare l'ambiente WSL occorre qualche dote di conoscenza un pò più approfondita di Windows e una un po' avanzata su Linux. Bisogna distinguere subito dall'installazione di una distro Linux minimale, praticamente solo con shell per i comandi e una installazione più adatta per un desktop, cioè la possibilità di far girare applicativi con GUI (interfaccia grafica) e non solo. L'installazione minimale richiede i passi descritti in modo chiaro nella documentazione ufficiale di Microsoft. E' preferibile usare l'opzione da powershell con riga di comando e installare la distro Linux gradita direttamente dallo Windows store. Alla fine avrete un'icona colorata con il pinguino nel menu start e da cui far apparire la shell di Linux che chiederà di settare un account per Linux. A questo punto un utente Linux sa cosa fare, deve solo considerare che sta in una distribuzione Linux nella quale necessario operare da riga di comando, compresa l'azione primaria di aggiornare il sistema (in Ubuntu il solito 'sudo apt-get update' seguito da 'sudo apt-get upgrade'). Per navigare nelle directory dei due sistemi e scambiare files, con i recenti Windows apparirà un'icona 'Linux' a sinistra del File manager di Windows in cui si vedono le directory di Linux. Comunque nella shell di Linux vedrete le directory del vostro Windows e anche di altri dischi formattati con FAT o NTFS sotto la directory di Linux '/mnt/<nome_drive>' (ad esempio: /mnt/c) e da lì tutte le sottodirectory di Windows. Ed il contrario? Cioè le directory di Linux sotto Windows?  Queste staranno con entrambe le versioni nel file manager di Windows sotto la categoria 'Rete' ma nascoste. Dovete inserire '\\wsl$' nell'apposita casella in alto. Questo è utile da sapere in caso di scambio files tra i sistemi. Linux verrà gestito da riga di comando secondo le procedure del sistema operativo stesso. Di seguito le istruzioni per ampliarne le possibilità con l'uso di un ambiente grafico e audio.

 

Istruzioni per usufruire di un'ambiente grafico

Per usare tutto l'ambiente grafico di una distro Linux su WSL è necessario installare un Server X d'ausilio. Quindi oltre ad installare nella vostra distro un DE (Gnome, ecc.) bisognerà configurare un server X in Windows . Anche qui in rete si trovano molte informazioni. Per il server grafico si può scegliere tra X410 su Windows Store (a pagamento) o altri come VcXsrv oppure MobaXterm. VcXsrv, una volta installato, è meglio lanciarlo da powershell con il comando '& ‘C:\Program Files\VcXsrv\vcxsrv.exe' -wgl -dpi auto -ac -multiwindow'. Se qualcosa non va togliete l'opzione '-wgl'. Con MobaXterm per evitare che i video vadino a scatti bisogna settare in Settings ---->configuration-->X11 l'opzione OpenGL acceleration ad 'hardware' e settare 'X11 remote access' su 'full' . Resta comunque l'ambiente DE di Linux da installare per entrare appieno nell'ambiente grafico. Forse quelli che funzionano meglio come grafica sono XFCE4 e MATE, con una preferenza per il primo. Le singole applicazioni grafiche partiranno comunque, se lanciate con il comando da terminale. 

Istruzioni per l'audio

Per l'audio bisogna installare un server per l'audio. Come pulseaudio server per Windows. Una volta scompattato il file compresso, è necessario però fare modifiche ai suoi file di configurazione. Per facilitare il tutto ho predisposto in download la cartella compressa con i files già modificati e configurati. Dopo il download scompattate e mettere poi la cartella sotto 'C:\' e fare eventualmente un collegamento sul desktop di bin\pulseaudio.exe per comodità. Al lancio usciranno degli errori ma l'audio funziona lo stesso a patto di aver inserito in Linux nel file .bashrc le righe consigliate dopo. Solo se il file scaricato non funzionasse con WSL2 , provate a seguire questa guida. Si raccomanda di controllare sempre Firewall attivati. Con Windows defender controllate che 'pulseaudio' sia spuntato tra le 'app' ammesse sia nella rete privata che pubblica, anche se quest'ultima non è attiva. 

 

Modifica al file .bashrc in Linux per grafica e audio

Nella shell di Linux aprire ed aggiungere in fondo con un editor nel file nascosto .bashrc  le seguenti righe per usufruire della grafica e dell'audio dopo aver aperti i rispettivi applicativi visti prima. Una volta fatto, chiudete l'editor e date 'source /home/<user>/.bashrc' o riavviate WSL.

Con WSL1:

export DISPLAY=:0.0
export PULSE_SERVER=tcp:localhost

Con WSL2:

export HOST_IP="$(ip route |awk '/^default/{print $3}')"
export DISPLAY="$HOST_IP:0.0"
export PULSE_SERVER="tcp:$HOST_IP"

 

Per operare in WSL si può usare la Powershell di Windows (o anche CMD in alternativa). Basta digitare wsl e si entra nell'ambiente Linux installato. Per andare direttamente alla propria directory /home di Linux, digitare in Powershell wsl ~ (tilde con tasto ALT +126) oppure inserire in fondo al file .bashrc il comando cd ~.  Infine per provare il tutto sarà sufficiente aprire un browser nella shell di Linux e vedere un qualsiasi video youtube con tanto di audio. Per lanciare dalla shell Linux un applicativo di Windows bisogna creare un 'alias' nel file .bashrc  (directory home dell'utente) di Linux con il percorso al file .exe . Ad esempio: alias <nome app>='/mnt/c/Program\ Files/<nome app>/<nome file>.exe'. 

A questo punto la domanda è: conviene installare un ambiente WSL?  Partendo dal presupposto che volete lavorare con i due sistemi operativi senza fare un dual boot e mettendolo a confronto con l'alternativa di una macchina virtuale con Linux guestpunti a favore di WSL sono:

1) Microsoft ha realizzato un ottimo tool (e gratis!) per far convivere in modo efficiente i due sistemi in un ambiente unico;

2) è relativamente facile configurarlo e praticamente installa da solo una distro Linux;

3) avrete la possibilità di lanciare applicativi Linux direttamente da riga di comando sul desktop di Windows (in pratica da shell Linux scrivendo ad esempio 'pluma' avrete un text editor sulla scrivania di Windows)

punti a sfavore sono:

1) limitazioni nell'uso come ad esempio stampanti USB non rilevate;

2) può capitare che qualche software per Linux non giri in modo fluido senza problemi e difficoltà nel gestire l'audio soprattutto con WSL2;

3) lato sicurezza, cosa da non sottovalutare, WSL (soprattutto la versione 1) può avere anche lui i suoi punti deboli


CONCLUSIONI

L'ambiente WSL fornisce il meglio di se con la shell Linux e i comandi da riga di comando sia per gestire Linux ma anche per lanciare i programmi di questo sistema operativo nella scrivania di Windows 10 con o senza GUI. Se si passa però ad emulare un ambiente Linux completo con DE grafico a tutti gli effetti, il risultato è tutto sommato uguale ad un sistema guest Linux su macchina virtuale, anche se le risorse hardware richieste sono  minori  e si può lavorare più comodamente alternando i due sistemi operativi sullo stesso schermo.

Di seguito due screenshot che fanno vedere gli effetti dell'uso di WSL.  Notare come in entrambi i casi resta visibile il pannello inferiore di Windows con le icone dei programmi, sia quelli di Windows che quelli di Linux. Nel primo si vede Un DE completo a tutto schermo di XFCE4 con aperte finestre di Linux insieme alle finestre di Windows:

In quest'altro, al contrario, si vede il desktop di Windows con aperto il text editor 'pluma'  lanciato direttamente con un terminale (wsltty) mentre restano aperte le finestre di Windows: