Windows 10 è dotato di un componente, chiamato Sottosistema Windows per Linux (WSL), che consente di eseguire i programmi per Linux sotto Windows. La funzionalità è maturata nel tempo fino ad arrivare alla seconda versione (WSL2), che ora integra il kernel Linux completo per la massima compatibilità e velocità. Si presenta all'utente sottoforma di una shell Bash completa (la stessa di Ubuntu, openSUSE o Fedora) corredata da tutti i micro-programmi classici del mondo Linux. Ci sono ls, grep, awk, sed, diff, ssh, curl e wget, ma -ancor più importante- siamo liberi di installare qualsiasi altro software disponibile nei repository accessibili tramite apt o yum o addirittura compilare dai sorgenti. In questa guida vedremo come installare il Sottosistema Windows per Linux (WSL2) ed usare le funzioni principali

Linux Windows 10: Grande Guida WSL2. Come installare Sottosistema Windows Linux (WSL), eseguire programmi, accedere file - bash windows 10 spotlight

nota: La trattazione è incentrata sulla nuova versione, WSL2. È comunque grossomodo analoga anche per la generazione precedente.

WSL1 e WSL2

Windows 10 1909 (Novembre 2019) e compilazioni precedenti integravano la prima versione di WSL. Per realizzarlo, Microsoft aveva implementato uno strato di traduzione intermedio che esponeva le stesse Application programming interface (API) del kernel Linux, le quali, rispondendo esattamente allo stesso modo del "vero Linux", consentivano alle applicazioni native di funzionare come al solito.

A partire da Windows 10 2004 (Maggio 2020), però, Microsoft ha integrato la seconda generazione: WSL2. La nuova generazione abbandona l'emulazione delle API e integra una copia dell'interno kernel Linux, che Microsoft preleva dal sito ufficiale (kernel.org), ottimizza allo scopo e compila internamente. Il kernel viene poi eseguito all'interno di una macchina virtuale invisibile all'utente.

Rispetto alla tecnologia impiegata da "WSL1", la presenza del kernel completo garantisce una compatibilità maggiore e performance del file system di un altro livello: si parla di un incremento di velocità pari a due/cinque volte durante la creazione di un clone Git, installazione via npm o build con cmake.

Linux Windows 10: Grande Guida WSL2. Come installare Sottosistema Windows Linux (WSL), eseguire programmi, accedere file

Come diretta conseguenza, il file system Linux (ext4) risiede ora all'interno di un file VHD (disco fisso virtuale) che cresce progressivamente per contenere tutto il necessario. Al momento in cui scrivo, può arrivare fino a 256 GB automaticamente. Raggiunto tale limite, è necessario ampliarlo manualmente.

Un altro vantaggio è la gestione dinamica della memoria: in caso l'applicazione Linux abbisognasse di ingenti quantità di RAM, WSL2 alloca progressivamente quanto necessario. Se la necessità scende, la RAM in esubero viene liberata e restituita al sistema operativo.

WSL2 non soppianta WSL, ma vi si affianca. Ogni distribuzione installata può essere eseguita con l'uno o con l'altro sistema. Ma, se non per motivi specifici, non vi sono ragioni per preferire l'edizione più vecchia: WSL2 è migliore, più veloce e compatibile.

WSL2: compatibilità e requisiti

Sottosistema Windows per Linux (WSL) richiede Windows 10 a 64 bit (x64) oppure Windows 10 ARM64. Non funziona sul sistema operativo in compilazione a 32 bit e nemmeno in modalità "S".

Sebbene sia disponibile anche per Windows Server, WSL è rivolto principalmente all'uso desktop e, in particolare, ai programmatori e power user.

Per quanto riguarda il processore, WSL2 richiede il supporto hardware alla virtualizzazione:

» Leggi: Come scoprire se la CPU è dotata di supporto hardware alla virtualizzazione

Passo 1: installare Sottosistema Windows per Linux

Per prima cosa, è necessario installare il componente Sottosistema Windows per Linux. Si tratta di una funzionalità opzionale di Windows, che deve essere attivata manualmente. Il modo più facile è tramite linea di comando:

  1. fare click con il pulsante destro del mouse sul pulsante Start
  2. scegliere Windows Powershell (Amministratore)
  3. impartire i seguenti comandi:

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -NoRestart

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -NoRestart

Linux Windows 10: Grande Guida WSL2. Come installare Sottosistema Windows Linux (WSL), eseguire programmi, accedere file - powershell Enable-WindowsOptionalFeature

Riavviare il PC.

In alternativa, possiamo raggiungere il medesimo risultato tramite interfaccia grafica:

  1. cercare Pannello di controllo sotto Start
  2. aprire il vecchio Programmi e funzionalità
  3. seguire il link Attivazione o disattivazione delle funzionalità di Windows

Linux Windows 10: Grande Guida WSL2. Come installare Sottosistema Windows Linux (WSL), eseguire programmi, accedere file - Programmi e funzionalità

Dalla lista proposta:

  1. scorrere fino ad individuare Piattaforma macchina virtuale: spuntare la casella
  2. scorrere fino ad individuare Sottosistema Windows per Linux: spuntare la casella
  3. cliccare OK
  4. concludere con il riavvio quando richiesto

Linux Windows 10: Grande Guida WSL2. Come installare Sottosistema Windows Linux (WSL), eseguire programmi, accedere file - componenti per wsl2

Passo 2: Impostare WSL2 come gestore di default

Tornati al desktop dopo il riavvio, fare click con il pulsante destro del mouse sul pulsante Start e scegliere Windows Powershell (Amministratore). All'interno della console, impartire questo comando:

wsl --set-default-version 2

Linux Windows 10: Grande Guida WSL2. Come installare Sottosistema Windows Linux (WSL), eseguire programmi, accedere file - zShotVM_1570997682

Così facendo, ogni nuova distribuzione Linux installata da qui in avanti utilizzerà il nuovo "motore" WSL2.

Il comando appena impartito è valido solo per le distribuzioni installate da qui in poi. Per quelle eventualmente già installate in precedenza (magari perché si tratta di un PC Windows 10 recentemente aggiornato), è necessario modificare il gestore puntualmente, una per una, passandolo da "WSL1" a WSL2. Ho mostrato la procedura qui:

» Leggi: Aggiornamento Windows 10: come usare WSL2 con le distribuzioni già installate (Sottosistema Windows per Linux)

Da ricordare: impartendo wsl --list --verbose possiamo verificare se una determinata distribuzione già installata utilizza WSL 1 oppure 2. L'indicazione è riportata nella colonna version

Linux Windows 10: Grande Guida WSL2. Come installare Sottosistema Windows Linux (WSL), eseguire programmi, accedere file - visualizzazione versione wsl

Passo 3: Installare una distribuzione Linux

Procediamo installando la nostra distribuzione Linux preferita tramite Microsoft Store. Al momento in cui scrivo, le principali disponibili gratuitamente sono:

  1. Ubuntu (consigliata a chiunque non abbia una preferenza "forte" verso un'alternativa)
  2. openSUSE Leap
  3. SUSE Linux Enterprise Server
  4. Kali Linux for WSL
  5. Debian GNU/Linux

Effettuata la scelta, completare cliccando Ottieni e quindi Installa

Linux Windows 10: Grande Guida WSL2. Come installare Sottosistema Windows Linux (WSL), eseguire programmi, accedere file

Passo 4: Avviare WSL2

Ad installazione terminata, avviamo la distribuzione scelta tramite il collegamento aggiunto al menu Start

Linux Windows 10: Grande Guida WSL2. Come installare Sottosistema Windows Linux (WSL), eseguire programmi, accedere file - zShotVM_1570997133

Non aspettiamoci l'interfaccia grafica colorata di Ubuntu (Gnome) o similari: l'ambiente di lavoro è Bash, ovvero una shell testuale del mondo Linux (è la più diffusa e impiegata di default un po' da tutte le distribuzioni).

Alla primissima esecuzione dobbiamo scegliere un nome utente per creare l'account sul sistema Linux, e la relativa password. Potete scegliere quello che volete (in caso di dubbio: il proprio nome va benissimo)

Linux Windows 10: Grande Guida WSL2. Come installare Sottosistema Windows Linux (WSL), eseguire programmi, accedere file - wsl install first boot

Curiosità: WSL2 non consente più di scegliere lo username root, come ero solito fare. Un'utenza con lo stesso nome viene infatti creata automaticamente all'avvio ed è disponibile per eseguire comandi con i privilegi massimi, proprio come succede sui "veri" computer Linux.

Arrivati fino a qui è tutto pronto per lavorare con Linux su Windows! Gli esperti di Pinguino si troveranno immediatamente a proprio agio. Nei prossimi paragrafi vedremo comunque qualche comando e come accedere al file system Windows da Linux (e viceversa). Prima ancora, però, ricordate che per concludere la sessione di lavoro Linux è sufficiente chiudere la finestra.

Fatelo con tranquillità: ogni installazione, modifica o creazione di file dall'ambiente Linux viene sempre salvata e persiste fra una sessione Bash e la successiva.

Passo 5: cambiare cartella, elencare i file

Il primissimo comando Linux da ricordare è pwd: si limita a stampare a terminale il percorso completo nel quale ci troviamo.

Con cd / si torna al livello "radice" dal quale si dirama tutto il filesystem Linux. Con ll, visualizziamo il contenuto della directory corrente

Linux Windows 10: Grande Guida WSL2. Come installare Sottosistema Windows Linux (WSL), eseguire programmi, accedere file

Il disco C:\ di Windows è montato sotto /mnt/c/ (le altre unità sono /mnt/d/ e via dicendo, esattamente come da lettera assegnata sotto Windows).

Entriamoci quindi tramite cd /mnt/c/ e richiediamo la lista dei file disponibili con ll. Ignoriamo gli errori di accesso (Permesso negato oppure Permission denied) sui file di sistema e noteremo, fra le altre, la cartella Users

Linux Windows 10: Grande Guida WSL2. Come installare Sottosistema Windows Linux (WSL), eseguire programmi, accedere file - bash windows 10 ll

Con cd Users (attenzione a rispettare la maiuscole!) seguito da ll e poi ancora cd mioutente entriamo nella nostra cartella utente di Windows. La maggior parte dei nostri file personali saranno probabilmente qui!

Fate ben attenzione a non confondere questa directory -ovvero la cartella utente di Windows- con la Home dell'utente Linux: per raggiungere quest'ultima dovete infatti impartire cd $HOME (attenzione! è tutto maiuscolo!), comando che vi poterà sotto /home/mioutentelinux

Riepilogando:

  • /mnt/c/Users/mioutente/: cartella personale di Windows (la stessa visualizzabile con Esplora file)
  • /home/mioutentelinux/: cartella "home" di Linux

Passo 6: installare programmi Linux

Come anticipato, le utilità di base sono immediatamente disponibili. Abbiamo già usato cd e ll, ma possiamo anche modificare i file con l'editor "nano", scaricare pagine web con wget -O $HOME/turbolab.it.txt https://turbolab.it/scarica/204 (come trattato poco fa, il file verrà salvato nella Home di Linux, non in quella di Windows!) e via dicendo.

» Leggi: Come scaricare file da linea di comando: guida a curl e wget per Linux Ubuntu/CentOS

"Giocare" con le utility base di Linux è utile per prendere confidenza con l'ambiente, ma non serve a molto dal punto di vista "produttivo". Fortunatamente, l'ambiente di lavoro include sempre i gestori di pacchetti propri della distribuzione scelta: parliamo quindi di apt per Ubuntu e tool equivalenti per le altre distribuzioni, già configurati per accedere agli stessi, identici repository e installare automaticamente nuovo software.

Se avete scelto Ubuntu, iniziamo con sudo apt update per aggiornare la lista dei pacchetti disponibili. Ora, tanto per fare una prova veloce, procediamo con sudo apt install cowsay -y. Ad installazione completata, lanciamo /usr/games/cowsay "Saluti a tutti da TurboLab.it" per visualizzare un fumetto

Linux Windows 10: Grande Guida WSL2. Come installare Sottosistema Windows Linux (WSL), eseguire programmi, accedere file

Pronti per una partitina al mitico Space invaders? per installare un suo clone per terminale basta impartire sudo apt install ninvaders -y, seguito dal comando di esecuzione: /usr/games/ninvaders. Ci si sposta con le frecce di direzione, si sparano punti esclamativi con lo spazio

Linux Windows 10: Grande Guida WSL2. Come installare Sottosistema Windows Linux (WSL), eseguire programmi, accedere file - windows 10 1607 bash ninvaders

Per iniziare a "fare sul serio" potremmo pensare di installare Apache HTTP Server, ovvero il server web che consente di erogare i siti Internet. Il comando è sudo apt install apache2 -y, mentre il servizio si avvia con sudo service apache2 restart. Ora possiamo aprire il browser web di Windows all'indirizzo http://localhost per visualizzare la pagina di cortesia erogata da Apache

» Leggi anche: Installare e configurare un server web: La Grande Guida ad Apache, PHP, MySQL su Windows e Linux

Linux Windows 10: Grande Guida WSL2. Come installare Sottosistema Windows Linux (WSL), eseguire programmi, accedere file - apache ubuntu windows 10

Ancora: grazie a questo strumento possiamo eseguire Redis senza la necessità di appoggiarsi ad un fork specifico per Windows: basta installarlo con sudo apt install redis-server -y e lanciarlo con redis-server

Linux Windows 10: Grande Guida WSL2. Come installare Sottosistema Windows Linux (WSL), eseguire programmi, accedere file - windows 10 wsl bash redis

Ricordate soltanto che qualsiasi programma Linux in esecuzione viene arrestato alla chiusura della finestra Bash.

In seguito, quando vorrete aggiornare i software, non dovrete far altro se non impartire i seguenti comandi dall'ambiente Linux:

  • sudo apt update (aggiorna la lista dei pacchetti disponibili)
  • sudo apt full-upgrade -y (scarica e installa le nuove versioni dei pacchetti)

» Leggi anche: Aggiornare Ubuntu: quali differenze fra apt-get update, apt-get upgrade e apt-get dist-upgrade? Il modo migliore è... zzupdate!

Passo 7: Entrare ed uscire tramite Prompt dei comandi

È utile sapere che possiamo entrare nell'ambiente Linux anche da un qualsiasi tradizionale Prompt dei comandi Windows, e non solo avviando esplicitamente lo strumento dal menu Start:

  • Per entrare nell'ambiente Linux: comando bash
  • Per uscire: impartire exit oppure combinazione da tastiera Ctrl+D

Questo ci dà un grande vantaggio: così facendo, ci ritroveremo immediatamente posizionati, anche da Bash, nella stessa cartella del PC nella quale eravamo con il Prompt dei comandi

» Leggi: Guida Windows 10: come ripristinare il Prompt dei comandi (cmd) come predefinito al posto di PowerShell nel menu Win+X (Start) ed in Esplora file (Apri finestra di comando qui)

Linux Windows 10: Grande Guida WSL2. Come installare Sottosistema Windows Linux (WSL), eseguire programmi, accedere file - bash da prompt windows

Passo 8: eseguire programmi con interfaccia grafica

Fino ad ora ci siamo limitati ad eseguire programmi per il terminale. Con un po' di smanettamento, però, possiamo tentare di lanciare anche software con interfaccia grafica... tra cui l'utilissimo Firefox per Linux che consente di navigare al riparo dai malware per Windows

» Leggi: Guida a Bash su Windows 10 (WSL): come eseguire programmi Linux/Ubuntu ad interfaccia grafica (GUI) su Windows 10

Linux Windows 10: Grande Guida WSL2. Come installare Sottosistema Windows Linux (WSL), eseguire programmi, accedere file - gvim windows 10 wsl

Passo 9: lanciare programmi Linux da Windows

Se vi trovate spesso ad usare un determinato programma per Linux potete aprire Bash e lanciare detto applicativo in una mossa sola. La sintassi è bash -c "nomeprogramma", ad esempio, bash -c "nano" per eseguire l'editor di testi

Linux Windows 10: Grande Guida WSL2. Come installare Sottosistema Windows Linux (WSL), eseguire programmi, accedere file - windows 10 esegui bash nano

Se aprite spesso un determinato programma in questo modo è certamente una buona idea creare un collegamento:

  1. fare click con il pulsante destro del mouse in un punto vuoto del desktop
  2. scegliere Nuovo -> Collegamento
  3. immettere il comando e avanzare
  4. scegliere un nome a piacere

Per scegliere una bella icona:

  1. fare click con il pulsante destro del mouse sull'elemento appena creato
  2. seguire Proprietà -> Cambia icona..
  3. navigare fino all'icona desiderata
  4. confermare ripetutamente

Linux Windows 10: Grande Guida WSL2. Come installare Sottosistema Windows Linux (WSL), eseguire programmi, accedere file - windows 10 collegamento nano ubuntu

Passo 10: Disinstallare un programma

Se desiderate rimuovere un programma, il comando da impartire sotto Ubuntu è apt purge nomepacchetto -y. Quindi, per disinstallare cowsay e apache2 che abbiamo installato al precedente Passo 7, useremo:

  • sudo apt purge cowsay -y
  • sudo apt purge apache2 -y

Possiamo anche disinstallare molteplici pacchetti in una volta sola, specificandoli tutti nello stesso comando. Nel nostro caso:

sudo apt purge cowsay apache2 -y

Di tanto in tanto è saggio fare pulizia e rimuovere tutte i pacchetti installati per soddisfare a dipendenze, ma ora non più necessari. Il comando -del tutto sicuro- è sudo apt autoremove.

Passo 11: Accedere ai file WSL da Windows 10

Un problema molto sentito da chi lavora con Bash su Windows 10 tramite WSL è la difficoltà nell'accedere da Windows ai file salvati nei percorsi propri dell'ambiente Linux. Ebbene: le build moderne di Windows 10 abbattono anche questa barriera grazie ad una funzione dedicata:

» Leggi: Windows 10: come visualizzare / accedere ai file WSL (Bash) con Esplora File (Explorer)?

Linux Windows 10: Grande Guida WSL2. Come installare Sottosistema Windows Linux (WSL), eseguire programmi, accedere file

Conclusioni e altri riferimenti utili

Bene, siamo giunti alla conclusione. In questa guida abbiamo visto come "installare Linux su Windows" tramite WSL2: uno strumento potentissimo, integrato nativamente in Windows 10, che consente di eseguire la shell Bash e tutti i principali programmi per Linux all'interno del comodo e familiare desktop di Windows.

Chi volesse saperne di più può consultare questi riferimenti (in inglese):