Come installare e utilizzare Linux su Windows (WSL 2)

18 ottobre 2021

Il WSL, acronimo di `Windows Subsystem for Linux`, ci permette di eseguire un ambiente GNU/Linux direttamente in Windows, con tutti (o quasi) i comandi da terminale che tanto ci fanno amare il sistema del pinguino.

Ads

La seconda versione di questo strumento sviluppato da Microsoft, il WSL 2 è più che un semplice major upgrade, si tratta di un cambio di paradigma in termini di prestazioni: è più veloce, versatile e sopratutto utilizza un vero kernel Linux. Inoltre, gli aggiornamenti del kernel possono essere eseguiti sia manualmente, che tramite Windows update! Questa versione è stata sviluppata con due obiettivi principali in mente: miglioramento sostanziale delle prestazioni del filesystem ed una (quasi) totale “comunicazione” tra i due sistemi operativi.

WSL 2 è anche retro-compaitibile, se così si può dire. Le singole distribuzioni Linux (scaricabili dal Microsoft Store, oltre che da teminale, ma lo vedremo dopo) possono essere aggiornate o downgradate in qualsiasi momento. Inoltre è possibile utilizzare in parallelo entrambe le versioni del Windows Subsystem per Linux, senza creare conflitti.

# Come installare WSL 2

Come prima cosa, controlliamo se la nostra installazione di Windows soddisfa i prerequisiti di sistema. Per quanto riguarda Windows 10, è necessario avere installata la versione 2004 o superiore. Nel caso di Windows 11, qualsiasi versione andrà bene. Nel caso in cui stessimo eseguendo una versione di Windows inferiore a quelle elencante sopra, seguiamo questa guida di Microsoft per macchine datate

Come installare WSL su vecchie versioni di Windows 10


La prima cosa da fare è aprire la powershell come amministratori. Clicchiamo con il tasto destro sul simbolo di Windows. Selezioniamo Terminale Windows (Admin) su Windows 11

Una volta aperto, digitiamo il comando

wsl --install

e premiamo invio

16169e17825cdb.jpeg

Questo comando attiverà tutte le componenti opzionali di Windows necessarie, scaricherà l’ultima versione del kernel ed imposterà in automatico WSL 2 come versione. Infine installerà di deafult Ubuntu 20.04 come distribuzione Linux.

NOTA: Se dovesse spuntare una banner che ci avverte che non abbiamo la virtualizzazione attivata, dalla Powershell come amministratori eseguiamo questo comando. Potrebbe essere necessario riavviare in seguito

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

La prima volta che lanceremo la distro appena installata, ci apparirà una console in finestra che ci chiederà di aspettare del tempo per finire la decompressione dei file scaricati in precedenza. Dalla volta successiva, l’esperienza di lancio sarà abbastanza immediata.

# Come fare per non installare Ubuntu in automatico?

Come detto prima, la distribuzione installata di default con il comando wsl --install sarà Ubuntu 20.04. Per evitare che questo accada, possiamo specificare quale distribuzione vogliamo installare modificando il comando iniziale con questo

wsl --install -d <Nome della distribuzione>

Dove ovviamente dovremo sostituire <Nome della distribuzione> con ciò che vogliamo installare. Per vedere tutte le opzioni disponibili, ci basterà lanciare il comando

wsl -l -o

Un abbreviativo del comando wsl --list --online, sono equivalenti.

16169e179b73f7.jpeg

Se ad esempio abbiamo appena terminato di vedere l’ultima puntata di Mr. Robot e vogliamo installare Kali Linux ci basterà lanciare il comando

wsl --install -d kali-linux

O per Debian ad esempio

wsl --install -d Debian

Abbiamo capito come funziona.

SUGGERIMENTO: Non siamo pratici con Linux e non sappiamo cosa installare? Non tocchiamo nulla e lasciamo installare Ubuntu 20.04 come di default. Avremo tempo per imparare

# Prima installazione

Seguiamo la procedura (semplice) per configurare Ubuntu durante il suo primo avvio. Come prima cosa dopo aver lanciato il comando wsl --install ci vorrano alcuni secondi (o minuti, dipende dalla connessione) prima il sistema finisca di scaircare tutti i file necessari.

Una termianti i download si aprirà una finestra con una console di Ubuntu che ci chiederà come prima cosa di inserire uno username: Enter new UNIX name. Scegliamone uno semplice, evitiamo caratteri speciali e maiuscole. Digitiamolo e premiamo invio

Ingnoriamo che in foto ci sia scritto 18.04

Una volta scelto, dovremo inserire la password che vogliamo utilizzare (ci verrà chiesto di inserirla 2 volte). Ricordiamoci che siamo su Linux, è normale che quando digitiamo la password non si vedano gli asterischi comparire ad ogni tasto premuto. Inseriamola normalmente e premiamo invio una volta terminato, ed ecco che dopo qualche secondo sarà tutto pronto!

16169e168488b6.jpeg

NOTA: Questa password e questo username saranno esclusivi del sottosistema Linux, non avranno nulla a che vedere con quelli di Windows. Questo account che setteremo durante la prima installazione avrà i privilegi di amministratore, sarà quindi possibile ad esempio utilizzare comandi sudo

Inoltre, se installiamo più distribuzioni, queste saranno separate ed ognuna avrà il proprio username e la propria password

# Gestire la password

Se volessimo cambiare password, utilizziamo il comando passwd dentro il WSL. Ci verrà chiesto di inserire la password attuale e successivamente di inserire (due volte) la nuova che desideriamo utilizzare.

Se invece ci fossimo scordati la nostra password, da PowerShell come amministratori digitiamo il comando wsl -u root (nel caso di una distribuzione specifica, ad esempio Debian, usiamo wsl -d Debian -u root). Una volta aperta la schell coi permessi di root, digitiamo passwd <username>, sostituendo ovviamente <username> con il nostro nome utente settato all’inizio. Per configurare la nuova password seguiamo le istruzioni a schermo.

# Aggiorniamo i pacchetti (Ubuntu e Debian-based)

Come prima cosa controlliamo che tutto sia aggiornato. Dal terminale scriviamo questo comando e premiamo invio

sudo apt update && sudo apt upgrade -y

16169e1678d4da.jpeg

Ci chiederà di inserire la passowrd che abbiamo scelto in precedenza (anche questa volta, scriviamo anche se non compaiono gli asterischi). Premiamo invio una volta fatto e lasciamolo aggiornare. L’operazione potrebbe richeidere diversi minuti

I pacchetti che vedremo saranno diversi da quelli in foto

Una volta terminato, possiamo iniziare ad utilizzare come preferiamo il nostro sottosistema Linux!

# Utilizzare il WSL da Windows Terminal

Il terminale di Windows, assieme a PowerToys, rientra tra quei piccolo gioielli open-source sviluppati da Microsoft. Ci permette di gestire e lanciare ogni applicazione tramite riga di comando. Le sue features principali sono

  • Possibilità di dividere il lavoro in tabs e piani
  • Supporto ai caratteri Unicode e UTF-8
  • Render del testo con accelerazione grafica via GPU
  • Possibilità di creare i propri temi e schemi di colori
  • Customizzare testo, colori, sfondi e shortcuts

Per gli utenti Linux più sfegatati potrà sembrare nulla di che, ed è vero. In confronto a terminali come Kitty o Alattracity questo è più che banale. Ma forse ci stiamo scordando una cosa, siamo su Windows!

In questo articlo non andremo a vedere nel dettaglio come modificare ognuno di questi parametri: la funzionalità che più ci interessa è quella della suddivisione in tab. In questo modo aprendo una singola applicazione, potremo utilizzare al pieno delle loro potenzialità tutte le nostre distro, con l’aggiunta di PowerShell, CMD e Azure Cloud Shell.

Una volta aperto (non è necessario come amministratore), vederemo un’unica tab con aperta la PowerShell. Per vedere tutte le altre opzioni disponibili, clicchiamo sulla freccia che indica in basso a destra del simbolo +. Si aprirà un menù a tendina come questo

16169e169290ee.jpeg

Ci basterà quindi cliccare sulla voce del programma che vogliamo lanciare. Come possiamo vedere dalla foto, attualmente in questo sistema ci sono ben 4 distribuzioni Linux installate tramite WSL 2

UTENTI ESPERTI: Possiamo installare praticamente qualsiasi distro Linux, anche quelle non supportate ufficialmente da Microsoft. Come possiamo vedere nella foto, tra le 4 distribuzioni installate, vi è anche Arch Linux, una distro molto potente di cui abbiamo parlato anche sul sito. Per i più curiosi ecco la repository del progetto GitHub con tutte le istruzioni necessarie

ArchWSL: https://github.com/yuk7/ArchWSL

# Installare e lanciare applicazioni grafiche (GUI)

Finalmente WSL supporta anche applicazioni Linux con GUI (sia Wayland che X11). Molti di noi già si staranno mettendo le mani nei capelli pensando che le prestazioni saranno scadendi, e invece non è affatto così. Microsoft ha fatto un lavoro di ottimizzazione perfetto, le performance sono praticamente native. Adesso è possibile

  • Lanciare app Linux direttamente dal menù di Windows
  • Fissare App Linux alla task bar
  • Usare Alt+Tab per cambiare tra app Linux e Windows
  • Copia e incolla tra app Linux e Windows

16169e177e2324.jpeg

# Come attivarlo

Come prima cosa, controlliamo se funziona senza dover fare niente.

Vediamo un esempio con il famoso editor di testo gedit. Per installarlo, digitiamo

sudo apt install gedit -y

Una volta che avrà terminato, ci basterà scrivere dal terminal il nome dell’applicazione e premere invio

gedit

16169e16892344.jpeg

Se si aprirà una finestra con un editor di testo, abbiamo questa funzione già attiva.


Se non dovesse funzionare, apriamo la PowerShell come amministratori e digitiamo

wsl --update

Una volta terminato digitiamo

wsl --shutdown

Microsoft consiglia anche di installare i driver per la vGPU. Abilitando la GPU virtuale (vGPU) possiamo beneficiare del render accellerato con OpenGL

Driver Intel

Driver AMD

Driver NVIDIA

NOTA: Il passaggio di installare i Driver è facoltativo. Facciamolo solo se abbiamo bisogno di render delle app molto responsivo, per programmi come gedit e Nautilus non è necessario. È anche possibile utilizzare l’accelerazione CUDA (nel caso di Nvidia) tramite WSL, ma lasciamo questi dettagli a quella piccola fetta di utenti che ne necessitano.


Ma in realtà, serve davvero questa feature? La risposta è si, ma non per tutti. La maggior parte degli utenti che utilizza Linux, lo fa come sistema secondario. Quindi spesso cercando di usare su Linux app che conoscono su Windows. Questi non andranno di certo a voler utilizzare programmi tramite GUI per Linux, quando già si trovano su Windows e hanno tutto quello di cui hanno bisogno.

La realtà è che ci sono alcuni programmi per Linux, essenziali per molti utenti, che non esistono per Windows. L’esempio più eclatante è virt-manager, un programma potentissimo sviluppato da RedHat per gestire più macchine virtuali con molta semplcità. Tramite WSL ci basterà installarlo con il comando

sudo apt install virt-manager -y

e lanciarlo con

virt-manager

# Consigli utili: come usarlo al meglio

Se siamo utenti Linux attivi, sappiamo già di cosa abbiamo bisogno. Se invece la nostra esperienza con Linux è stata molto sporadica o anche nulla, in questa sezione impareremo a prendere la mano con bash, il linguaggio con cui interagiamo con il terminale.

# Comandi base UNIX

Iniziamo con una delle funzioni che ci sarà sempre utile in Bash: l’autocompletamento. premendo TAB sulla tastiera, il comando che stiamo digitando verrà completato nel modo suggerito. Nel caso in cui avessimo più opzioni disponbili, clicchiamo due volte TAB per vedere tutte le opzioni disponibili

# Files e directory

  • ls ci mostra in modo alfabetico tutti i file presenti nella directory in cui ci troviamo

Tutti questi comandi che vedremo hanno un loro manuale! Se vogliamo avere informazioni dettagliate sul loro funzionamento e sulla sintassi, digitiamo <nome comando> --help (o per una spiegazione più nel dettaglio, man <nome comando>). Ad esempio ls --help ci farà scoprire che possiamo utilizzare svariati flag, ovvero aggiunte al comando ls che richiamiamo con il - immeditamente dopo. Ad esempio utilizzando il comando ls -lah al posto di ls vedremo delle informazioni in più. Il flag l dice al terminale di mostrare i file in lista, il flag a sta per all, mostra anche i files nascosti (quelli che inzianiano con un .), infine h sta per human readable.

Ecco un esempio di applicazione

  • cd ci permette di spostarci da una directory all’altra

Se per esempio ci troviamo nella home e vogliamo spostarci all’interno della cartella Downloads, dovremo scrivere cd Donwloads, e così via per qualsiasi altra sotto cartella presente. Per tornare indietro di una cartella, utilizziamo il comando cd .. o direttamente cd se vogliamo tornare alla home

  • rm ci permette di cancellare files (per i precisini: rimuove l’etichetta di un determinato inode; non useremo questi tecnicismi) e directory, ma attenti alla sintassi!

Ad esempio il comando rm mtt.txt rimuvoverà il file mtt.txt (ovviamente se esiste e se siamo nella directory corretta). Facciamo un esempio più pratico, ci troviamo nella home e vogliamo cancellare la cartella compiti. Il comando rm da solo non funzionerà, dovremo usare il flag rm -rf compiti, dove r sta per recoursive e f per force.

  • cp di permette di copiare file e cartelle da una directory all’altra.

La sintassi è semplice: cp sorgente destinazione. Se ad esempio avessimo il file starwars8.mp4 nella home e volessimo spostarlo dentro /video/orrendi allora dovremo dare il comando cp starwars8.mp4 /video/orrendi. Ma attenzione! Questo comando ha bisogno del flag -r subito dopo cp per spostare cartelle.

  • mkdir <nome> ci permette di creare cartelle.

  • mv ci permette di rinominare file e cartelle all’interno della stessa directory o di spostarli da una directory all’altra. La sintassi è come quella di cp vista prima: mv vecchio nuovo

  • touch ci permette di creare file. Scrivendo touch mtt.txt avremo creato un file di testo chiamato mtt nella directory in cui ci troviamo

Altri comandi utili che non tratteremo ma che è consigliato approfondire sono wget, cat, grep, echo, find

# Installare, aggiornare e rimuovere i pacchetti

Su Linux le applicazioni vengono installate tramite un gestore di pacchetti, nel caso di Ubuntu viene utilizzato il package manager di Debian, apt (Advanced Packaging Tool).

  • Installare un pacchetto

Tramite apt possiamo installare quasi tutti i programmi che ci vengono in mente, sicuramente i più comuni. La sintassi è semplice

sudo apt install nomepacchetto

Per installare ad esempio il pacchetto wget (utile per scaricare file da link web) ci basterà scrivere sudo apt install wget e premere invio. Dopo qualche secondo ci verrà chiesto di confermare se vogliamo installarlo, per procedere premiamo invio o in alternativa digitiamo Y e poi premiamo invio

  • Aggiornare tutti i pacchetti

Questo è il comando che abbiamo visto precedentemente, non entriamo nel dettaglio del suo funzionamento. Ci basterà dare

sudo apt update && sudo apt upgrade

O in alternativa eseguiamo prima sudo apt update ed una volta terminato sudo apt upgrade. Anche qui ci verrà chiesta conferma prima di un qualsiasi aggiornamento.

  • Disinstallare un pacchetto

Per eliminare definitivamente un applicazione installata la sintassi è la seguente

sudo apt purge --autoremove nomepacchetto

Non scordiamo che Linux è l’ambiente perfetto per chiunque voglia cimentarsi nella programmazione e nello sviluppo software, a qualsiasi livello. Impariamo ad utilizzarlo, ci porterà grossi benefici.

# Gli script in bash

L’arma più potente del terminare Linux è proprio bash, un linguaggio ostico all’inzio, ma davvero potente quando lo si impara ad usarlo. Vediamo un esempio che in periodi di lezioni online, può essere utile a molti

  • Convertire tutti i file video presenti in una directory

Supponiamo di avere una cartella piena di video .mkv e di volerli convertire in .mp4. La maniera più semplice è tramite ffmpeg. Per installarlo digitiamo

sudo apt install ffmpeg 

Una volta fatto, utilizzando cd spostiamoci nella cartella desiderata ed eseguiamo il seguente comando

nano convertitore.sh

Si aprirà un editor di testo non grafico (il mouse non funziona!). Copiamo il seguente codice

for i in *.mkv;
  do name=`echo "$i" | cut -d'.' -f1`
  echo "$name"
  ffmpeg -i "$i" "${name}.mp4"
done

ed incolliamolo nel terminale con CTRL + Shift + V. Una volta fatto premiamo CTRL + x ed infine y. Ora abbiamo creato un file con all’interno quel codice. Per eseguirlo lanciamo il comando

sh convertitore.sh

In alternativa, possiamo renderlo eseguibile tramtie chmod +x, ma lasciamo i dettagli a chi è interessato.

NOTA: Ovviamente richiederà tanto tempo in base alla dimensione ed alla quantità dei file!

I crediti di queto codice vanno ovviamente a Stack Overflow!

# Conclusione

WSL 2 è Linux dentro Windows, almeno in gran parte. Questa versione così rifinita ha reso Windows più alla portata degli utenti esperti e degli sviluppatori che per un motivo o per un altro, non possono utilizzare interamente Linux come sistema operativo principale