Discussione Windows Subsystem for Linux (WSL2) - L'alternativa alle classiche VM

0xbro

Super Moderatore
24 Febbraio 2017
4,465
179
3,764
1,825
In questo articolo scopriremo cos'è WSL, come funziona e come abilitarlo su Windows 10 in modo da poter installare una macchina virtuale Ubuntu.​

wsl_linux.png

Windows Subsystem for Linux (WSL2) - L'alternativa alle classiche VM​

Tempo di lettura stimato: 7 min​








1    Introduzione

1.1    Che cos'è WSL

WSL, abbreviazione di Windows Subsystem for Linux, è una feature di Windows che permette di installare ed eseguire degli ambienti GNU/Linux direttamente all'interno del sistema operativo di casa Microsoft, senza la necessità di installare a avviare macchine virtuali o fare un dual boot del sistema.
Al momento WSL non supporta esattamente tutte le distro esistenti, ma tra le più famose che sono state integrate troviamo Ubuntu, Kali Linux e openSUSE.


Tramite WSL è possibile integrare tutti i punti di forza di Linux all'interno di un ambiente di lavoro Windows, fornendo a sviluppatori (e non) grande flessibilità e libertà. E' possibile usare contemporaneamente powershell e i classici comandi da riga di comando della shell di Linux, utilizzare i packetmanager del pinguino mentre si installano i classici programmi sul OS di Microsoft. E' un'ottima integrazione che può tornare utile in molti aspetti.​

1.2    WSL vs WSL2

Dal 2019 esistono due versioni differenti di WSL: la prima, ormai obsoleta, che permetteva solamente di eseguire binari Linux nativamente su Windows tramite un kernel sviluppato appositamente da Microsoft, e la versione 2, quella attuale, che integra un vero e proprio kernel Linux virtualizzato, ideato sulle funzionalità di Hyper-V, e che permette non solo di eseguire binari ELF64 su Windows ma che garantisce anche una compatibilità completa con tali chiamate di sistema. WSL2 è ovviamente più performante e potente di WSL1 e perciò è sempre preferibile scegliere l'ultima versione (quando possibile).​

f57bc29055a34ca7b7aada1d1d638a2f~tplv-k3u1fbpfcp-zoom-1.image.jpg

E' possibile approfondire ulteriormente le differenze tra le due versioni tramite la documentazione ufficiale fornita da Microsoft:

1.3    Cosa lo differenzia dalle altre VM

A volte eseguire una distro Linux su una macchina virtuale è la scelta migliore, soprattutto per quanto riguarda il processo di installazione e configurazione. Una VM è una "vera" macchina Linux, i processi, le configurazioni, le interazioni col kernel, ecc. sono le stesse di una macchina installata fisicamente, perciò se si ricerca un ambiente il più simile e fedele all'originale, utilizzare un hypervisor è sicuramente la scelta migliore.

Un altro motivo per cui è preferibile usare una VM rispetto a WSL è se si necessita di un ambiente grafico. E' vero, WSL è integrato in Windows, ma la grossa limitazione è che non dispone di un'interfaccia grafica a sé (a meno che non si usi X11). Una VM, d'altro canto, permette di eseguire applicazioni Desktop senza nessuna limitazione (forse qualche leggero rallentamento, ma nulla di che).

WSL2 risulta ottimo invece per chi vuole imparare a usare Linux senza la necessità di doversi preoccupare di installare e configurare tutto l'ambiente. Un principiante che vuole imparare a usare la shell del pinguino farà molto più in fretta ad appoggiarsi a WSL2 rispetto ad installare e configurare una VM.​
Il sovraccarico sulla CPU e RAM, nonché dunque le prestazioni generali, sono molto più ottimizzate e meno invasive su WSL2 rispetto ad uno VM, proprio grazie al fatto che WSL integri il proprio kernel a differenza della VM che deve emulare necessariamente tutto quanto il sistema.

Se hai solo bisogno di programmi a riga di comando, come linguaggi o compilatori, WSL è l'ideale. Il subsystem si rivolge proprio agli sviluppatori, in particolare a quelli che lavorano nello sviluppo web, poiché non hanno bisogno di accedere al kernel molto spesso. Se si usa principalmente Windows e occasionalmente ci si immerge in Linux, installare un sistema Linux completo ha poco senso. È molto più veloce lanciare il terminale WSL piuttosto che avviare una VM completa ogni volta.
Virtual-Machine-vs-WSL-2.jpg

2    Installazione

2.1    Pre-requisiti

Per installare comodamente WSL (e la rispettiva versione 2) sul proprio PC è necessario disporre almeno del sistema operativo Windows 10 versione 2004 (build 19041 o superiore), oppure di Windows 11. Per verificare la versione del proprio sistema operativo eseguire tramite lo strumento "Run" (tasto Windows + R) il comando winver
1yqS4cb.png


kJFLJxk.png

Se la versione del vostro OS è troppo vecchia, seguite la documentazione ufficiale per installare WSL manualmente.

2.2    Installare WSL

Installare WSL nei moderni OS è una questione di un singolo comando: aprite un prompt dei comandi (oppure un terminale con powershell) con privilegi di amministrazione ed eseguite
Bash:
wsl --install

P6IrzUj.png

Il comando abiliterà tutti i componenti necessari per l'installazione, scaricherà l'ultima versione disponibile del Kernel Linux, imposterà WSL2 come versione predefinita e installerà come prima distribuzione Ubuntu. Per installare una distro differente da Ubuntu è necessario utilizzare il comando​
Bash:
wsl --install -d <Distribution Name>

L'elenco delle distribuzioni disponibili per l'installazione può essere consultato tramite i comandi
Bash:
wsl --list --online

# oppure

wsl -l -o

8b2pjU5.png

Dopo aver installato WSL e la relativa distro sarà necessario effettuare un reboot del sistema.

2.3    Avvio di Ubuntu

Dopo il reboot del pc inizierà l'installazione automatica della distro (potrebbe impiegarci diversi minuti) a cui seguirà la creazione del nome utente e delle credenziali di accesso.​

gbZQ0XM.png

Ottimo! Abbiamo installato la nostra distro! D'ora in poi potremo accedervi quando vogliamo tramite l'apposita icona

2ZrVzZt.png

o da un qualsiasi terminale tramite uno dei seguenti comandi:

Bash:
wsl
wsl -e /bin/bash
bash
wsl -d <NomeDistro>

Attenzione: il comando wsl farà riferimento sempre alla Distro impostata come "distribuzione di default". In caso si disponga di più installazioni è necessario specificare o cambiare quale sia la distro di default tramite il comando wsl -s <DistributionName> oppure wsl --setdefault <DistributionName>.

2.4    Installare e configurare Windows Terminal

Windows Terminal è una versione avanzata del classico prompt dei comandi che permette una maggiore personalizzazione e ulteriori features rispetto alla sua versione "classic". Ogni volta che si installa una distro, in automatico viene creata una nuova istanza per quest'ultima all'interno del Windows Terminal che può successivamente venir customizzata a piacimento.​

Windows Terminal può esser scaricato tramite lo Store ufficiale di Microsoft al seguente link.

IsAOBwF.png

Per customizzare l'aspetto e le features di questo terminale, seguite la documentazione ufficiale:

3    Cosa ne pensate?

Cosa ne pensate di questa features messa a disposizione da Windows? La userete al posto di qualche macchina virtuale o pensate che non ne valga la pena e non aggiunga nulla di realmente utile?



Made with ❤ for Inforge

 
È sicuramente comodo se ci si vuole interfacciare ad un SO quando non si ha la necessità di avere un ambiente grafico. Tuttavia, configurare una VM non è poi tutto sto lavoraccio, però bisogna considerare che occupa molta più memoria rispetto ad una WSL e le prestazioni sono più lente. C'è qualche vantaggio...ma dipende sempre dalle esigenze dell'utente. Io preferisco la classica VM perché avere un SO completo permette di avere funzionalità in più.
 
  • Mi piace
Reazioni: 0xbro
C'è qualche vantaggio..
Come sempre... Ogni strumento ha suo vantaggi e svantaggi. Dipende molto dal case-use che si vuole fare.

WSL2 ha poco senso, senza utilizzare docker.
Anche se in realtà in sul mio computer Windows preferisco usare la console Linux e anche a lavoro utilizzo la console Linux ad esempio per fare il deploy dell'applicazione (certo, si potrebbe usare un repository ed in realtà il progetto sta su un repository online) con rsync. Creo una VM per fare quest'operazione? No, ovviamente non avrebbe alcun senso.
Utilizzare WSL2 e docker anziché una VM ha molto senso e comunque il mercato va verso quella direzione, senza menzionare il risparmio, che anche tu hai citato sopra.
 
Come sempre... Ogni strumento ha suo vantaggi e svantaggi. Dipende molto dal case-use che si vuole fare.

WSL2 ha poco senso, senza utilizzare docker.
Anche se in realtà in sul mio computer Windows preferisco usare la console Linux e anche a lavoro utilizzo la console Linux ad esempio per fare il deploy dell'applicazione (certo, si potrebbe usare un repository ed in realtà il progetto sta su un repository online) con rsync. Creo una VM per fare quest'operazione? No, ovviamente non avrebbe alcun senso.
Utilizzare WSL2 e docker anziché una VM ha molto senso e comunque il mercato va verso quella direzione, senza menzionare il risparmio, che anche tu hai citato sopra.
Infatti, nel mio messaggio, ho specificato che il tutto "dipende dalle esigenze dell'utente". Che tipo di applicazioni sviluppi?
 
Che poi funzione con un meccanismo a container, infatti, sono macchine virtuali molto snelle e intergrate al sistema, sicuramente diventa più efficiente rispetto ad una vm tradizionale pensando all'utilizzo che ci devi fare