# WSL (Windows Subsystem for Linux): cos'è, installazione e configurazione di Linux in Windows

URL: https://skillaria.top/it/guides/linux/wsl-linux-windows

WSL (Windows Subsystem for Linux) è una sottosistema integrata in Windows 10 e 11 che avvia una vera distribuzione Linux senza una macchina virtuale separata e senza doppio avvio. Si installa con un solo comando, wsl --install, in PowerShell come amministratore; per impostazione predefinita si installa WSL 2 con Ubuntu, dove gira un vero kernel Linux in una macchina virtuale leggera.

Windows Subsystem for Linux (WSL, sottosistema Windows per Linux) è un componente di Windows 10 e 11 che permette di eseguire una distribuzione Linux direttamente dentro Windows: terminale bash, `apt`, `ssh`, `grep`, Docker e qualsiasi utilità da riga di comando. Non serve installare VirtualBox né dividere il disco per un secondo sistema: Ubuntu si apre come una normale finestra di terminale in pochi secondi. Qui vediamo le differenze tra WSL 1 e WSL 2, come installare la sottosistema, come lavorare con i file, con VS Code e con le applicazioni grafiche, e come risolvere gli errori più comuni.

## Cos'è WSL in Linux e Windows

In breve, WSL è un modo per avere un ambiente Linux completo per lo sviluppo e lo studio senza lasciare Windows. Si installa una distribuzione (Ubuntu, Debian, openSUSE, Kali, AlmaLinux e altre) dalla riga di comando o dal Microsoft Store, e poi si lavora come su un server: utenti, permessi, pacchetti, servizi.

È importante capire che cosa WSL non fa. Non è un emulatore di comandi come Cygwin e non è un insieme di utilità portate: in WSL 2 gira un vero kernel Linux, compilato da Microsoft. Per questo i binari Linux si eseguono senza ricompilazione, e le competenze acquisite con WSL si trasferiscono direttamente su un server reale.

Compiti tipici per la sottosistema:

- studiare Linux e la riga di comando senza un computer dedicato;
- sviluppo web quando la produzione gira su Linux (Python, Node.js, PHP, Go);
- Docker Desktop, che usa WSL 2 come motore;
- connessione ai server via SSH, script bash, lavoro con git in un ambiente familiare.

## WSL 1 e WSL 2: qual è la differenza

Esistono due architetture della sottosistema. WSL 1 traduce le chiamate di sistema Linux in chiamate al kernel di Windows: non c'è un kernel Linux vero e proprio. WSL 2 esegue un vero kernel Linux in una macchina virtuale leggera basata su Hyper-V, che si avvia in pochi secondi e gestisce autonomamente la memoria.

| Parametro | WSL 1 | WSL 2 |
| --- | --- | --- |

| Kernel | no, traduzione delle chiamate di sistema | vero kernel Linux |

| Compatibilità con le chiamate di sistema | parziale | completa |

| Docker, systemd | no | sì |

| Velocità sui file Linux (`~/`) | più bassa | alta |

| Velocità sui file Windows (`/mnt/c`) | alta | sensibilmente più bassa |

| Richiede la virtualizzazione | no | sì |

| Rete | condivisa con Windows | rete virtuale propria (NAT di default) |

Per quasi tutti gli scenari scegliete WSL 2, che è quella predefinita. WSL 1 ha senso se la virtualizzazione non si può attivare (per esempio se Windows stesso gira in una macchina virtuale senza virtualizzazione annidata) o se il progetto deve stare sul disco di Windows e lavorarci in modo intensivo.

## Come installare WSL su Windows 10 e 11

Su Windows 11 e su Windows 10 versione 2004 o successiva (build 19041+) l'installazione si riduce a un comando. Aprite PowerShell o «Terminale» come amministratore ed eseguite:

```
wsl --install
```

Il comando attiva i componenti necessari di Windows, scarica il kernel di WSL 2 e installa Ubuntu. Dopo il riavvio si apre la finestra della distribuzione: scegliete un nome utente e una password Linux. Non sono collegati all'account di Windows; questa password servirà per `sudo`.

```
Enter new UNIX username: alex
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
```

Subito dopo aggiornate i pacchetti, come su ogni server appena installato:

```
sudo apt update && sudo apt upgrade -y
```

### Come scegliere la distribuzione

Ubuntu è installata di default, ma si può scegliere un'altra distribuzione. Per vedere l'elenco disponibile:

```
wsl --list --online
```

Per installare una distribuzione specifica per nome dall'elenco:

```
wsl --install -d Debian
```

Se WSL è già installato, il comando aggiunge solo la nuova distribuzione. Potete tenerne più di una contemporaneamente, per esempio Ubuntu per il lavoro e Kali per gli esperimenti.

### Verificare la versione: wsl -l -v

Per vedere le distribuzioni installate, il loro stato e la versione di WSL:

```
wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Running         2
  Debian    Stopped         2
```

L'asterisco indica la distribuzione predefinita, quella che si avvia con il solo comando `wsl`. Per cambiarla: `wsl --set-default Debian`.

### Passare da WSL 1 a WSL 2

La versione per le nuove installazioni si imposta con:

```
wsl --set-default-version 2
```

Una distribuzione già installata si converte separatamente (i dati si conservano, ma l'operazione può richiedere alcuni minuti):

```
wsl --set-version Ubuntu 2
```

La conversione inversa è `wsl --set-version Ubuntu 1`.

### Comandi utili per la gestione di WSL

| Comando | Cosa fa |
| --- | --- |

| `wsl` | apre la distribuzione predefinita |

| `wsl -d Debian` | apre una distribuzione specifica |

| `wsl --shutdown` | arresta tutte le distribuzioni e la macchina virtuale WSL 2 |

| `wsl --terminate Ubuntu` | arresta una sola distribuzione |

| `wsl --update` | aggiorna WSL e il kernel |

| `wsl --status` | versione predefinita e stato generale |

| `wsl --export Ubuntu ubuntu.tar` | backup della distribuzione in un archivio |

| `wsl --import Ubuntu2 D:\wsl\u2 ubuntu.tar` | ripristino o clonazione di una distribuzione |

| `wsl --unregister Ubuntu` | elimina la distribuzione insieme a tutti i dati |

Attenzione a `--unregister`: i file dentro la distribuzione vengono eliminati senza passare dal cestino. Prima fate un `--export`.

## File di Windows da Linux e viceversa

I dischi di Windows vengono montati automaticamente dentro WSL nella cartella `/mnt`: il disco C: corrisponde a `/mnt/c`, D: a `/mnt/d`.

```
cd /mnt/c/Users/alex/Downloads
ls -l
cp report.csv ~/projects/
```

Nella direzione opposta i file Linux sono visibili in Esplora file tramite il percorso di rete `\\wsl$\Ubuntu` (in Windows 11 anche `\\wsl.localhost\Ubuntu`) e nella sezione «Linux» della barra laterale. Per aprire rapidamente la cartella Linux corrente in Esplora file:

```
explorer.exe .
```

Da WSL si possono avviare programmi di Windows (`notepad.exe`, `code`), e da PowerShell i comandi Linux con il prefisso `wsl`: `wsl ls -la`. Per convertire i percorsi tra i due sistemi c'è l'utilità `wslpath`:

```
wslpath 'C:\Users\alex'
/mnt/c/Users/alex
```

La regola principale per le prestazioni di WSL 2: conservate i progetti nel file system Linux (`~/projects`), non in `/mnt/c`. L'accesso ai dischi di Windows passa attraverso un protocollo di rete, e operazioni come `git status` o `npm install` su un progetto grande risultano molto più lente.

## VS Code e WSL

Visual Studio Code può lavorare con WSL come con una macchina remota: l'interfaccia resta in Windows, mentre terminale, estensioni, interpreti e debugger girano dentro Linux. Serve l'estensione WSL (Microsoft). Poi, nel terminale della distribuzione, spostatevi nella cartella del progetto ed eseguite:

```
cd ~/projects/site
code .
```

Al primo avvio VS Code installa da solo la parte server in Linux. In basso a sinistra compare l'indicatore «WSL: Ubuntu»: significa che tutto ciò che lanciate dal terminale integrato gira in Linux. Le estensioni come Python o ESLint vanno installate «in WSL»: VS Code lo propone con un pulsante.

## Applicazioni grafiche in WSL (WSLg)

In Windows 11 e nelle versioni recenti di WSL su Windows 10 è presente WSLg, il supporto alle applicazioni grafiche Linux già incluso, senza configurare un server X. Installate il programma come al solito: la sua finestra compare accanto alle finestre di Windows e il collegamento appare nel menu Start.

```
sudo apt install gedit -y
gedit ~/.bashrc &
```

WSLg supporta X11 e Wayland, l'audio e gli appunti. Per il lavoro quotidiano con un desktop Linux completo, però, non è un sostituto: WSL è pensato per singole applicazioni, non per GNOME o KDE nel loro insieme.

## systemd e risorse di WSL 2

Le versioni recenti di WSL 2 supportano systemd: nelle nuove installazioni di Ubuntu è attivo di default. Se non lo è, aggiungete al file `/etc/wsl.conf` dentro la distribuzione:

```
[boot]
systemd=true
```

e riavviate la sottosistema da PowerShell con `wsl --shutdown`. Dopo questo funzionano `systemctl` e servizi come nginx o PostgreSQL.

Per limitare la memoria e i processori della macchina virtuale WSL 2 si usa il file `%UserProfile%\.wslconfig` lato Windows:

```
[wsl2]
memory=4GB
processors=2
```

Le impostazioni si applicano dopo `wsl --shutdown`.

## Errori comuni durante l'installazione di WSL

### Errore 0x80370102

Messaggio completo: «Impossibile avviare la macchina virtuale perché manca un componente necessario» (WslRegisterDistribution failed with error: 0x80370102). La causa è quasi sempre una sola: WSL 2 non riesce ad avviare la macchina virtuale. Controllate in quest'ordine:

1. Se la virtualizzazione hardware è attiva nel BIOS/UEFI: Intel VT-x (Intel Virtualization Technology) oppure AMD-V (SVM Mode). Lo stato si vede in Gestione attività → «Prestazioni» → CPU → «Virtualizzazione: Abilitata».
2. Se è attivo il componente «Piattaforma macchina virtuale».
3. Se l'hypervisor non è disattivato nel bootloader.

I componenti si attivano da PowerShell come amministratore:

```
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
bcdedit /set hypervisorlaunchtype auto
```

Dopo riavviate il computer. Se lavorate dentro una macchina virtuale, sull'host va abilitata la virtualizzazione annidata, oppure usate WSL 1.

### Altri problemi frequenti

- **0x800701bc** — il kernel di WSL 2 non è aggiornato. Eseguite `wsl --update`.
- **Il comando wsl --install mostra solo la guida** — WSL è già installato; aggiungete una distribuzione con `wsl --install -d Ubuntu`.
- **Nessuna connessione internet in WSL con la VPN** — il client VPN intercetta le rotte della rete virtuale. In Windows 11 aiuta la modalità `networkingMode=mirrored` nella sezione `[wsl2]` del file `.wslconfig`.
- **WSL occupa molto spazio** — il disco virtuale `ext4.vhdx` cresce, ma non si riduce da solo dopo la cancellazione dei file. Si può ridurre a mano oppure spostare la distribuzione con `--export`/`--import`.
- **Password Linux dimenticata** — entrate come root da PowerShell con `wsl -u root`, poi eseguite `passwd alex`.

## WSL, macchina virtuale o dual boot

WSL non è l'unico modo per avere Linux su un computer con Windows. La scelta dipende dal compito.

| Opzione | Vantaggi | Svantaggi | Quando sceglierla |
| --- | --- | --- | --- |

| WSL 2 | avvio in pochi secondi, file condivisi, VS Code, Docker | nessun desktop completo, particolarità di rete e dischi | sviluppo, studio della riga di comando, script |

| Macchina virtuale (VirtualBox, Hyper-V, VMware) | isolamento completo, snapshot, qualsiasi distribuzione e desktop, scheda di rete propria | più pesante, le risorse si riservano in anticipo | laboratorio di server, esperimenti con la rete, l'avvio e le partizioni |

| Dual boot | tutta la potenza dell'hardware, grafica e driver nativi | riavvio per cambiare sistema, rischio durante il partizionamento | Linux come sistema principale, giochi e calcolo GPU su Linux |

Per imparare Linux da zero, WSL di solito basta: file, permessi, processi, pacchetti, script bash e SSH funzionano come sul server. Una macchina virtuale serve quando si arriva a cose che in WSL sono organizzate diversamente: il bootloader, il partizionamento dei dischi fisici, le interfacce di rete e il firewall a livello dell'host.

## Conclusione

Windows Subsystem for Linux offre un vero Linux dentro Windows con un solo comando, `wsl --install`. Scegliete WSL 2, verificate le versioni con `wsl -l -v`, tenete i progetti in `~/` e non in `/mnt/c`, e collegate VS Code tramite l'estensione WSL. Se l'installazione si blocca con 0x80370102, attivate la virtualizzazione nel BIOS e il componente «Piattaforma macchina virtuale». Con la preparazione di questa postazione inizia la pratica del corso di Linux.

## FAQ

**WSL è gratuito?**

Sì. WSL è incluso in Windows 10 e 11 in tutte le edizioni, compresa Home, e anche le distribuzioni Linux sono distribuite gratuitamente.

**Si può eseguire Docker in WSL?**

Sì, ma solo con WSL 2. Si può installare Docker Desktop con il motore WSL 2 oppure installare Docker Engine direttamente nella distribuzione, come su un normale server Ubuntu.

**Dove sono fisicamente memorizzati i file della distribuzione WSL?**

In WSL 2 si trovano in un disco virtuale ext4.vhdx nel profilo utente di Windows. Non serve aprirlo direttamente: usate il percorso \\wsl$\ in Esplora file.

**Come si disinstalla WSL completamente?**

Eliminate le distribuzioni con wsl --unregister seguito dal nome della distribuzione, poi rimuovete l'applicazione «Sottosistema Windows per Linux» in «App installate» e, se serve, disattivate i componenti di Windows.

**Si può spostare WSL su un altro disco?**

Sì: wsl --export Ubuntu ubuntu.tar, poi wsl --unregister Ubuntu e wsl --import Ubuntu D:\wsl\ubuntu ubuntu.tar. Nelle versioni recenti esiste anche il comando wsl --manage Ubuntu --move.


---
Source: Skillaria.Top (https://skillaria.top)
