Confronto tra WSL 1 e WSL 2

I motivi principali per eseguire l'aggiornamento da WSL 1 a WSL 2 sono:

  • Aumentare le prestazioni del file system
  • Supportare la compatibilità completa con le chiamate di sistema.

WSL 2 usa la migliore tecnologia di virtualizzazione più recente per eseguire un kernel Linux all'interno di una macchina virtuale di utilità leggera. WSL 2 non offre tuttavia un'esperienza di macchina virtuale tradizionale.

Questa guida metterà a confronto WSL 1 e WSL 2, incluse le eccezioni per l'uso di WSL 1 anziché di 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 nei sistemi operativi Linux e Windows.

Funzionalità a confronto

Funzionalità WSL 1 WSL 2
Integrazione tra Windows e Linux
Tempi di avvio rapidi
Stampa con piede di risorse di piccole dimensioni rispetto ai modelli Macchine virtuali
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

Come si può vedere dalla tabella di confronto precedente, l'architettura WSL 2 supera WSL 1 in diversi modi, ad eccezione delle prestazioni nei file system del sistema operativo, che possono essere affrontate archiviando i file di progetto nello stesso sistema operativo degli strumenti in esecuzione per lavorare sul progetto.

WSL 2 è disponibile solo in 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 18362.

Nota

WSL 2 funzionerà con VMware 15.5.5 e versioni successive e VirtualBox 6 e versioni successive. Per altre informazioni, vedere le 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.

Per altre informazioni, vedere le note sulla versione per sottosistema Windows per Linux kernel.

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. Questa caratteristica offre i vantaggi seguenti:

  • 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. Vedere Connessione dispositivi USB per la procedura di configurazione.
  • WSL 2 non include il supporto per l'accesso alle porte seriali. Per altre informazioni, vedere le domande frequenti o in WSL GitHub problema relativo al repo sul supporto seriale.
  • Sono necessari requisiti di memoria rigorosi
    • L'utilizzo della memoria di WSL 2 aumenta e si riduce man mano che viene utilizzato. Quando un processo libera memoria, questo viene restituito automaticamente Windows. Tuttavia, al momento WSL 2 non rilascia ancora le pagine memorizzate nella cache in memoria Windows fino all'arresto dell'istanza di WSL. Se si dispone di sessioni WSL a esecuzione lunga o si accede a una quantità molto grande di file, questa cache può richiedere memoria Windows. Microsoft sta verificando il lavoro per migliorare questa esperienza nel problema del repository Github WSL 4166.
  • Per gli utenti che usano VirtualBox, potrebbe essere necessario prendere in considerazione la versione in esecuzione e se è compatibile con WSL 2. Per la discussione completa, vedere Il problema del repository Github WSL 798 . Sembra che VirtualBox v6.1.16 funzioni con WSL 2, ma che potrebbero verificarsi problemi in altre versioni.
  • Se si basa su 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 con bridge usata in WSL 1, vale a dire che WSL 2 usa un servizio NAT (Network Address Translation) per la rete virtuale, anziché renderla con bridge alla scheda di interfaccia di rete (NIC) host, determinando 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 WSL GitHub repository issue 4150, NIC Bridge mode (TCP Workaround).

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. Altre informazioni