Il Sottosistema Windows per Linux o Windows WSL è una soluzione ottima per i programmatori che desiderano lavorare nativamente con Linux direttamente sul proprio desktop con Windows 10.
Se hai trascorso troppo tempo a partizionare i dischi rigidi per avere installati diversi sistemi Linux con Windows, sei fortunato con questo articolo.
La fata madrina del codice presso Microsoft ha deciso di darti un’altra opzione: il Sottosistema Windows per Linux (WSL). WSL rende molto più facile ed flessibile l’esecuzione di un sistema Linux insieme a Windows.
In questo tutorial, imparerai come iniziare con WSL. Imparerai come utilizzare alcuni strumenti pratici che rendono WSL ancora più versatile rispetto all’uso di bash o PowerShell da soli.
Riduci le chiamate al servizio di assistenza e aggiorna le credenziali nella cache per gli utenti remoti, anche senza VPN, con una soluzione di reimpostazione della password self-service. Ottieni una demo di Specops uReset!
Cos’è WSL?
WSL o C:\Windows\System32\wsl.exe è uno strumento di Windows che consente di installare una distribuzione Linux come un’app dallo store di Windows.
Dato che WSL è un semplice file eseguibile di Windows, puoi richiamarlo da un prompt dei comandi o da un terminale PowerShell. Approfondiremo questo argomento più avanti. Per ora, è importante capire un po’ meglio cosa fa WSL sotto il cofano.

Come abilitare WSL
Per impostare e abilitare WSL è necessario installare una distribuzione Linux accanto a Windows 10. Ma in modo che i due sistemi operativi diversi possano interagire tra loro.
Prerequisiti
Se sei un professionista IT alle prese con troppe richieste di reset password in Active Directory, dai un’occhiata a Specops uReset, una soluzione SSPR sicura.
Per installare WSL su Windows, devi soddisfare un requisito; devi avere un computer con Windows 10 a 64 bit, Build 18917 o successiva.
Puoi trovare la versione di Windows 10 eseguendo l’utilità winver.

Abilitazione della funzionalità WSL di Windows
WSL è facilissimo da abilitare; non è necessario scaricare nulla. È semplicemente una singola funzionalità di Windows.
Per abilitare WSL, apri PowerShell come amministratore ed esegui quanto segue:
Correlato: Come eseguire PowerShell come amministratore
Una volta completato, riavvia il computer e sei pronto!
Scaricare una distribuzione Linux per WSL
WSL non installa alcuna distribuzione Linux di default. Dovrai installarne una. Una volta che Windows 10 si riavvia, inizia a configurare la distribuzione Linux scelta.
Prima di tutto, apri il Microsoft Store e cerca ‘WSL’. Dovresti presto vedere un elenco di distribuzioni Linux.

Successivamente, scegli la distribuzione che preferisci e installala. Questo tutorial utilizzerà Ubuntu 18.04. Al momento della stesura di questo testo, hai anche altre distribuzioni disponibili come:
- Ubuntu 16.04 LTS
- Ubuntu 18.04 LTS
- OpenSUSE Leap 15
- OpenSUSE Leap 42
- SUSE Linux Enterprise Server 12
- SUSE Linux Enterprise Server 15
- Kali Linux
- Debian GNU/Linux
- Fedora Remix per WSL
- Pengwin
- Alpine WSL
Impostazione della versione di WSL
Potrebbe essere necessario abilitare Linux per funzionare con WSL versione 2. In tal caso, puoi farlo seguendo le istruzioni seguenti.
In una console di PowerShell:
- Visualizza le versioni di Linux installate eseguendo il comando
wsl -l
owsl --list
. - Una volta ottenuto l’elenco, copia il nome della distribuzione che desideri eseguire con WSL2 e esegui il comando
wsl --set-version <Distro> 2
, sostituendo <Distro> con il nome che hai copiato in precedenza. - Conferma che il comando sia stato eseguito correttamente eseguendo il comando
wsl -l -v
owsl --list --verbose
. Questo comando restituirà un elenco completo delle distribuzioni WSL e la versione utilizzata da ciascuna distribuzione.

Puoi anche impostare la versione predefinita di WSL per qualsiasi distribuzione che installerai in futuro su WSL2 eseguendo il comando
wsl --set-default-version 2
Avvio di WSL
Per iniziare a utilizzare WSL, apri un terminale di PowerShell e digita wsl
. Se hai configurato correttamente WSL, accederai a un terminale bash in esecuzione sulla distribuzione WSL scelta. Da qui, puoi eseguire qualsiasi comando Linux desideri.
Di seguito troverai un riferimento a tutte le opzioni che wsl.exe fornisce durante l’avvio.
Command | Explanation | Example |
---|---|---|
exec, -e | Will run command using without using default shell | wsl -e curl google.com |
— | Passes anything after this parameter to default shell. Leaving the operator out will also work. | wsl — curl google.com, wsl curl google.com |
distribution, -d |
Opens a terminal in the specified distribution’s shell | wsl -d Ubuntu-18.04 |
user, -u |
Runs WSL command as the specified user as long as user exists on that distro | wsl -d Ubuntu-18.04 -u tux_user |
export |
Exports the specified distribution to a tar file on your local system. | wsl –export Ubuntu ./Test-Ubuntu.tar |
import |
Imports a tar file as a new WSL distribution. Can specify WSL version with the –version option | wsl –import Test-Ubuntu C:\data\Test-Ubuntu .\Test-Ubuntu.tar |
list, -l [Options] | wsl –list | |
all | List all installed WSL distributions | wsl -l –all |
running | List only WSL distributions that are currently running | wsl -l –running |
quiet, -q | Only show WSL distribution names | wsl -l -q |
verbose, -v | Show detailed information about all WSL distributions | wsl -l -v |
set-default, -s |
Sets the specified WSL distribution as the default distribution for WSL commands. | wsl -s Test-Ubuntu |
set-default-version |
Changes the default WSL version for all new distributions installed to that system | wsl –set-default-version 2 |
set-version |
Changes the WSL version of the specified distribution | wsl –set-version Test-Ubuntu 2 |
shutdown | Immediately terminates all running WSL distributions | wsl –shutdown |
terminate, -t |
Terminates the specified WSL distribution | wsl -t Test-Ubuntu |
unregister |
Unregisters the specified WSL distribution | wsl –unregister Test-Ubuntu |
help | Display information about using WSL | wsl –help |
Una volta che ti sentirai a tuo agio nell’utilizzo di queste opzioni, scoprirai che l’esecuzione e la gestione delle applicazioni tramite WSL è molto più semplice rispetto alla gestione delle macchine virtuali Linux autonomamente.
Suggerimento rapido: Scopri tutte le opzioni e gli argomenti disponibili per WSL eseguendo il comando
wsl --help
.
Quando hai finito, digita exit
per tornare al terminale di PowerShell.
Condivisione delle risorse di Windows/Linux tramite WSL
Una delle migliori caratteristiche di WSL è che può condividere senza problemi risorse di Windows e Linux tra loro. Al momento, è possibile condividere sistemi di file, variabili di ambiente, risorse di rete e strumenti della riga di comando come cmd e PowerShell.
Tutti gli esempi che vedrai in questa sezione sono basati sulla distribuzione Ubuntu Linux di WSL. I risultati possono variare se hai scelto di scaricare una distribuzione diversa.
Condivisione dei sistemi di file
Il sistema di file è una delle cose più utili da condividere con WSL. WSL ti consente di lavorare con entrambi i sistemi di file come se fossero uno solo.
Il sistema di file di Windows 10 viene montato come una directory in Linux, mentre il sistema di file di Linux viene montato come una cartella in Windows.
Trovare il sistema di file di Linux da Windows con le variabili di ambiente
Quando si installa una distribuzione Linux con WSL, a volte verrà aggiunta una variabile di ambiente di Windows. Nel caso della distribuzione Ubuntu Linux di WSL, verrà creata una variabile di ambiente chiamata UBUNTU_HOME. Questa variabile di ambiente punta alla directory /home/ubuntu di Linux sia da Windows che da WSL Ubuntu.
Il percorso definito in UBUNTU_HOME può essere utilizzato per eseguire script che utilizzano risorse tra di loro o impostare una posizione predefinita per il terminale di Windows (trattato in seguito).

Altre distribuzioni possono definire una variabile di ambiente simile. Ispeziona le variabili di ambiente di Windows con il comando PowerShell Get-ChildItem -Path $Env:\
dopo aver installato una nuova distribuzione Linux per vedere se ne è stata aggiunta una.
Questo shortcut della variabile di ambiente è utile se si desidera mettere tutto nella directory /home/ubuntu. Ma andiamo un po’ più in profondità su come è arrivato lì e su come si può raggiungerlo in altri modi.
Trovare il sistema di file di Linux da Windows tramite la cartella dei pacchetti di Microsoft Store
Non tutte le distribuzioni WSL sono garantite di avere un modo semplice per fare riferimento ad esse. È importante che tu impari come trovare il sistema di file di Linux in un modo alternativo.
Poiché la maggior parte delle distribuzioni Linux di WSL verranno installate dal Microsoft Store, puoi cercare il file system Linux nello stesso posto delle altre app del Windows Store. Vai a %USERPROFILE%\AppData\Local\Packages\ per trovare la cartella in cui vanno le tue app del Windows Store. Poi assume il controllo della cartella perché di solito è protetta per impostazione predefinita.
Vedrai molte sottocartelle nella cartella dei pacchetti dove potrebbe essere presente il file system della tua distribuzione Linux. Ad esempio, per me la distribuzione WSL di Ubuntu era nella cartella CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc.
Se navighi nella cartella dei pacchetti, troverai il file system Linux. Per WSL Ubuntu, si trova nella cartella LocalState\rootfs. Questa è la directory principale della tua distribuzione Linux.

Trovare il file system di Windows da Linux
Per trovare il file system di Windows 10 da Linux, apri WSL in Windows. WSL aprirà quindi un terminale bash. Questo terminale bash si avvierà nella tua directory UBUNTU_HOME per impostazione predefinita.
Puoi anche trovare la radice delle tue unità di archiviazione di Windows. Ogni lettera delle tue unità di Windows (C, D, E, ecc.) viene trattata come un’unità montata dal file system Linux di WSL. Troverai ogni volume montato come /mnt/c, /mnt/d, ecc. fintanto che hai privilegi di root.

Get-ChildItem C:\Windows\System32 | Select-Object -First 5
running on WSLIl file system di WSL2
Navigare nel filesystem WSL è abbastanza semplice. Chiunque non sia familiare con la struttura del file system di Linux apprezzerà la possibilità di navigarlo con Windows Explorer. Ma se si desidera passare a WSL2, sarà un po’ più complicato.
WSL2 cambia il modo in cui tutto funziona sotto il cofano per la condivisione dei file system. Per iniziare, il file system è ora un disco rigido virtuale nel formato vhdx anziché una directory.
Puoi trovare il file vhdx in %USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState per una distribuzione WSL Ubuntu.
Troverai che i file VHDX possono essere montati in Windows con lo strumento Gestione disco. Tuttavia, i dischi virtuali non possono essere montati mentre la distribuzione WSL è registrata.
Condivisione delle variabili d’ambiente
Le variabili d’ambiente sono una parte cruciale di qualsiasi sistema operativo, facilitando il riferimento a binari ed eseguibili ovunque nelle tue applicazioni.
Prima della build 17063 di Windows 10, l’unica variabile d’ambiente condivisa tra Windows 10 e WSL Linux era la variabile PATH. Da allora è possibile condividere le variabili d’ambiente usando la variabile d’ambiente WSLENV.
Utilizzare la variabile d’ambiente WSLENV per condividere altre variabili d’ambiente può sembrare un po’ meta. Per condividere le variabili d’ambiente tra piattaforme, è necessario impostare effettivamente le variabili d’ambiente all’interno di un’altra variabile d’ambiente.
Panoramica
La condivisione delle variabili di ambiente è un processo in tre fasi di seguito. L’unica differenza principale quando si condivide tra Windows/Linux è l’argomento di commutazione utilizzato (riferimento completo di seguito).
- Definire la variabile di ambiente in Windows o Linux.
- Impostare la variabile di ambiente WSLENV uguale alla variabile di ambiente precedentemente definita seguita da un argomento di commutazione (per la traduzione del percorso).
- Leggere la variabile di ambiente in Windows o Linux.
Opzioni di condivisione
Puoi rendere le variabili disponibili in quattro modi diversi a seconda della piattaforma su cui desideri che la variabile di ambiente appaia utilizzando le commutazioni (tabella mostrata di seguito).
- File system di Windows disponibile solo da se stesso
- File system di WSL disponibile solo da WSL
- File system di WSL disponibile sia su WSL Linux che su Windows
- File system di Windows disponibile sia su WSL Linux che su Windows
Flag | Explanation |
---|---|
/p | Single path. A variable set with this will be translated between the Windows and WSL Linux and made available to both. |
/l | List of paths. Similar to /p , except it can accept more than one path. On Windows, this list will be delimited by semicolons while on WSL Linux it will be delimited by colons. |
/u | Unix path. A path set with this flag can only be accessed when invoking WSL Linux from Windows. Can be used with either the /p or /l flags |
/w | Windows path. A path set with this flag can only be accessed when invoking Windows from WSL Linux. Can be used with either the /p or /l flags |
Traduzione del percorso
Il motivo principale per condividere le variabili di ambiente è la traduzione dei percorsi. Come probabilmente già sai, Windows ha cartelle del profilo utente come Linux ha directory del profilo utente, ad esempio. Ogni utente ha una “cartella home” predefinita come C:\Users\<username> su Windows e /home/<username> su Linux.
Utilizzando le commutazioni /p
e /l
, WSL tradurrà questi percorsi delle cartelle tra le piattaforme.
Condivisione e traduzione dei percorsi di Windows con Linux
Puoi condividere un singolo percorso o più percorsi contemporaneamente utilizzando gli interruttori /p
e /l
.
In una finestra dei comandi di Windows, e con una variabile d’ambiente di Windows chiamata DESKTOP definita, assegna un valore di DESKTOP/p
alla variabile WSLENV. Questo ti permette di accedervi da WSL Linux. Puoi vedere un esempio di seguito.

La stessa procedura può essere eseguita per più percorsi contemporaneamente utilizzando l’interruttore /l
.
Condivisione e traduzione dei percorsi di Linux con Windows
Per condividere e tradurre un percorso di Linux con Windows, la procedura è la stessa di Windows, sebbene si utilizzino comandi specifici di Linux per impostare le variabili d’ambiente.
Per una visione più approfondita della condivisione delle variabili d’ambiente, consulta questo articolo di Microsoft.
Condivisione delle risorse di rete
Il componente di rete è un’altra risorsa utile da condividere tra Windows e WSL Linux.
Interfacce di rete fisiche vs. virtualizzate
In WSL2, le interfacce di rete sono virtualizzate. Le interfacce di rete virtualizzate significano che le istanze di rete di WSL2 possono avere configurazioni IP diverse rispetto alle controparti di Windows 10.
Al momento della stesura di questo testo, gli indirizzi IP per Linux WSL2 utilizzano la traduzione degli indirizzi di rete (NAT) per accedere alle risorse di rete su Windows, anche se Microsoft ha menzionato la rimozione del NAT come una delle principali questioni da risolvere.

Risoluzione DNS del client
WSL genererà ancora i file /etc/resolv.conf e /etc/hosts per consentire la risoluzione DNS. Finché non si sovrascrive esplicitamente tale comportamento in /etc/wsl.conf, la risoluzione DNS del client continuerà a funzionare come previsto.
Si apprenderà di più sul file wsl.conf successivamente nel post.
Utilizzare PowerShell e Bash insieme
Una delle caratteristiche più interessanti di WSL è la capacità di passare informazioni in modo trasparente da PowerShell a Bash in WSL e viceversa.
PowerShell –> Bash
Poiché il programma eseguibile di WSL accetta l’input dalla pipeline, è possibile chiamare il comando wsl.exe all’interno di PowerShell e accettare stdin. Questo ti consente di utilizzare WSL per passare interi oggetti da PowerShell a WSL che vengono quindi elaborati con il terminale bash. Di seguito puoi vedere un esempio.

grep
Bash –> PowerShell/Cmd
Puoi anche passare informazioni da bash in WSL a PowerShell e cmd con la stessa facilità. Di seguito puoi vedere un esempio di esecuzione del comando Linux ls e di passaggio dell’output al cmdlet PowerShell Select-Object
tramite la pipeline.

È anche possibile chiamare alcune utility di Windows cmd da WSL e passare l’output di nuovo a Linux, purché entrambi i comandi siano nel percorso di sistema.
Ricorda che WSL conosce il percorso di sistema su entrambi i lati perché ha accesso alla variabile di ambiente PATH di Windows per impostazione predefinita
Di seguito puoi vedere che puoi eseguire ipconfig, che è un comando Windows, all’interno di WSL e passare l’output al comando Linux grep. Puoi anche vedere l’opposto chiamando il comando Linux which e passando l’output al comando Windows ipconfig.

Problemi di traduzione
Ci sono alcune limitazioni nel passaggio dell’output del comando avanti e indietro tra bash e PowerShell.
Un grande problema riguarda il modo in cui PowerShell e bash restituiscono le informazioni. PowerShell è un linguaggio di programmazione orientato agli oggetti, mentre bash è uno strumento di manipolazione delle stringhe. Gli oggetti di PowerShell inviati a bash verranno appiattiti come una stringa. Allo stesso modo, qualsiasi output di bash inviato a PowerShell verrà convertito in un oggetto di tipo stringa.
Puoi aggirare in parte questo comportamento convertendo o eseguendo esplicitamente il cast dei tipi di oggetto in PowerShell, come nell’esempio seguente. Tuttavia, se ti aspetti di passare oggetti tra PowerShell e WSL senza alcun lavoro aggiuntivo, rimarrai deluso.

Convertendo la data di bash come classe [datetime]
in PowerShell, ora abbiamo un oggetto valido di PowerShell che possiamo utilizzare nello script. Se stai scrivendo script che devono passare da Windows a WSL e viceversa, è possibile farlo con un po’ di adattamento del codice.
Installa un’interfaccia utente per il sottosistema Windows per Linux con Xfce4
Quando gli strumenti da riga di comando non sono sufficienti, è il momento di utilizzare le GUI. Se hai bisogno di eseguire un’utilità grafica su WSL, esplorare una distribuzione personalizzata o non sei ancora familiare con bash, puoi installare una GUI Linux.
Xfce
Linux ha molti ambienti desktop disponibili. Uno dei più comuni da configurare su WSL è chiamato Xfce. Al momento della stesura di questo articolo, Xfce è alla versione 4. Sono disponibili altri ambienti desktop, ma in questo articolo imparerai come configurare Xfce4.
xRDP
Quando hai configurato un ambiente desktop Linux, avrai bisogno di un servizio che comprenda il protocollo RDP. In questo articolo, ci concentreremo sul server xRDP. xRDP è un server RDP open source per Linux che ti consente di utilizzare client RDP per connetterti a Linux come se fossero host Windows.
Configurazione
Per accedere a una GUI Linux da Windows con Xfce4 e xRDP, segui le istruzioni seguenti. In un terminale WSL:
- Scarica e installa Xfce4 – Scarica e installa Xfce4 utilizzando il comando
sudo apt-get -y install xfce4 && sudo apt-get -y install xubuntu-desktop
. Ci vorrà un po’ di tempo. Attendi. - Installa il server xRDP – Scarica e installa xRDP eseguendo il comando
sudo apt-get -y install xrdp
. - Configura xRDP per xfce4 –
echo xfce4-session > ~/.xsession
- Riavvia xRDP –
sudo service xrdp restart
- Trovare l’indirizzo IP del distro WSL –
ifconfig | grep inet
A questo punto, dovresti essere in grado di aprire una sessione RDP da Windows 10. Apri la finestra di connessione desktop remoto utilizzando mstsc
e fornisci l’indirizzo IP Linux trovato nel passaggio #5.
Se tutto va bene, puoi aprire una connessione RDP al distro Linux che viene eseguito sul tuo sistema operativo Windows come mostrato di seguito.

Suggerimenti e trucchi
Ora che conosci le basi di WSL e come usarlo, cosa c’è dopo? Fortunatamente ci sono molti strumenti che sono stati creati per WSL o che funzionano bene con esso.
Impostazione degli elementi di configurazione di WSL all’avvio con wsl.conf
A configuration file exists in the WSL at /etc/wsl.conf. This file contains configuration settings that run every time the WSL distro is started. When the wsl.conf file exists, WSL will ingest any setting in this file every time the Linux distro is started.
Ci sono alcune sezioni diverse all’interno del file wsl.conf che puoi configurare.
- Automount – Montaggio delle unità da Windows all’avvio
- Network – Generazione del file resolv.conf o del file hosts
- Interop – Abilitazione o disabilitazione dell’interop con Windows
Per ulteriori dettagli sul file wsl.conf, consulta la pagina Microsoft Impostazioni di avvio di WSL.
Sviluppo su WSL con Visual Studio Code (VS Code)
VS Code sembra integrarsi con tutto e WSL non fa eccezione. Da VS Code, puoi configurare uno spazio di lavoro sul tuo distro WSL ma manipolarlo completamente con VS Code su Windows. Non hai nemmeno bisogno di avere un terminale in esecuzione!
Per configurare VS Code su Windows per lavorare con WSL, ovviamente avrai bisogno di VS Code per Windows installato. Assicurati inoltre di avere l’estensione Remote – WSL di VS Code installata.
Una volta installata l’estensione, puoi connetterti ad essa aprendo un terminale WSL e eseguendo il comando code <workspace>
. <Workspace>
è la directory da cui desideri eseguire VS Code. VS Code rileverà che ti trovi in una distribuzione WSL, aprirà una finestra e stabilirà una connessione con lo spazio di lavoro.
Puoi verificare che funzioni notando l’icona di connessione WSL nell’angolo in basso a sinistra di VS Code. Dovresti vedere il nome della tua distribuzione WSL.

Puoi persino utilizzare il terminale integrato per interagire direttamente con lo spazio di lavoro WSL. Non è necessario aprire una finestra separata per i comandi di git bash.
Aggiunta di Windows Subsystem for Linux al Windows Terminal
Un altro caso d’uso utile di WSL è aggiungere la console WSL al Windows Terminal.
All’interno di Windows Terminal, puoi aggiungere ogni distribuzione WSL in una propria scheda. Puoi anche personalizzare l’aspetto di ogni scheda in modo da non confonderti.
Se stai usando una distribuzione WSL che imposta una variabile di ambiente per la directory dell’utente come UBUNTU_HOME, puoi anche impostarla come directory di avvio per il tuo terminale.

Se desideri una guida video completa su come configurare WSL per funzionare con Windows Terminal, guarda il video tutorial di TechSnips qui sotto.
Pensieri finali
Smetti di lottare con le chiamate di reimpostazione password e con i bloccaggi dell’account in Active Directory. Ottieni una prova GRATUITA di Specops uReset.
Microsoft ha rilasciato WSL per consentire agli sviluppatori Linux di sviluppare su Windows. Finora, WSL è stato un passo nella giusta direzione.
Sembra che WSL sarà un componente cruciale della nuova strategia di Microsoft orientata all’open source. Se Microsoft vuole sfidare Apple per diventare il punto di riferimento dei dispositivi su cui gli sviluppatori scrivono il proprio codice, dovrà affrontare una battaglia in salita. Ma WSL è una carta forte da giocare.
WSL offre molti vantaggi graditi agli sviluppatori, come:
- Peso significativamente inferiore rispetto all’esecuzione di VM Linux locali
- Rimozione dell’overhead dell’installazione e della gestione di un hypervisor
- Nessun’altra richiesta di dischi rigidi partizionati
- Nessun bootloader grub complicato
WSL si avvia e funziona in modo da poter scrivere il codice felicemente per sempre.
Source:
https://adamtheautomator.com/windows-subsystem-for-linux/