Confronto tra le versioni di WSL

Altre informazioni sulle diverse versioni di WSL, tra cui il motivo per cui WSL 2 ora è l'impostazione predefinita e gli scenari specifici o le eccezioni che possono giustificare il passaggio della distribuzione Linux installata alla precedente architettura WSL 1.

Confronto tra WSL 1 e WSL 2

Questa guida confronterà WSL 1 e WSL 2, incluse le eccezioni per l'uso di WSL 1 anziché WSL 2. Le principali differenze tra WSL 1 e WSL 2 sono l'uso di un kernel Linux effettivo all'interno di una macchina virtuale gestita, il supporto per la compatibilità completa delle chiamate di sistema e le prestazioni tra i sistemi operativi Linux e Windows. WSL 2 è la versione predefinita attuale durante l'installazione di una distribuzione Linux e usa la migliore tecnologia di virtualizzazione più recente per eseguire un kernel Linux all'interno di una macchina virtuale di utilità leggera. WSL2 esegue distribuzioni Linux come contenitori isolati all'interno della macchina virtuale gestita. Se la distribuzione in uso è WSL 1 e si vuole aggiornare a WSL 2, vedere l’aggiornamento da WSL 1 a WSL 2.

Funzionalità a confronto

Funzionalità WSL 1 WSL 2
Integrazione tra Windows e Linux
Tempi di avvio rapidi
Footprint di risorse ridotto rispetto alle macchine virtuali tradizionali
Esecuzione con le versioni correnti di VMware e VirtualBox
Macchina virtuale gestita
Kernel Linux completo
Compatibilità completa con le chiamate di sistema
Prestazioni tra i file system dei sistemi operativi
supporto systemd
Supporto di IPv6

Come si può notare dalla tabella di confronto sopra riportata, l'architettura WSL 2 supera WSL 1 per diversi aspetti, ad eccezione delle prestazioni tra i file system dei sistemi operativi, che possono essere risolti archiviando i file di progetto nello stesso sistema operativo degli strumenti in esecuzione per lavorare sul progetto.

WSL 2 è disponibile solo in Windows 11 o Windows 10, versione 1903, build 18362 o successive. Controlla la versione di Windows selezionando il tasto WINDOWS + R, digita winver e seleziona OK. In alternativa, immetti il comando ver nel prompt dei comandi di Windows. Potresti dover aggiornare alla versione più recente di Windows. WSL non è supportato nelle build inferiori alla 14393.

Per altre info sugli aggiornamenti più recenti di WSL 2, vedi il blog della riga di comando di Windows, incluso il supporto systemd è ora disponibile nell'aggiornamento di WSL e WSL di settembre 2023 per altre informazioni sul supporto IPv6.

Nota

WSL 2 funzionerà con VMware 15.5.5+ e anche se VirtualBox 6+ indica che è presente il supporto WSL, esistono ancora sfide significative che lo rendono non supportato. Per altre informazioni, fai riferimento alle domande frequenti.

Novità in WSL 2

WSL 2 è un'importante revisione dell'architettura sottostante e usa la tecnologia di virtualizzazione e un kernel Linux per abilitare nuove funzionalità. Questo aggiornamento ha due obiettivi principali: ottimizzare le prestazioni dei file system e aggiungere la compatibilità completa con le chiamate di sistema.

Architettura di WSL 2

Un'esperienza di macchina virtuale tradizionale può risultare lenta all'avvio, è isolata, usa molte risorse e richiede tempo per la gestione. WSL 2 non ha queste caratteristiche.

WSL 2 offre i vantaggi di WSL 1, inclusa la perfetta integrazione tra Windows e Linux, tempi di avvio rapidi, un footprint di risorse ridotto e nessuna configurazione o gestione della macchina virtuale. Anche se WSL 2 usa una macchina virtuale, questa viene gestita ed eseguita dietro le quinte offrendo la stessa esperienza utente di WSL 1.

Kernel Linux completo

Il kernel Linux in WSL 2 è stato creato da Microsoft a partire dall'ultimo ramo stabile, sulla base del codice sorgente disponibile in kernel.org. Questo kernel è stato adattato in modo specifico per WSL 2, ottimizzando le dimensioni e le prestazioni per offrire un'esperienza straordinaria di Linux in Windows. Il kernel verrà gestito tramite gli aggiornamenti di Windows. Riceverai pertanto le correzioni per la sicurezza e i miglioramenti del kernel più recenti senza doverli gestire autonomamente.

Il kernel Linux in WSL 2 è open source. Per saperne di più, consulta il post di blog Shipping a Linux Kernel with Windows (Distribuzione di un kernel Linux con Windows) scritto dal team che lo ha creato.

Altre informazioni sono disponibili nelle note sulla versione per il kernel del sottosistema Windows per Linux.

Miglioramento delle prestazioni di I/O dei file

Le operazioni a elevato utilizzo di file, ad esempio git clone, npm install, apt update, apt upgrade e altre ancora, sono tutte molto più veloci con WSL 2.

L'aumento effettivo della velocità dipende dall'app in esecuzione e dal modo in cui interagisce con il file system. Le versioni iniziali di WSL 2 vengono eseguite con una velocità 20 volte superiore rispetto a WSL 1 quando viene decompresso un tarball e circa 2-5 volte superiore quando vengono usate operazioni git clone, npm install e cmake in diversi progetti.

Compatibilità completa con le chiamate di sistema

I file binari Linux usano chiamate di sistema per eseguire funzioni quali l'accesso ai file, la richiesta di memoria, la creazione di processi e altro ancora. Mentre WSL 1 usa un livello di conversione creato dal team WSL, WSL 2 include il proprio kernel Linux con compatibilità completa con le chiamate di sistema. I vantaggi includono:

  • Un nuovo set completo di app che è possibile eseguire in WSL, ad esempio Docker e altre ancora.

  • Tutti gli aggiornamenti del kernel Linux immediatamente pronti per l'uso. Non è necessario attendere che il team di WSL implementi gli aggiornamenti e aggiunga le modifiche.

Eccezioni per l'uso di WSL 1 in alternativa a WSL 2

È in genere consigliabile usare WSL 2 perché offre prestazioni più veloci e massima compatibilità con le chiamate di sistema. Esistono tuttavia alcuni scenari specifici in cui è preferibile usare WSL 1. Valuta l'opportunità di usare WSL 1 se:

  • I tuoi file di progetto devono essere archiviati nel file system Windows. WSL 1 offre un accesso più rapido ai file montati da Windows.
    • Se usi la distribuzione Linux di WSL per accedere ai file di progetto nel file system Windows e questi file non possono essere archiviati nel file system Linux, otterrai prestazioni più veloci nel passaggio tra i file system dei sistemi operativi usando WSL 1.
  • Il tuo progetto richiede una compilazione incrociata con l'esecuzione di strumenti di Windows e Linux sugli stessi file.
    • Le prestazioni dei file nel passaggio tra i sistemi operativi Windows e Linux sono più veloci in WSL 1 rispetto a WSL 2. Se pertanto usi applicazioni Windows per accedere a file di Linux, otterrai migliori prestazioni con WSL 1.
  • Il progetto deve accedere a una porta seriale o a un dispositivo USB. Tuttavia, il supporto dei dispositivi USB è ora disponibile per WSL 2 tramite il progetto USBIPD-WIN. Per la procedura di configurazione, vedere Connessione dispositivi USB.
  • WSL 2 non include il supporto per l'accesso alle porte seriali. Altre informazioni sono disponibili nelle domande frequenti o nel repository GitHub WSL sul supporto seriale.
  • Sono previsti requisiti di memoria rigorosi
    • L'utilizzo della memoria di WSL 2 aumenta e si riduce con l’uso. Quando un processo libera memoria, viene restituita automaticamente a Windows. Tuttavia, al momento WSL 2 non rilascia ancora le pagine memorizzate nella cache a Windows fino a quando l'istanza WSL non viene arrestata. Se si hanno sessioni WSL a esecuzione prolungata o se si accede a una quantità molto elevata di file, questa cache può richiedere memoria in Windows. Microsoft sta monitorando il lavoro per migliorare questa esperienza nel repository GitHub WSL, problema 4166.
  • Per coloro che usano VirtualBox, assicurarsi di usare la versione più recente di VirtualBox e WSL 2. Vedere le domande frequenti correlate.
  • Se si usa una distribuzione Linux per avere un indirizzo IP nella stessa rete del computer host, potrebbe essere necessario configurare una soluzione alternativa per eseguire WSL 2. WSL 2 è in esecuzione come macchina virtuale hyper-v. Si tratta di una modifica rispetto alla scheda di rete bridge usata in WSL 1, il che significa che WSL 2 usa un servizio NAT (Network Address Translation) per la rete virtuale, invece di creare un collegamento bridge con l’interfaccia di rete (NIC) host, generando un indirizzo IP univoco che cambierà al riavvio. Per altre informazioni sul problema e sulla soluzione alternativa che inoltra le porte TCP dei servizi WSL 2 al sistema operativo host, vedere il problema 4150 del repository GitHub WSL, modalità bridge NIC (soluzione alternativa TCP).

Nota

Valuta l'opportunità di provare l'estensione Remote - WSL di VS Code per consentire l'archiviazione dei file di progetto nel file system Linux tramite gli strumenti da riga di comando di Linux. Può anche essere utile usare VS Code in Windows per creare, modificare, sottoporre a debug o eseguire il progetto in un browser Internet, senza alcun rallentamento delle prestazioni associato al passaggio tra file system Linux e Windows. Ulteriori informazioni.

WSL su Microsoft Store

WSL ha rimosso la funzionalità di aggiornamento dall'immagine del sistema operativo Windows in un pacchetto disponibile su Microsoft Store. Ciò significa che gli aggiornamenti e la manutenzione sono più veloci non appena disponibili, e non è necessario attendere un aggiornamento del sistema operativo di Windows.

WSL era originariamente incluso nel sistema operativo Windows come componente facoltativo che doveva essere abilitato per poter installare una distribuzione Linux. WSL nello Store ha la stessa esperienza utente ed è lo stesso prodotto, ma riceve aggiornamenti e manutenzione come pacchetto dello Store, anziché come intero aggiornamento del sistema operativo. A partire da Windows versione 19044 o successiva, l'esecuzione del comando wsl.exe --install installerà l'aggiornamento di manutenzione WSL da Microsoft Store. (Vedere il post del blog che annuncia questo aggiornamento). Se si usa già WSL, è possibile effettuare l'aggiornamento per assicurarsi di ricevere le funzionalità e la manutenzione di WSL più recenti dall'archivio eseguendo wsl.exe --update.