Confronto tra versioni WSL

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

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 nei sistemi operativi Linux e Windows. WSL 2 è la versione predefinita corrente durante l'installazione di una distribuzione Linux e usa la tecnologia di virtualizzazione più recente e più grande per eseguire un kernel Linux all'interno di una macchina virtuale (VM) di utilità leggera. WSL2 esegue distribuzioni Linux come contenitori isolati all'interno della macchina virtuale gestita. Se la distribuzione esegue attualmente WSL 1 e si vuole eseguire l'aggiornamento a WSL 2, vedere l'aggiornamento da WSL 1 a WSL 2.

Confronto delle funzionalità

Feature WSL 1 WSL 2
Integrazione tra Windows e Linux
Tempi di avvio rapido
Impronta ridotta delle risorse rispetto alle macchine virtuali tradizionali
Viene eseguito con le versioni correnti di VMware e VirtualBox
Macchina virtuale gestita
Kernel Linux completo
Compatibilità completa delle chiamate di sistema
Prestazioni nei file system del sistema operativo
supporto systemd
Supporto di IPv6

Come si può indicare 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 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 successiva. Controllare la versione Windows selezionando il tasto logo Windows + R, digitare winver, selezionare OK. In alternativa, immettere il comando ver nel prompt dei comandi di Windows. Potrebbe essere necessario update alla versione più recente Windows. Per le build inferiori a 14393, WSL non è supportato affatto.

Per ulteriori informazioni sugli aggiornamenti più recenti di WSL 2, consulta il blog Windows Command Line, tra cui Il supporto per Systemd è ora disponibile in WSL e Aggiornamento WSL di Settembre 2023 per ulteriori informazioni sul supporto IPv6.

Annotazioni

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. Altre informazioni sono disponibili nelle domande frequenti.

Novità di WSL 2

WSL 2 è una revisione importante dell'architettura sottostante e usa la tecnologia di virtualizzazione e un kernel Linux per abilitare nuove funzionalità. Gli obiettivi principali di questo aggiornamento sono aumentare le prestazioni del file system e aggiungere la compatibilità completa delle chiamate di sistema.

Architettura di WSL 2

Un'esperienza di macchina virtuale tradizionale può essere lenta per l'avvio, è isolata, consuma molte risorse e richiede il tempo necessario per gestirla. WSL 2 non dispone di questi attributi.

WSL 2 offre i vantaggi di WSL 1, inclusa l'integrazione perfetta tra Windows e Linux, tempi di avvio rapido, footprint ridotto delle risorse e non richiede alcuna configurazione o gestione delle macchine virtuali. Mentre WSL 2 usa una macchina virtuale, viene gestita ed eseguita in background, lasciando l'utente con la stessa esperienza utente di WSL 1.

Kernel Linux completo

Il kernel Linux in WSL 2 viene compilato da Microsoft dal ramo stabile più recente, in base all'origine disponibile in kernel.org. Questo kernel è stato ottimizzato appositamente per WSL 2, ottimizzando le dimensioni e le prestazioni per offrire un'esperienza Linux incredibile su Windows. Il kernel verrà gestito da Windows aggiornamenti, il che significa che si otterranno le correzioni di sicurezza e i miglioramenti del kernel più recenti senza dover gestirlo manualmente.

Il kernel Linux WSL 2 è open source. Per altre informazioni, vedere il post di blog Shipping a Linux Kernel with Windows scritto dal team che lo ha creato.

Per ulteriori informazioni, vedere le 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 come git clone, npm installapt update, apt upgrade, e altro ancora sono molto più veloci con WSL 2.

L'aumento effettivo della velocità dipenderà dall'app in esecuzione e dalla modalità di interazione con il file system. Le versioni iniziali di WSL 2 vengono eseguite fino a 20 volte più velocemente rispetto a WSL 1 durante la decompressione di un tarball compresso e circa 2-5 volte più velocemente quando si usano git clone, npm install e cmake in vari progetti.

Compatibilità completa delle chiamate di sistema

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

  • Un nuovo set di app che è possibile eseguire all'interno di WSL, ad esempio Docker e altro ancora.

  • Tutti gli aggiornamenti al kernel Linux sono immediatamente pronti per l'uso (non è necessario attendere che il team WSL implementi gli aggiornamenti e aggiungere le modifiche).

Eccezioni per l'uso di WSL 1 anziché WSL 2

È consigliabile usare WSL 2 perché offre prestazioni più veloci e 100% compatibilità delle chiamate di sistema. Esistono tuttavia alcuni scenari specifici in cui è preferibile usare WSL 1. Prendere in considerazione l'uso di WSL 1 se:

  • I file di progetto devono essere archiviati nel file system Windows. WSL 1 offre un accesso più rapido ai file montati da Windows.
    • Se si usa la distribuzione WSL Linux per accedere ai file di progetto nel file system Windows e questi file non possono essere archiviati nel file system Linux, si otterranno prestazioni più veloci nei file system del sistema operativo usando WSL 1.
  • Progetto che richiede la compilazione incrociata usando sia gli strumenti Windows che Linux negli stessi file.
    • Le prestazioni dei file nei sistemi operativi Windows e Linux sono più veloci in WSL 1 rispetto a WSL 2, quindi se si usano applicazioni Windows per accedere ai file Linux, si otterranno attualmente prestazioni più veloci 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 USBIPD-WIN progetto. Per la procedura di configurazione, vedere Connettere dispositivi USB .
  • WSL 2 non include il supporto per l'accesso alle porte seriali. Altre informazioni sono disponibili in Domande Frequenti o nel problema nella repository GitHub di WSL sulla supporto seriale.
  • Sono previsti requisiti di memoria rigorosi
    • L'utilizzo della memoria di WSL 2 aumenta e si riduce man mano che viene usato. Quando un processo libera memoria, viene restituita automaticamente a Windows. Tuttavia, attualmente WSL 2 non rilascia ancora le pagine memorizzate nella cache in memoria nel sistema operativo Windows fino a quando l'istanza WSL non viene arrestata. Se si hanno sessioni WSL a esecuzione prolungata o si accede a una quantità molto elevata di file, questa cache può richiedere memoria in Windows. Stiamo tracciando le operazioni per migliorare questa esperienza nel problema del repository GitHub WSL numero 4166.
  • Per coloro che usano VirtualBox, assicurarsi di usare la versione più recente di VirtualBox e WSL 2. Consulta le FAQ 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, vale a dire che WSL 2 usa un servizio NAT (Network Address Translation) per la rete virtuale, invece di renderlo collegato alla scheda di 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 WSL GitHub repository issue 4150, NIC Bridge mode (TCP Workaround).

Annotazioni

Provare a provare VS Code Remote WSL Extension per consentire di archiviare i file di progetto nel file system Linux, usando gli strumenti da riga di comando di Linux, ma anche usando VS Code in Windows per creare, modificare, eseguire il debug o eseguire il progetto in un browser Internet senza alcun rallentamento delle prestazioni associato all'uso nei file system Linux e Windows. Scopri di più.

WSL nel Microsoft Store

WSL ha rimosso la funzionalità di aggiornamento dall'immagine del sistema operativo Windows in un pacchetto disponibile tramite il Microsoft Store. Ciò significa che gli aggiornamenti e l'assistenza avverranno più velocemente non appena disponibili, anziché dover attendere un aggiornamento del sistema operativo Windows.

WSL è stato originariamente incluso nel sistema operativo Windows come componente facoltativo che deve essere abilitato per 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 dal Microsoft Store. Vedere il post di blog che annuncia questo aggiornamento. Se si usa già WSL, ci si può aggiornare per assicurarsi di ricevere le funzionalità e la manutenzione più recenti di WSL dallo Store eseguendo wsl.exe --update.

Annotazioni

Se il Microsoft Store non è accessibile all'interno dell'organizzazione, è comunque possibile usare questa versione WSL aggiungendo --web-download al comando --update, ad esempio wsl --update --web-download. È necessario aggiornare manualmente WSL ogni volta che una nuova versione diventa disponibile usando questo metodo.