Il sottosistema Windows per Linux o Windows WSL è un'ottima soluzione per consentire agli sviluppatori di lavorare in modo nativo all'interno di Linux direttamente sul desktop della versione Windows 10.
Se hai passato troppo tempo a partizionare i dischi rigidi per avere diversi sistemi Linux installati con Windows, sei fortunato con questo articolo.
La fata madre in codice di Microsoft ha deciso di darti un'altra opzione:il sottosistema Windows per Linux (WSL). WSL rende l'esecuzione di un sistema Linux insieme a Windows molto più semplice e flessibile.
In questo tutorial imparerai come iniziare con WSL. Imparerai come iniziare a imparare a utilizzare alcuni strumenti ingegnosi che rendono WSL ancora più versatile rispetto all'utilizzo di bash o PowerShell da soli.
Cos'è WSL?
WSL o C:\Windows\System32\wsl.exe è uno strumento Windows che ti consente di installare una distribuzione Linux come app dallo store di Windows.
Poiché WSL è un semplice eseguibile di Windows, puoi chiamarlo da un prompt dei comandi o da un terminale di PowerShell. Approfondiremo l'argomento in seguito. Per ora, è importante capire un po' di più cosa sta facendo WSL sotto il cofano.
Come abilitare WSL
Configurare e abilitare WSL implica l'installazione di una distribuzione Linux insieme a Windows 10. Ma in un modo che consenta ai due diversi sistemi operativi di interagire tra loro.
Prerequisiti
Se sei un professionista IT alle prese con troppe richieste di reimpostazione della 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 Windows 10 a 64 bit Build 18917 o successivo.
Puoi trovare la build di Windows 10 eseguendo l'utilità winver.
Abilitazione della funzione Windows WSL
WSL è un gioco da ragazzi da abilitare; nessun download richiesto. È semplicemente una singola funzionalità di Windows.
Per abilitare WSL, apri PowerShell come amministratore ed esegui quanto segue:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Correlato:come eseguire PowerShell come amministratore
Una volta completato, riavvia il computer e il gioco è fatto!
Download di una distribuzione Linux per WSL
WSL non installa alcuna distribuzione Linux da sola. Dovrai installarne uno. Una volta ripristinato Windows 10, inizia a configurare la distribuzione Linux scelta.
Innanzitutto, apri il Microsoft Store e cerca "WSL". Presto dovresti vedere un elenco di distribuzioni Linux.
Quindi, scegli la tua distribuzione preferita e installala. Questo tutorial utilizzerà Ubuntu 18.04. Al momento in cui scrivo, hai anche alcune altre distribuzioni disponibili come:
- Ubuntu 16.04 LTS
- Ubuntu 18.04 LTS
- OpenSUSE Salto 15
- OpenSUSE Leap 42
- SUSE Linux Enterprise Server 12
- SUSE Linux Enterprise Server 15
- Kali Linux
- Debian GNU/Linux
- Fedora Remix per WSL
- Pengwin
- WSL alpino
Impostazione della versione WSL
Potrebbe essere necessario abilitare Linux per funzionare con WSL versione 2. In tal caso, puoi farlo seguendo le istruzioni seguenti.
In una console PowerShell:
- Elenca le versioni di Linux che hai installato eseguendo
wsl -l
owsl --list
. - Una volta che hai l'elenco, copia il nome della distribuzione che vuoi eseguire con WSL2 ed esegui
wsl --set-version
, sostituendo2 con il nome che hai copiato in precedenza. - Conferma che il comando ha avuto successo eseguendo
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 WSL predefinita per tutte le distribuzioni che installerai in futuro su WSL2 eseguendo
wsl --set-default-version 2
Avvio di WSL
Per iniziare a utilizzare WSL, apri un terminale PowerShell e digita wsl
. Se hai impostato WSL correttamente, entrerai in un terminale bash in esecuzione sulla distribuzione WSL di tua scelta. Da qui, puoi eseguire tutti i comandi Linux che desideri.
Di seguito troverai un riferimento a tutte le opzioni di wsl.exe fornisce all'avvio.
Comando | Spiegazione | Esempio |
---|---|---|
exec, -e | Eseguirà il comando usando senza usare la shell predefinita | wsl -e curl google.com |
— | Passa qualsiasi cosa dopo questo parametro alla shell predefinita. Anche lasciare l'operatore fuori funzionerà. | wsl — curl google.com, wsl curl google.com |
distribuzione, -d | Apre un terminale nella shell della distribuzione specificata | wsl -d Ubuntu-18.04 |
utente, -u | Esegue il comando WSL come l'utente specificato fintanto che l'utente esiste su quella distribuzione | wsl -d Ubuntu-18.04 -u tux_user |
esporta | Esporta la distribuzione specificata in un file tar sul tuo sistema locale. | wsl –export Ubuntu ./Test-Ubuntu.tar |
importa | Importa un file tar come nuova distribuzione WSL. Può specificare la versione WSL con l'opzione –version | wsl –import Test-Ubuntu C:\data\Test-Ubuntu .\Test-Ubuntu.tar |
elenco, -l [Opzioni] | wsl –list | |
tutti | Elenca tutte le distribuzioni WSL installate | wsl -l –all |
in esecuzione | Elenca solo le distribuzioni WSL attualmente in esecuzione | wsl -l –in esecuzione |
silenzioso, -q | Mostra solo i nomi di distribuzione WSL | wsl -l -q |
dettagliato, -v | Mostra informazioni dettagliate su tutte le distribuzioni WSL | wsl -l -v |
set-default, -s | Imposta la distribuzione WSL specificata come distribuzione predefinita per i comandi WSL. | wsl -s Test-Ubuntu |
set-default-version | Modifica la versione WSL predefinita per tutte le nuove distribuzioni installate su quel sistema | wsl –set-default-versione 2 |
set-versione | Modifica la versione WSL della distribuzione specificata | wsl –set-version Test-Ubuntu 2 |
spegnimento | Termina immediatamente tutte le distribuzioni WSL in esecuzione | wsl –spegnimento |
termina, -t | Termina la distribuzione WSL specificata | wsl -t Test-Ubuntu |
annulla la registrazione | Annulla la registrazione della distribuzione WSL specificata | wsl –unregister Test-Ubuntu |
aiuto | Visualizza informazioni sull'utilizzo di WSL | wsl –help |
Una volta che avrai preso dimestichezza con queste opzioni, scoprirai che l'esecuzione e la gestione delle applicazioni tramite WSL è molto più semplice rispetto alla gestione autonoma delle macchine virtuali Linux.
Suggerimento rapido:scopri tutti i flag e gli argomenti per WSL eseguendo
wsl --help
.
Al termine, digita exit
per tornare al terminale di PowerShell.
Condivisione di risorse Windows/Linux tramite WSL
Una delle parti migliori di WSL è che può condividere senza problemi le risorse Windows e Linux tra loro. In questo momento, puoi condividere file system, variabili di ambiente, risorse di rete e strumenti da riga di comando come cmd e PowerShell.
Tutti gli esempi che vedrai in questa sezione sono tramite la distribuzione WSL Ubuntu Linux. Il tuo chilometraggio può variare se hai scelto di scaricare una distribuzione diversa.
Condivisione di file system
Il file system è una delle cose più utili da condividere con WSL. WSL ti consente di lavorare con entrambi i file system come se fossero uno.
Il file system di Windows 10 viene montato come una directory in Linux mentre il file system di Linux verrà montato come una cartella in Windows.
Trovare il file system Linux da Windows con le variabili di ambiente
Quando installi una distribuzione Linux con WSL, a volte aggiungerà una variabile di ambiente Windows. Nel caso della distribuzione WSL Ubuntu Linux, creerà una variabile di ambiente chiamata UBUNTU_HOME. Questa variabile di ambiente punta a Linux /home/ubuntu directory sia da Windows che da WSL Ubuntu.
Il percorso definito in UBUNTU_HOME può essere utilizzato per eseguire script che utilizzano risorse su di essi o impostare una posizione predefinita per il terminale Windows (trattato in seguito).
Altre distribuzioni possono definire una variabile di ambiente simile. Esamina 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 qualcuna.
Questa scorciatoia per la variabile di ambiente è utile se vuoi mettere tutto in /home/ubuntu directory. Ma scaviamo un po' più a fondo come è arrivato lì e in che altro modo puoi raggiungerlo.
Trovare il file system Linux da Windows tramite la cartella dei pacchetti di Microsoft Store
Non tutte le distribuzioni WSL sono garantite per avere un modo semplice per farvi riferimento. È importante imparare a trovare il file system di Linux in un modo alternativo.
Poiché la maggior parte delle distribuzioni WSL Linux verrà installata da Microsoft Store, puoi cercare il file system Linux nello stesso posto delle altre app di Windows Store. Vai a %USERPROFILE%\AppData\Local\Packages\ per trovare la directory in cui si trovano le app di Windows Store. Quindi assumi il controllo della cartella poiché di solito è protetta per impostazione predefinita.
Vedrai molte sottocartelle nella cartella dei pacchetti in cui potrebbe essere presentato il tuo file system di distribuzione Linux. La distribuzione WSL Ubuntu, ad esempio, era sotto il CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc cartella per me.
Se navighi nella cartella del pacchetto, troverai il file system di Linux. Per WSL Ubuntu, si trova in LocalState\rootfs cartella. 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 verrà avviato nella tua UBUNTU_HOME directory per impostazione predefinita.
Puoi anche trovare la radice dei tuoi volumi di archiviazione di Windows. Ciascuna delle unità delle lettere di Windows (C, D, E, ecc.) viene trattata come un'unità montata dal file system WSL Linux. Troverai ogni volume montato come /mnt/c , /mnt/g , ecc purché tu abbia i privilegi di root.
Il filesystem WSL2
La navigazione nel filesystem WSL è abbastanza semplice. Chiunque non abbia familiarità con la struttura di un file system Linux apprezzerà la possibilità di navigarlo con Esplora risorse. Ma se vuoi passare a WSL2, sarà un po' più complicato.
WSL2 cambia il modo in cui tutto funziona sotto il cofano per la condivisione di file system. Per cominciare, il filesystem è ora un disco rigido virtuale in vhdx format invece di una directory.
Puoi trovare il vhdx file in %USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState per una distribuzione Ubuntu WSL.
Scoprirai che i file VHDX possono essere montati in Windows con Gestione disco attrezzo. Tuttavia, i dischi virtuali non possono essere montati mentre la distribuzione WSL è registrata.
Condivisione delle variabili d'ambiente
Le variabili di ambiente sono una parte cruciale di qualsiasi sistema operativo, rendendo facile fare riferimento a file binari ed eseguibili ovunque nelle tue applicazioni.
Prima della build 17063 di Windows 10, l'unica variabile di ambiente condivisa tra Windows 10 e WSL Linux era il PATH variabile. Da allora è possibile condividere variabili d'ambiente utilizzando WSLENV la variabile d'ambiente.
Utilizzando WSLENV variabile d'ambiente per condividere altre variabili d'ambiente può sembrare un po' meta. Per condividere le variabili di ambiente tra piattaforme, devi effettivamente impostare le variabili di ambiente all'interno di un'altra variabile di ambiente.
Panoramica
La condivisione delle variabili di ambiente è un processo in tre fasi di seguito. L'unica grande differenza durante la condivisione su Windows/Linux è l'argomento switch utilizzato (riferimento completo di seguito).
- Definisci la variabile di ambiente in Windows o Linux.
- Imposta WSLENV variabile di ambiente uguale alla variabile di ambiente precedentemente definita seguita da un argomento switch (per la traduzione del percorso).
- Leggi la variabile di ambiente in Windows o Linux.
Opzioni di condivisione
Puoi rendere disponibili le variabili in quattro modi diversi a seconda della piattaforma su cui desideri che la variabile di ambiente venga visualizzata utilizzando gli interruttori (tabella mostrata di seguito).
- Filesystem di Windows disponibile solo da se stesso
- Il file system WSL sarà disponibile solo da WSL
- Il file system WSL sarà disponibile sia su WSL Linux che su Windows
- Il file system di Windows sarà disponibile sia su WSL Linux che su Windows
Bandiera | Spiegazione |
---|---|
/p | Singolo percorso. Una variabile impostata con questo verrà tradotta tra Windows e WSL Linux e resa disponibile a entrambi. |
/l | Elenco dei percorsi. Simile a /p , tranne per il fatto che può accettare più di un percorso. Su Windows, questo elenco sarà delimitato da punti e virgola mentre su WSL Linux sarà delimitato da due punti. |
/u | Percorso Unix. È possibile accedere a un percorso impostato con questo flag solo quando si richiama WSL Linux da Windows. Può essere utilizzato con il /p o /l bandiere |
/w | Percorso di Windows. È possibile accedere a un percorso impostato con questo flag solo quando si richiama Windows da WSL Linux. Può essere utilizzato con il /p o /l bandiere |
Traduzione del percorso
Il motivo principale per condividere le variabili di ambiente è per la traduzione del percorso. Come forse già saprai, Windows ha cartelle di profili utente poiché Linux ha directory di profili utente, ad esempio. Ogni utente ha una "cartella home" predeterminata come C:\Utenti\
Usando il /p
e /l
switch, il WSL tradurrà questi percorsi di cartella tra piattaforme.
Condivisione e traduzione di percorsi di Windows con Linux
Puoi condividere un singolo percorso o più percorsi contemporaneamente utilizzando il /p
e /l
interruttori.
Al prompt dei comandi di Windows e con una variabile di ambiente Windows definita DESKTOP , assegna un valore di DESKTOP/p
al WSLENV variabile. Ciò ti consente di accedervi da WSL Linux. Puoi vedere un esempio qui sotto.
La stessa identica procedura può essere eseguita per più percorsi contemporaneamente utilizzando il /l
interruttore.
Condivisione e traduzione di percorsi Linux con Windows
Condividere e tradurre il percorso Linux con Windows è la stessa procedura di Windows sebbene si utilizzino comandi specifici di Linux per impostare le variabili di ambiente.
Per uno sguardo più approfondito sulla condivisione delle variabili d'ambiente, consulta questo articolo di Microsoft.
Condivisione delle risorse di rete
Il componente di rete è un'altra utile risorsa da condividere tra Windows e WSL Linux.
Interfacce di rete fisiche e virtualizzate
In WSL2, le interfacce di rete sono virtualizzate. Le interfacce di rete virtualizzate significano che le istanze di rete WSL2 possono contenere configurazioni IP diverse rispetto alle loro controparti di Windows 10.
Al momento della stesura di questo articolo, gli indirizzi IP per Linux WSL2 utilizzano Network Address Translation (NAT) per accedere alle risorse di rete su Windows, sebbene Microsoft abbia affermato che la rimozione del NAT è in cima al loro arretrato di problemi da risolvere.
Risoluzione DNS client
WSL genererà comunque entrambi /etc/resolv.conf e /etc/hosts file per consentire la risoluzione DNS. A patto di non sovrascrivere esplicitamente tale comportamento in /etc/wsl.conf , la risoluzione DNS del client continuerà a funzionare come previsto.
Imparerai di più su wsl.conf file più avanti nel post.
Utilizzo di PowerShell e Bash insieme
Una delle funzionalità più interessanti di WSL è la capacità di passare senza problemi informazioni da e verso PowerShell e Bash su WSL.
PowerShell –> Bash
Poiché l'eseguibile WSL accetta l'input dalla pipeline, puoi chiamare wsl.exe comando all'interno di PowerShell e accetta stdin. Ciò consente di utilizzare WSL per passare interi oggetti da PowerShell a WSL che vengono quindi elaborati con il terminale bash. Puoi vedere un esempio qui sotto.
Bash –> PowerShell/Cmd
Puoi anche passare informazioni da bash in WSL a PowerShell e cmd altrettanto facilmente. Di seguito puoi vedere un esempio di esecuzione di Linux ls comando e passando l'output a PowerShell Select-Object
cmdlet tramite la pipeline.
Puoi anche chiamare alcune utilità cmd di Windows da WSL e restituire l'output a Linux purché entrambi i comandi si trovino nel percorso di sistema.
Ricorda che il WSL sa qual è il percorso di sistema su entrambi i lati perché ha accesso alla variabile PATH di Windows per impostazione predefinita
Di seguito puoi vedere che puoi eseguire ipconfig , che è un comando di Windows, dall'interno del WSL e passa quell'output a grep di Linux comando. Puoi anche vedere l'opposto di chiamare il comando Linux che e passando l'output a ipconfig di Windows comando.
Problemi di traduzione
Ci sono alcuni avvertimenti per passare l'output dei comandi avanti e indietro tra bash e PowerShell.
Un grosso problema è 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. Tutti gli oggetti PowerShell inviati tramite pipe a bash verranno appiattiti come una stringa. Al contrario, qualsiasi output bash inviato tramite pipe a PowerShell verrà convertito in un oggetto stringa.
Puoi aggirare in qualche modo il comportamento convertendo o eseguendo il cast esplicito dei tipi di oggetti in PowerShell come nell'esempio seguente. Ma se prevedi di passare oggetti tra PowerShell e WSL senza alcun lavoro aggiuntivo, rimarrai deluso.
Trasmettendo la data bash come [datetime]
classe in PowerShell, ora abbiamo un oggetto PowerShell valido che possiamo usare nel nostro script. Se stai scrivendo script che devono passare da Windows a WSL e viceversa, è possibile fare un piccolo massaggio al codice.
Installa un sottosistema Windows per la GUI Linux con Xfce4
Quando gli strumenti da riga di comando non sono sufficienti, è tempo di rompere le GUI. Se devi eseguire un'utilità grafica su WSL, esplorare una distribuzione personalizzata o non hai ancora familiarità con bash, puoi installare una GUI Linux.
Xfce
Linux ha molti ambienti desktop disponibili. Uno dei più comuni da configurare per WSL si chiama 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 i client RDP per connetterti a Linux proprio come se potessi ospitare Windows.
Configurazione
Per accedere a una GUI Linux da Windows con Xfce4 e xRDP, seguire le istruzioni seguenti. In un terminale WSL:
- Scarica e installa Xfce4 – Scarica e installa Xfce4 usando il comando
sudo apt-get -y install xfce4 && sudo apt-get -y install xubuntu-desktop
. Ci vorrà del tempo. Attenti. - Installa il server xRDP – Scarica e installa xRDP eseguendo
sudo apt-get -y install xrdp
. - Configura xRDP per xfce4 –
echo xfce4-session > ~/.xsession
- Riavvia xRDP –
sudo service xrdp restart
- Trova l'indirizzo IP della distribuzione WSL –
ifconfig | grep inet
A questo punto, dovresti essere in grado di aprire una sessione RDP da Windows 10. Apri la finestra di connessione del desktop remoto usando mstsc
e fornisci l'indirizzo IP Linux trovato nel passaggio n. 5.
Se tutto va bene, puoi aprire una connessione RDP alla distribuzione Linux in esecuzione sul tuo sistema operativo Windows come mostrato di seguito.
Suggerimenti e trucchi
Ora che conosci le basi di WSL e come usarlo, quali sono le prospettive? Fortunatamente ci sono molti strumenti creati o che funzionano bene con WSL.
Impostazione di elementi di configurazione WSL all'avvio con wsl.conf
Esiste un file di configurazione nel WSL in /etc/wsl.conf. Questo file contiene le impostazioni di configurazione che vengono eseguite ogni volta che viene avviata la distribuzione WSL. Quando il wsl.conf il file esiste, WSL acquisirà qualsiasi impostazione in questo file ogni volta che viene avviata la distribuzione Linux.
Ci sono alcune sezioni differenti all'interno di wsl.conf file che puoi configurare.
- Montaggio automatico – Montaggio delle unità da Windows all'avvio
- Rete – Genera resolv.conf o gli host file
- Interoperabilità – Abilitazione o disabilitazione dell'interoperabilità con Windows
Per maggiori dettagli su wsl.conf file, dai un'occhiata a Microsoft Imposta impostazioni di avvio WSL pagina.
Sviluppo su WSL con Visual Studio Code (VS Code)
VS Code apparentemente si integra con tutto e WSL non fa eccezione. Dall'interno di VS Code, puoi configurare un'area di lavoro sulla tua distribuzione WSL ma manipolarla completamente con VS Code su Windows. Non hai nemmeno bisogno di avere un terminale in funzione!
Per configurare VS Code su Windows in modo che funzioni con WSL, devi prima ovviamente installare VS Code per Windows. Assicurati anche di avere il Telecomando – WSL Estensione VS Code installata.
Una volta installata l'estensione, ora puoi connetterti ad essa aprendo un terminale WSL ed eseguendo code
.
è la directory da cui desideri eseguire VS Code. VS Code rileverà quindi che ti trovi in una distribuzione WSL, aprirà una finestra e stabilirà una connessione all'area di lavoro.
Conferma che ha funzionato notando l'icona della connessione WSL nell'angolo in basso a sinistra di VS Code. Dovresti vedere che ha il nome della tua distribuzione WSL.
Puoi persino utilizzare il terminale integrato per interagire direttamente con l'area di lavoro WSL. Non è necessario eseguire una finestra separata per i comandi git bash.
Aggiunta del sottosistema Windows per Linux al terminale Windows
Un altro utile caso d'uso di WSL è aggiungere la console WSL al Terminale di Windows.
Da Windows Terminal, aggiungi ogni distribuzione WSL nella sua scheda. Puoi anche personalizzare l'aspetto di ogni scheda in modo da non perderti.
Se stai utilizzando una distribuzione WSL che imposta una variabile di ambiente per la directory utente come UBUNTU_HOME , puoi anche impostarla come directory iniziale per il tuo terminale.
Se desideri una guida video completa sulla configurazione di WSL per l'utilizzo con Windows Terminal, dai un'occhiata al video di istruzioni TechSnips di seguito.
Pensieri conclusivi
Se sei un professionista IT alle prese con troppe richieste di reimpostazione della password in Active Directory, dai un'occhiata a Specops uReset, una soluzione SSPR sicura.
Microsoft ha rilasciato il WSL per consentire agli sviluppatori Linux la possibilità di sviluppare su Windows. Finora, il WSL è stato un passo nella giusta direzione.
Sembra che il WSL sarà una componente cruciale della nuova strategia amichevole open source di Microsoft. Se Microsoft assumerà Apple come dispositivi su cui gli sviluppatori scrivono il loro codice, sarà una battaglia in salita. Ma WSL è una carta forte da giocare.
WSL offre molti vantaggi di benvenuto agli sviluppatori come:
- Significativamente più leggero rispetto all'esecuzione di VM Linux locali
- Rimozione del sovraccarico di installazione e gestione di un hypervisor
- Niente più requisiti per dischi rigidi multi-partizionati
- Niente più complicati bootloader grub
WSL si accende e funziona in modo da poter programmare tutti felici e contenti.