Generale
Che cos'è sottosistema Windows per Linux (WSL)?
Il 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 di Linux e alle app GUI, direttamente in Windows, insieme ai tradizionali desktop e app di Windows.
Per altri dettagli, vedere la pagina informazioni .
Chi è WSL per?
Si tratta principalmente di uno strumento per gli sviluppatori, in particolare per sviluppatori Web, per quelli che lavorano su progetti open source o per la distribuzione in ambienti server Linux. WSL è destinato a chiunque voglia usare Bash, strumenti Linux comuni (sed, awke così via) e framework Linux-first (Ruby, Python e così via), ma gode anche dell'uso degli strumenti di produttività di Windows.
Cosa posso fare con WSL?
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 è possibile eseguire strumenti e app Linux da riga di comando. Ad esempio, digitare lsb_release -a e premere INVIO. Verranno visualizzati i dettagli della distribuzione Linux attualmente in esecuzione:
È anche possibile accedere al file system del computer locale dalla shell Bash linux. Le unità locali sono montate nella /mnt cartella . Ad esempio, l'unità C: viene montata in /mnt/c:
È possibile descrivere un flusso di lavoro di sviluppo tipico che incorpora WSL?
WSL è destinato a un pubblico di sviluppatori con lo scopo di essere usato come parte di un ciclo di sviluppo interno. Si supponga che Sam stia creando una pipeline CI/CD (integrazione continua e recapito continuo) 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 Linux Ubuntu originale in locale (sul portatile) con qualsiasi comando e strumenti Bash che preferiscono. Dopo aver verificato la pipeline di sviluppo in locale, Sam può quindi eseguire il push della pipeline CI/CD nel cloud (ad esempio Azure) rendendola in un contenitore Docker ed eseguendo il push del contenitore in un'istanza cloud in cui viene eseguita in una macchina virtuale Ubuntu pronta per la produzione.
Informazioni su Bash
Bash è una shell e un linguaggio di comando basati su testo più diffusi. Si tratta della shell predefinita inclusa in Ubuntu e in altre distribuzioni Linux. Gli utenti digitano comandi in una shell per eseguire script e/o eseguire comandi e strumenti per eseguire molte attività.
Come funziona?
Vedere questo articolo nel blog della riga di comando di Windows: Approfondimento su come WSL consente a Windows di accedere ai file Linux , che illustra in dettaglio la tecnologia sottostante.
Perché usare WSL anziché Linux in una macchina virtuale?
WSL richiede meno risorse (CPU, memoria e archiviazione) rispetto a una macchina virtuale completa. WSL consente anche di eseguire strumenti da riga di comando e app Linux insieme alla riga di comando di Windows, alle app desktop e store e di accedere ai file di Windows da Linux. In questo modo è possibile usare le app di Windows e gli strumenti da riga di comando linux nello stesso set di file, se lo si desidera.
Perché usare, ad esempio, Ruby in Linux anziché in Windows?
Alcuni strumenti multipiattaforma sono stati creati presupponendo che l'ambiente in cui vengono eseguiti si comporti come Linux. Ad esempio, alcuni strumenti presuppongono che siano in grado di accedere a percorsi di file molto lunghi o che esistano file/cartelle specifici. Questo spesso causa problemi in Windows che spesso si comportano in modo diverso da Linux.
Molte lingue come Ruby e Node.js vengono spesso convertite in e vengono eseguite in Modo ottimale in Windows. Tuttavia, non tutti i proprietari della libreria Ruby Gem o node/NPM hanno le proprie librerie per supportare Windows e molte hanno dipendenze specifiche di Linux. Questo può spesso causare sistemi compilati usando tali strumenti e librerie che soffrono di errori di compilazione e talvolta errori di runtime o comportamenti indesiderati in Windows.
Questi sono solo alcuni dei problemi che hanno causato a molte persone di chiedere a Microsoft di migliorare gli strumenti da riga di comando di Windows e ciò che ci ha spinto a collaborare con Canonical per abilitare gli strumenti da riga di comando Bash e Linux nativi per l'esecuzione in Windows.
Cosa significa questo per PowerShell?
Durante l'uso dei progetti OSS, esistono numerosi scenari in cui è estremamente utile passare a Bash da un prompt di PowerShell. Il supporto di Bash è complementare e rafforza il valore della riga di comando in Windows, consentendo a PowerShell e alla community di PowerShell di sfruttare altre tecnologie più diffuse.
Per altre informazioni, vedere il blog del team di PowerShell - Bash per Windows: Perché è impressionante e cosa significa per PowerShell
Quali processori supporta WSL?
WSL supporta CPU x64 e Arm64.
Come si accede all'unità C:
I punti di montaggio per i dischi rigidi nel computer locale vengono creati automaticamente e consentono di accedere facilmente al file system Windows.
/mnt/<lettera> di unità/
L'utilizzo di esempio è cd /mnt/c quello di accedere c:\
Come si configura Git Credential Manager? Come si usano le autorizzazioni Git di Windows in WSL?)
Vedere l'esercitazione Introduzione all'uso di Git nel sottosistema Windows per Linux, che include una sezione sulla configurazione di Git Credential Manager e sull'archiviazione dei token di autenticazione in Windows Credential Manager.
Come si usa un file di Windows con un'app Linux?
Uno dei vantaggi di WSL è la possibilità di accedere ai file tramite app o strumenti di Windows e Linux.
WSL monta le unità fisse del computer nella /mnt/<drive> cartella nelle distribuzioni Linux. Ad esempio, l'unità C: viene montata in /mnt/c/.
Usando le unità montate, è possibile modificare il codice in, C:\dev\myproj\ ad esempio usando Visual Studio o VS Code e compilare/testare il codice in Linux accedendo agli stessi file tramite /mnt/c/dev/myproj.
Per altre informazioni, vedere l'articolo Uso di file system Windows e Linux .
I file nell'unità Linux sono diversi dall'unità Windows montata?
I file nella radice Linux (ad esempio
/) sono controllati da WSL che si allinea al comportamento di Linux, tra cui, a titolo esemplificativo:- File che contengono caratteri di nome file di Windows non validi
- Collegamenti simbolici creati per utenti non amministratori
- Modifica degli attributi di file tramite
chmodechown - Distinzione tra maiuscole e minuscole di file/cartelle
I file nelle unità montate sono controllati da Windows e hanno i comportamenti seguenti:
- Distinzione tra maiuscole e minuscole di supporto
- Tutte le autorizzazioni vengono impostate in modo da riflettere al meglio le autorizzazioni di Windows
Come si disinstalla una distribuzione WSL?
Per rimuovere una distribuzione da WSL ed eliminare tutti i dati associati alla distribuzione Linux, eseguire wsl --unregister <Distro> dove <Distro> è il nome della distribuzione linux, che può essere visualizzata dall'elenco nel wsl -l comando.
Inoltre, è possibile disinstallare l'app di distribuzione Linux nel computer esattamente come qualsiasi altra applicazione store.
Per altre informazioni sui comandi wsl, vedere l'articolo Comandi di base per WSL.
Come si esegue un server OpenSSH?
OpenSSH viene fornito con Windows come funzionalità facoltativa. Vedere il documento Install OpenSSH (Installare OpenSSH ). I privilegi di amministratore in Windows sono necessari per eseguire OpenSSH in WSL. Per eseguire un server OpenSSH, eseguire la distribuzione WSL (ad esempio Ubuntu) o Terminale Windows come amministratore. Esistono diverse risorse che coprono scenari SSH con WSL. Vedere gli articoli del blog di Scott Hanselman: How to SSH into a Windows 10 Machine from Linux OR Windows OR anywhere,Howto SSH into WSL2 on Windows 10 from an external machine,THEEASY WAY how to SSH into Bash and WSL2 on Windows 10 from an external machine, and How to use Windows 10's built-in OpenSSH to automatically SSH into a remote Linux machine.
Come si modifica la lingua di visualizzazione di WSL?
L'installazione di WSL tenterà di modificare automaticamente le impostazioni locali di Ubuntu in modo che corrispondano alle impostazioni locali dell'installazione di Windows. Se non si vuole questo comportamento, è possibile eseguire questo comando per modificare le impostazioni locali di Ubuntu al termine dell'installazione. Per rendere effettiva questa modifica, sarà necessario riavviare la distribuzione WSL.
L'esempio seguente modifica le impostazioni locali in en-US:
sudo update-locale LANG=en_US.UTF8
Perché non si ha accesso a Internet da WSL?
Alcuni utenti hanno segnalato problemi con applicazioni firewall specifiche che bloccano l'accesso a Internet in WSL. I firewall segnalati sono:
- Kaspersky
- AVG
- Avast
- Symantec Endpoint Protection
- F-Secure
In alcuni casi la disattivazione del firewall consente l'accesso. In alcuni casi è sufficiente che il firewall sia installato cerca di bloccare l'accesso.
Come si accede a una porta da WSL in Windows?
WSL condivide l'indirizzo IP di Windows, perché è in esecuzione in Windows. Di conseguenza, è possibile accedere a qualsiasi porta su localhost, ad esempio se si dispone di contenuto Web sulla porta 1234, è possibile https://localhost:1234 accedere al browser Windows. Per altre informazioni, vedere Accesso alle applicazioni di rete.
Come è possibile eseguire il backup delle distribuzioni WSL?
Il modo migliore per eseguire il backup o spostare le distribuzioni consiste nel usare i comandi di importazione di esportazione/ disponibili in Windows versione 1809 e successive. È possibile esportare l'intera distribuzione in un tarball usando il wsl --export comando . È quindi possibile importare nuovamente questa distribuzione in WSL usando il wsl --import comando , che può denominare un nuovo percorso di unità per l'importazione, consentendo di eseguire il backup e salvare gli stati di (o spostare) le distribuzioni WSL. Per altre informazioni sullo spostamento delle distribuzioni WSL, vedere Come trasferire i file WSL da un computer a un altro?.
I servizi di backup tradizionali che esempiscono i file di backup nelle cartelle AppData (ad esempio Windows Backup) non danneggiano i file Linux.
È possibile usare WSL per scenari di produzione?
Sì, tuttavia WSL è stato progettato e progettato per l'uso con flussi di lavoro di sviluppo di cicli interni. Esistono funzionalità di progettazione in WSL che lo rendono ideale per questo scopo, ma può rendere 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 normale, in modo da poter decidere se soddisfa le esigenze aziendali.
Le principali differenze tra WSL e un ambiente di produzione tradizionale sono:
- WSL dispone di una macchina virtuale di utilità leggera che viene avviata, arrestata e gestita automaticamente le risorse.
- Se non sono presenti handle di file aperti per i processi Windows, la macchina virtuale WSL verrà arrestata automaticamente. Ciò significa che se 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 hanno finito di usarlo e puliranno le risorse.
- Gli utenti WSL hanno accesso completo alle istanze 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, causando un comportamento imprevisto per determinate applicazioni Linux rispetto a un ambiente Linux tradizionale.
- WSL può eseguire eseguibili Windows da Linux, che possono anche portare a un ambiente diverso rispetto a una macchina virtuale Linux tradizionale.
- Il kernel Linux usato da WSL viene aggiornato automaticamente.
- L'accesso gpu in WSL avviene tramite un
/dev/dxgdispositivo, che instrada le chiamate GPU a Windows GPU. Questa configurazione è diversa da una configurazione linux tradizionale. - Ci sono altre differenze più piccole rispetto a Bare metal Linux e si prevede che in futuro si verifichino altre differenze in quanto il flusso di lavoro di sviluppo del ciclo interno è prioritario.
Come è possibile trasferire i file WSL da un computer a un altro?
È possibile eseguire questa attività in diversi modi:
- Il modo più semplice consiste nell'usare il
wsl --export <Distro> <FileName> --format vhdcomando per esportare la distribuzione WSL in un file VHD. È quindi possibile copiare il file in un altro computer e importarlo usandowsl --import <Distro> <InstallLocation> <FileName> --vhd. Per altre informazioni, vedere i comandi di importazione ed esportazionenel documento sui comandi di base di WSL . - L'implementazione precedente richiede molto spazio su disco. Se non si ha molta quantità di spazio su disco, è possibile usare le tecniche Linux per spostare i file:
- 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
aptcon un comando simile al seguente:dpkg --get-selections | grep -v deinstall | awk '{print $1}' > package_list.txte 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.
- Usare
Come è possibile spostare la distribuzione WSL in un'unità o una posizione diversa?
A tale scopo, è possibile usare PowerShell. Di seguito sono riportati i comandi e le spiegazioni necessari per ogni passaggio. Aprire una finestra di PowerShell e modificare i valori tra i <> tag per adattarsi al caso d'uso specifico:
# Export your distro to that folder as a VHD
wsl --export <Distro, e.g: Ubuntu> <FileName, e.g: D:\WSLDistros\Ubuntu\ext4.vhdx> --format vhd
# Unregister your old distro
# Please note this will erase your existing distro's file contents, please ensure the backup file you created in the 2nd step is present at the ___location and that the export operation completed successfully.
# Please exercise caution when using this command, as it is destructive and could cause data loss.
wsl --unregister <Distro, e.g: Ubuntu>
# Import your VHD backup
wsl --import-in-place <Distro, e.g: Ubuntu> <FileName, e.g: D:\WSLDistros\Ubuntu\ext4.vhdx>
Come impostare l'account utente predefinito
È possibile configurare l'account utente predefinito impostando un wsl.conf valore pari user.default=<name>a
WSL 2
WSL 2 è disponibile in Windows 10 Home e Windows 11 Home?
Sì. WSL 2 è disponibile in tutti gli SKU desktop in cui È disponibile WSL, tra cui Windows 10 Home e Windows 11 Home.
In particolare, WSL2 richiede l'abilitazione di due funzionalità:
- "Virtual Machine Platform" (un subset di Hyper-V)
- "Sottosistema Windows per Linux"
WSL 2 usa Hyper-V?
La versione più recente di WSL usa un subset di architettura Hyper-V per abilitarne la virtualizzazione. Questo subset viene fornito come componente facoltativo denominato "Virtual Machine Platform", disponibile in tutti gli SKU desktop.
Cosa succederà a WSL 1? Sarà abbandonato?
Attualmente non sono previsti piani per deprecare WSL 1. È possibile eseguire le distribuzioni di WSL 1 e WSL 2 affiancate e aggiornare e effettuare il downgrade di qualsiasi distribuzione in qualsiasi momento. L'aggiunta di WSL 2 come nuova architettura offre una piattaforma migliore per il team WSL per offrire funzionalità che rendono WSL un modo straordinario 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 non possono funzionare quando Hyper-V è in uso, il che significa che non potranno essere eseguite quando WSL 2 è abilitato, ad esempio VMware e VirtualBox. Tuttavia, di recente sia VirtualBox che VMware hanno rilasciato versioni che supportano Hyper-V e WSL2. Altre informazioni sulle modifiche di VirtualBox sono disponibili qui e le modifiche di VMware qui. Per la risoluzione dei problemi, esaminare le discussioni sui problemi di VirtualBox nel repository WSL in GitHub. StackOverflow offre anche un suggerimento utile: come ottenere VirtualBox 6.0 e WSL contemporaneamente.
Stiamo lavorando costantemente sulle soluzioni per supportare l'integrazione di terze parti di Hyper-V. Ad esempio, viene esposto un set di API denominate Hypervisor Platform che i provider di virtualizzazione di terze parti possono usare per rendere il software compatibile con Hyper-V. In questo modo, le applicazioni usano l'architettura Hyper-V per l'emulazione, ad esempio l'emulatore Android di Google e VirtualBox 6 e versioni successive, ora compatibili con Hyper-V.
Per altre informazioni sui problemi di WSL con VirtualBox 6.1, vedere il repository dei problemi di WSL 2.
*Se si sta cercando una macchina virtuale Windows, VMWare, Hyper-V, VirtualBox e Parallels, i download di VM sono disponibili in Windows Dev Center.
È possibile accedere alla GPU in WSL 2? Sono previsti piani per aumentare il supporto hardware?
È stato rilasciato il supporto per l'accesso alla GPU all'interno delle distribuzioni WSL 2. Ciò significa che è ora possibile usare WSL per scenari di Machine Learning, intelligenza artificiale e data science più facilmente quando sono coinvolti set di Big Data. Vedere l'esercitazione introduttiva sul supporto GPU . A partire da ora WSL 2 non include il supporto seriale o il supporto dei dispositivi USB. Stiamo esaminando il modo migliore per aggiungere queste funzionalità. Tuttavia, il supporto USB è ora disponibile tramite il progetto di USBIPD-WIN. Per informazioni su come configurare il supporto dei dispositivi USB, vedere Connettere dispositivi USB .
WSL 2 può usare applicazioni di rete?
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, il 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.
È possibile eseguire WSL 2 in una macchina virtuale?
Sì! È necessario assicurarsi che la macchina virtuale abbia la virtualizzazione annidata abilitata. Questa opzione può essere abilitata nell'host Hyper-V padre eseguendo il comando seguente in una finestra di PowerShell con privilegi di amministratore:
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
Assicurarsi di sostituire "<VMName>" con il nome della macchina virtuale.
È possibile usare wsl.conf in WSL 2?
WSL 2 supporta lo stesso file wsl.conf usato da WSL 1. Ciò significa che tutte le opzioni di configurazione impostate in una distribuzione WSL 1, ad esempio il montaggio automatico delle unità Windows, l'abilitazione o la disabilitazione dell'interoperabilità, la modifica della directory in cui verranno montate le unità Windows e così via funzioneranno tutti all'interno di WSL 2. Per altre informazioni sulle opzioni di configurazione in WSL, vedere la pagina Gestione distribuzione . Altre informazioni sul supporto per il montaggio di unità, dischi, dispositivi o dischi rigidi virtuali (VHD) nell'articolo Montare un disco Linux in WSL 2 .
1: Log delle modifiche per VirtualBox 6.02: Hyper-V API3: Hyper-V emulatore Android supporta4: VMware Workstation Tech Preview 20H1 - Supporto di VIRTUALIZZAZIONE hyper-V/host
Dove è possibile fornire commenti e suggerimenti?
Le issue del repository del prodotto WSL ti consentono di:
- Esaminare le segnalazioni esistenti per verificare se ce ne sono associate a un problema che si sta riscontrando. Si noti che nella barra di ricerca è possibile rimuovere "is:open" per includere i problemi già risolti nella ricerca. Si prega di considerare la possibilità di commentare o approvare con un pollice in su qualsiasi problema aperto per cui desiderate esprimere interesse nel procedere come una priorità.
-
Segnala un nuovo problema. Se si è verificato un problema con WSL e non è presente un problema esistente, è possibile selezionare il pulsante verde Nuovo problema e quindi scegliere WSL - Report bug. È necessario includere un titolo per il problema, il numero di build di Windows (eseguire
cmd.exe /c verper visualizzare la build corrente #), indipendentemente dal fatto che si esegua WSL 1 o 2, la versione corrente del kernel Linux # (eseguirewsl.exe --statusocat /proc/version), il numero di versione della distribuzione (eseguirelsb_release -r), tutte le altre versioni software coinvolte, i passaggi di riproduzione, il comportamento previsto, il comportamento effettivo, il comportamento effettivo e i log di diagnostica, se disponibili e appropriati. Per ulteriori informazioni, consulta sul contributo a WSL. - Invia una richiesta di funzionalità selezionando il pulsante verde Nuova questione e quindi selezionare Richiesta di funzionalità. È necessario affrontare alcune domande che descrivono la richiesta.
È anche possibile:
- Segnala un problema di documentazione utilizzando il repository di documentazione WSL. Per contribuire alla documentazione WSL, vedere la guida collaboratore di Microsoft Docs.
- Inviare un problema a Terminale Windows usando il repository del prodotto Terminale Windows se il problema è correlato più al terminale Windows, alla console di Windows o all'interfaccia utente della riga di comando.
Se vuoi rimanere aggiornato con le ultime notizie WSL, puoi farlo con:
- Blog del team della riga di comando
- X. Segui @craigaloewen su X per scoprire notizie, aggiornamenti e così via.
Come risolvere 'Errore: 0x800704ec Questo programma è bloccato da Criteri di gruppo. Per altre informazioni, contattare l'amministratore di sistema.'?
Questo errore è causato da un criterio di gruppo che blocca WSL. Per risolvere il problema, eseguire prima di tutto il comando wsl --update per eseguire l'aggiornamento alla versione più recente dello Store. Se il problema non viene risolto, contattare l'amministratore. Altre informazioni sulla differenza tra la versione WSL posta in arrivo e la versione dello Store di WSL: WSL in Microsoft Store.
LxssManager è stato sostituito da WSLService?
Sì, LxssManager è stato sostituito da WSLService quando WSL ha eseguito la transizione da un componente posta in arrivo al servizio da Microsoft Store.