La sottosistema Windows per Linux (WSL) è una funzionalità del sistema operativo Windows che consente di eseguire un file system Linux, insieme agli strumenti da riga di comando e alle app GUI linux, direttamente in Windows, insieme ai desktop e alle app di Windows tradizionali.
Per altri dettagli, vedi la pagina relativa alle informazioni sul prodotto.
Questo è principalmente uno strumento per gli sviluppatori, in particolare gli sviluppatori Web, quelli che lavorano su progetti open source o la distribuzione in ambienti server Linux. WSL è per chiunque voglia usare Bash, strumenti Linux comuni (, awk
ecc.) e framework Linux-first (sed
Ruby, Python e così via) ma anche usare gli strumenti di produttività di Windows
WSL consente di eseguire Linux in una shell Bash con la propria scelta di distribuzione (Ubuntu, Debian, OpenSUSE, Kali, Alpine e così via). Con Bash puoi eseguire gli strumenti e le app da riga di comando di Linux. Digita ad esempio lsb_release -a
e premi INVIO per visualizzare i dettagli della distribuzione Linux attualmente in esecuzione:
È anche possibile accedere al file system del computer locale dall'interno della shell Bash Linux. Le unità locali verranno montate nella /mnt
cartella. Ad esempio, l'unità C:
è montata in /mnt/c
:
WSL è destinato a un pubblico di sviluppatori per essere usato come parte di un ciclo di sviluppo interno. Si supponga che Sam stia creando una pipeline CI/CD (recapito continuo di integrazione & continua) e voglia testarla prima in un computer locale (portatile) prima di distribuirla nel cloud. Sam può abilitare WSL (& WSL 2 per migliorare la velocità e le prestazioni) e quindi usare un'istanza di Ubuntu Linux autentica in locale (sul portatile) con qualsiasi comando e strumenti Bash che preferiscono. Dopo aver verificato la pipeline di sviluppo localmente, può eseguire il push della pipeline CI/CD nel cloud (ad esempio, Azure) inserendola in un contenitore Docker ed eseguendo il push del contenitore in un'istanza cloud in cui viene eseguito in una macchina virtuale Ubuntu pronta per la produzione.
Bash è una shell di uso comune basata su testo e un linguaggio di comando. È la shell predefinita inclusa in Ubuntu e altre distribuzioni Linux. Gli utenti digitano i comandi in una shell per eseguire script e/o comandi e strumenti per numerose attività.
Vedere questo articolo nel blog della riga di comando di Windows: un'analisi approfondita su come WSL consente a Windows di accedere ai file Linux che illustra in dettaglio la tecnologia sottostante.
Sottosistema Windows per Linux richiede un minor numero di risorse (CPU, memoria e archiviazione) rispetto a una macchina virtuale completa. Ti consente anche di eseguire app e strumenti da riga di comando di Linux insieme alle app desktop, da riga di comando e dello store di Windows e di accedere ai file di Windows da Linux. In questo modo puoi usare le app di Windows e gli strumenti da riga di comando di Linux nello stesso set di file, se lo preferisci.
Alcuni strumenti multipiattaforma sono stati creati supponendo che l'ambiente in cui vengono eseguiti si comportino come Linux. Alcuni strumenti ad esempio suppongono di essere in grado di accedere a percorsi di file molto lunghi o che esistano file/cartelle specifici. Questo causa frequentemente problemi in Windows, che si comporta spesso in modo diverso rispetto a Linux.
Molte lingue come Ruby e Node.js vengono spesso convertite in e vengono eseguite molto bene in Windows. Tuttavia, non tutti i proprietari delle librerie Ruby Gem o node/NPM convertono le librerie in modo da supportare Windows e molti presentano dipendenze specifiche da Linux. Per questo motivo, spesso in sistemi basati su tali strumenti e librerie si verificano errori di compilazione e di runtime o comportamenti indesiderati in Windows.
Questi sono solo alcuni dei problemi che hanno indotto molti utenti a chiedere a Microsoft di migliorare gli strumenti da riga di comando di Windows e che hanno portato alla collaborazione con Canonical per consentire l'esecuzione in Windows degli strumenti da riga di comando nativi Bash e Linux.
Quando si usano progetti OSS, esistono numerosi scenari in cui è estremamente utile usare Bash da un prompt di PowerShell. Il supporto di Bash è complementare e potenzia il valore della riga di comando in Windows, consentendo a PowerShell e alla community di PowerShell di sfruttare altre tecnologie comuni.
Per altre informazioni, vedi il blog del team di PowerShell Bash for Windows: Why it’s awesome and what it means for PowerShell (Bash per Windows: perché è eccezionale e cosa significa per PowerShell).
WSL supporta CPU x64 e Arm.
I punti di montaggio per i dischi rigidi nel computer locale vengono creati automaticamente e consentono di accedere facilmente al file system di Windows.
/mnt/<drive letter>/
Usare ad esempio cd /mnt/c
per accedere a c:\
Come posso configurare Git Credential Manager? (Come posso usare le autorizzazioni Git per Windows in WSL?)
Vedere l'esercitazione Introduzione all'uso di Git in sottosistema Windows per Linux, che include una sezione relativa alla configurazione di Git Credential Manager e all'archiviazione dei token di autenticazione in Windows Credential Manager.
Uno dei vantaggi di Sottosistema Windows per Linux è la possibilità di accedere ai file tramite app o strumenti di Windows e di Linux.
Sottosistema Windows per Linux monta le unità fisse del computer nella cartella /mnt/<drive>
delle distribuzioni Linux. Ad esempio, l'unità C:
è montata in /mnt/c/
Con le unità montate puoi modificare ad esempio il codice in C:\dev\myproj\
usando Visual Studio o VS Code e compilare/testare il codice in Linux accedendo agli stessi file tramite /mnt/c/dev/myproj
.
Altre informazioni sono disponibili nell'articolo Uso di file system Windows e Linux .
I file nella radice Linux (ad esempio
/
) sono controllati da WSL che si allinea al comportamento di Linux, incluso ma non limitato a:- File che contengono caratteri non validi per il nome file di Windows
- Collegamenti simbolici creati per utenti non amministratori
- Modifica degli attributi dei file tramite chmod e chown
- Distinzione maiuscole/minuscole per file/cartelle
I file nelle unità montate sono controllati da Windows e si comportano come indicato di seguito:
- Fanno distinzione tra maiuscole e minuscole
- Tutte le autorizzazioni sono impostate per riflettere in modo ottimale le autorizzazioni di Windows
Per rimuovere una distribuzione da WSL ed eliminare tutti i dati associati alla distribuzione Linux, eseguire wsl --unregister <distroName>
dove <distroName>
è il nome della distribuzione Linux, che può essere visualizzato dall'elenco nel wsl -l
comando.
È inoltre possibile disinstallare l'app di distribuzione Linux nel computer come qualsiasi altra applicazione di store.
Per altre informazioni sui comandi wsl, vedere l'articolo Comandi di base per WSL.
OpenSSH viene fornito con Windows come funzionalità facoltativa. Vedere la documentazione Installa OpenSSH . I privilegi di amministratore in Windows sono necessari per eseguire OpenSSH in WSL. Per eseguire un server OpenSSH, eseguire la distribuzione WSL (ie Ubuntu) o Il terminale Windows come amministratore. Esistono diverse risorse che coprono scenari SSH con WSL. Vedere gli articoli di blog di Scott Hanselman: How to SSH into a Windows 10 Machine from Linux OR Windows OR anywhere, How to SSH into WSL2 on Windows 10 from an external machine, THE EASY WAY to SSH into Bash and WSL2 on Windows 10 from an external computer andHow to use Windows 10's built-in OpenSSH to automaticamente SSH in un computer Linux remoto.
Il programma di installazione di Sottosistema Windows per Linux tenterà di modificare automaticamente le impostazioni locali di Ubuntu in modo che corrispondano alle impostazioni locali dell'installazione di Windows. Se non vuoi ottenere questo risultato, puoi eseguire questo comando per modificare le impostazioni locali di Ubuntu al completamento dell'installazione. Sarà necessario riavviare la distribuzione WSL in modo che questa modifica venga applicata.
Nell'esempio seguente le impostazioni locali vengono cambiate in en-US:
sudo update-locale LANG=en_US.UTF8
Alcuni utenti hanno segnalato problemi con applicazioni firewall specifiche che bloccano l'accesso a Internet in Sottosistema Windows per Linux. I firewall segnalati sono:
- Kaspersky
- AVG
- Avast
- Symantec Endpoint Protection
- F-Secure
In alcuni casi, la disabilitazione del firewall consente l'accesso. In altri casi sembra che il semplice fatto che il firewall sia installato blocchi l'accesso.
La funzionalità Sottosistema Windows per Linux condivide l'indirizzo IP di Windows poiché viene eseguita in Windows. Di conseguenza, puoi accedere a tutte le porte in localhos. Se ad esempio disponi di contenuto Web sulla porta 1234, puoi digitare https://localhost:1234 nel browser Windows. Per altre informazioni, vedere Accesso alle applicazioni di rete.
Il modo migliore per eseguire il backup o spostare le distribuzioni è tramite i comandi di esportazione/importazione disponibili in Windows Versione 1809 e versioni successive. Puoi esportare l'intera distribuzione in un tarball usando il comando wsl --export
. È quindi possibile importare nuovamente questa distribuzione in WSL usando il wsl --import
comando, che può assegnare un nome a un nuovo percorso di unità per l'importazione, consentendo di eseguire il backup e salvare gli stati di (o spostare) le distribuzioni WSL.
Si noti che i servizi di backup tradizionali che esegue il backup dei file nelle cartelle AppData (ad esempio Windows Backup) non verranno danneggiati dai file Linux.
WSL è stato progettato e creato per l'uso con flussi di lavoro di sviluppo del ciclo interno. Esistono funzionalità di progettazione in WSL che lo rendono ideale per questo scopo, ma può renderlo difficile per gli scenari correlati alla produzione rispetto ad altri prodotti. L'obiettivo è quello di chiarire in che modo WSL differisce da un ambiente di macchine virtuali regolari, in modo da poter prendere la decisione su se si adatta alle esigenze aziendali.
Le principali differenze tra WSL e un ambiente di produzione tradizionale sono:
- WSL dispone di una macchina virtuale di utilità leggera che avvia, arresta e gestisce automaticamente le risorse.
- Se non sono presenti handle di file aperti ai processi di Windows, la macchina virtuale WSL verrà arrestata automaticamente. Ciò significa che se lo si usa come server Web, SSH in esso per eseguire il server e quindi uscire, la macchina virtuale potrebbe arrestarsi perché rileva che gli utenti vengono completati l'uso e ne puliscono le risorse.
- Gli utenti WSL hanno accesso completo alle istanze di Linux. La durata della macchina virtuale, le distribuzioni WSL registrate e così via, sono tutte accessibili dall'utente e possono essere modificate dall'utente.
- WSL consente automaticamente l'accesso ai file di Windows.
- I percorsi di Windows vengono aggiunti al percorso per impostazione predefinita, che potrebbero causare un comportamento imprevisto per determinate applicazioni Linux rispetto a un ambiente Linux tradizionale.
- WSL può eseguire eseguibili Windows da Linux, che potrebbe anche causare un ambiente diverso da una macchina virtuale Linux tradizionale.
- Il kernel Linux usato da WSL viene aggiornato automaticamente.
- L'accesso alla GPU in WSL avviene tramite un
/dev/dxg
dispositivo, che instrada le chiamate GPU alla GPU Di Windows. Questa configurazione è diversa da una configurazione Linux tradizionale. - Ci sono altre differenze più piccole rispetto a bare metal Linux e altre differenze sono previste in futuro perché il flusso di lavoro di sviluppo del ciclo interno è prioritario.
È possibile eseguire questa attività in alcuni modi:
- Il modo più semplice consiste nell'usare il comando per esportare la
wsl --export --vhd
distribuzione WSL in un file VHD. È quindi possibile copiare questo file in un altro computer e importarlo usandowsl --import --vhd
. Per altre informazioni, vedere la documentazione dei comandi . - L'implementazione precedente richiede molto spazio su disco. Se non si dispone di un sacco di spazio su disco, è possibile usare le tecniche Linux per spostare i file in:
- Usare
tar -czf <tarballName> <directory>
per creare un tarball dei file. È quindi possibile copiare questi file specifici nel nuovo computer ed eseguirlitar -xzf <tarballName>
per estrarli. - È anche possibile esportare un elenco di pacchetti installati tramite
apt
un comando simile a questo:dpkg --get-selections | grep -v deinstall | awk '{print $1}' > package_list.txt
e quindi reinstallare gli stessi pacchetti in un altro computer con un comando comesudo apt install -y $(cat package_list.txt)
dopo il trasferimento del file su.
- Usare
WSL 2 è disponibile in tutti gli SKU desktop in cui WSL è disponibile, tra cui Windows 10 Home e Windows 11 Home.
La versione più recente di WSL usa l'architettura Hyper-V per abilitare la virtualizzazione. Questa architettura sarà disponibile nel componente facoltativo "Virtual Machine Platform". Questo componente facoltativo sarà disponibile in tutti gli SKU. Presto saranno disponibili altri dettagli su questa esperienza man mano che si avvicina il rilascio di WSL 2.
Non sono attualmente previsti piani per deprecare WSL 1. Puoi eseguire le distribuzioni WSL 1 e WSL 2 side-by-side e puoi effettuare l'aggiornamento e il downgrade di qualsiasi distribuzione in qualsiasi momento. L'aggiunta di WSL 2 come nuova architettura presenta una piattaforma migliore per consentire al team WSL di offrire funzionalità che rendono WSL una soluzione straordinaria per eseguire un ambiente Linux in Windows.
Sarà possibile eseguire WSL 2 e altri strumenti di virtualizzazione di terze parti, ad esempio VMware o VirtualBox?
Alcune applicazioni di terze parti, come VMware e VirtualBox, non possono funzionare se è in uso Hyper-V e non possono quindi essere eseguite quando WSL 2 è abilitato. Di recente, tuttavia, sia per VirtualBox che per VMware sono state rilasciate versioni che supportano Hyper-V e WSL2. Altre informazioni sulle modifiche di VirtualBox e sulle modifiche di VMware. Per la risoluzione dei problemi, vedere le analisi dei problemi di VirtualBox nel repository WSL di GitHub.
Stiamo lavorando costantemente alle soluzioni per supportare l'integrazione di terze parti di Hyper-V. Abbiamo esposto, ad esempio, un set di API denominato piattaforma Hypervisor che può essere usato dai provider di virtualizzazione di terze parti per rendere il software compatibile con Hyper-V. In questo modo le applicazioni possono usare l'architettura Hyper-V per l'emulazione, ad esempio l'emulatore Android di Google e VirtualBox 6 e versioni successive, ora entrambi compatibili con Hyper-V.
Per altre informazioni sui problemi di WSL e sui problemi di WSL 2 con VirtualBox 6.1, vedere il repository dei problemi WSL.
*Se si sta cercando una macchina virtuale Windows, VMWare, Hyper-V, VirtualBox e Parallels vm download sono disponibili in Windows Dev Center.
È stato rilasciato il supporto per l'accesso alla GPU all'interno delle distribuzioni di WSL 2. In altre parole, è possibile ora usare WSL più facilmente per scenari di Machine Learning, intelligenza artificiale e data science quando sono coinvolti set di Big Data. Vedere l'esercitazione per iniziare a usare il supporto GPU. Per il momento WSL 2 non include il supporto per dispositivi seriali o USB. Si sta studiando qual è il modo migliore per aggiungere queste funzionalità. Tuttavia, il supporto USB è ora disponibile tramite il progetto USBIPD-WIN. Per configurare il supporto del dispositivo USB, vedere Connettere dispositivi USB .
Sì, in generale le applicazioni di rete funzionano meglio e saranno più veloci con WSL 2 perché offre la compatibilità completa delle chiamate di sistema. Tuttavia, l'architettura WSL 2 usa componenti di rete virtualizzati, che significa che WSL 2 si comporta in modo analogo a una macchina virtuale - Le distribuzioni WSL 2 avranno un indirizzo IP diverso rispetto al computer host (sistema operativo Windows). Per altre informazioni, vedere Accesso alle applicazioni di rete con WSL.
Sì. Devi assicurarti che nella macchina virtuale sia abilitata la virtualizzazione annidata. Questa operazione può essere effettuata nell'host Hyper-V padre eseguendo in una finestra di PowerShell con privilegi di amministratore il comando seguente:
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
Sostituisci <VMName> con il nome della macchina virtuale.
WSL 2 supporta lo stesso file wsl.conf usato da WSL 1. Ciò significa che in WSL 2 funzioneranno tutte le opzioni di configurazione impostate in una distribuzione di WSL 1, ad esempio il montaggio automatico di unità Windows, l'abilitazione o la disabilitazione dell'interoperabilità, il cambiamento della directory in cui verranno montate le unità Windows e così via. Altre informazioni sulle opzioni di configurazione in WSL nella pagina Gestione distribuzione . Altre informazioni sul supporto per il montaggio di unità, dischi, dispositivi o dischi rigidi virtuali (dischi rigidi virtuali) nell'articolo Montare un disco Linux in WSL 2 .
I problemi relativi al repository del prodotto WSL consentono di:
- Cercare problemi esistenti per verificare se sono presenti problemi associati a un problema che si verifica. Si noti che nella barra di ricerca è possibile rimuovere "is:open" per includere i problemi già risolti nella ricerca. Prendere in considerazione il commento o dare un pollice a qualsiasi problema aperto che si vuole esprimere l'interesse per procedere come priorità.
-
Creare un nuovo problema. Se si è riscontrato un problema con WSL e non viene visualizzato un problema esistente, è possibile selezionare il pulsante Nuovo problema verde e quindi scegliere WSL - Report bug. È necessario includere un titolo per il problema, il numero di compilazione di Windows (eseguito
cmd.exe /c ver
per visualizzare la compilazione corrente #), se si esegue WSL 1 o 2, la versione corrente del kernel Linux #(esecuzionewsl.exe --status
ocat /proc/version
), la versione # della distribuzione (esecuzionelsb_release -r
), tutte le altre versioni software coinvolte, i passaggi di ripetizione, il comportamento previsto, il comportamento effettivo e i log di diagnostica se disponibili e appropriati. Per altre informazioni, vedere Contribuire a WSL. - Creare una richiesta di funzionalità selezionando il pulsante Nuovo problema verde e quindi selezionare Richiesta di funzionalità. Sarà necessario affrontare alcune domande che descrivono la richiesta.
È anche possibile:
- Inviare un problema di documentazione usando il repository WSL. Per contribuire alla documentazione WSL, vedere la guida Microsoft Docs collaboratore.
- File un problema del terminale windows usando il repository del prodotto Terminale Windows se il problema è correlato più al terminale Di Windows, alla console di Windows o all'interfaccia utente della riga di comando.
Per essere sempre aggiornato sulle ultime novità di WSL, puoi visitare:
- Blog del team sulla riga di comando
- Twitter. Seguire @craigaloewen su Twitter per apprendere notizie, aggiornamenti e così via.