Come installare e utilizzare Linux su Windows (WSL)

Come installare e utilizzare Linux su Windows (WSL)

Cos’è e come funziona WSL, seconda versione del Sottosistema Windows per Linux che permette di eseguire le principali distribuzioni Linux in Windows.

Per i professionisti che usano sia Windows che Linux, avviare una distribuzione come Ubuntu Linux in Windows è una grande comodità. Fortunatamente, Microsoft ha introdotto con Windows 10 il Windows Subsystem for Linux (WSL) , che consente di eseguire un ambiente GNU/Linux direttamente in Windows, con tutti i comandi da terminale che amiamo di Linux.

Per gli utenti di Windows, lavorare con Linux senza abbandonare il sistema operativo è un enorme passo in avanti. Nel corso del tempo Microsoft ha implementato questa funzione con il rilascio di WSL 2, la seconda versione di questo strumento sviluppato da Microsoft, rappresenta un cambiamento di paradigma in termini di prestazioni: è più veloce, versatile e utilizza un kernel Linux ufficiale. Inoltre, gli aggiornamenti del kernel possono essere eseguiti sia manualmente che tramite Windows Update!

WSL 2 è anche retrocompatibile e permette di utilizzare entrambe le versioni del Windows Subsystem per Linux in parallelo, senza creare conflitti. A differenza di un layer di compatibilità, WSL 2 si appoggia alla virtualizzazione Hyper-V e al suo hypervisor. Grazie a software come Microsoft Hyper-V, è possibile creare macchine virtuali in Windows e installare al loro interno qualunque sistema operativo, comprese le principali distribuzioni Linux.

Il vantaggio di usare la virtualizzazione è che si possono eseguire uno o più sistemi operativi caricandoli mediante le macchine virtuali (guest) accanto alla versione di Windows che si usa come sistema host (“ospitante”).

Nata sui sistemi Windows Server, Hyper-V è una soluzione che è utilizzabile senza alcuna difficoltà anche nelle versioni client del sistema operativo Microsoft.

Perché eseguire Linux in Windows?

Come abbiamo detto poco fa utillizzare Linux su Windows è diventato possibile grazie a WSL. Questo significa che si possono utilizzare tutti i comandi Linux e gli script che sono stati creati per questa piattaforma, anche su Windows. In questo modo, è possibile installare i componenti server Linux su una macchina Windows e testare il software in modo rapido ed efficace.

WSL utilizza solo una piccola quantità di risorse e consente di interagire con il file system di Windows 10 e Windows 11, oltre che con una o più distribuzioni Linux. Non è necessario cercare e installare pacchetti software in versione Windows, ma si possono eseguire server web, script Python, PHP, ottenere certificati digitali gratuiti Let’s Encrypt, e altro ancora, utilizzando i comandi Linux abituali attraverso la finestra del terminale.

In passato, ci sono state alcune preoccupazioni sulla sicurezza, ma queste erano relative alla prima versione di WSL, che era solo un layer di compatibilità per Windows. Con WSL 2, invece, Linux è eseguito all’interno di macchine virtuali basate sulla tecnologia Hyper-V, il che significa che i rischi sono notevolmente inferiori. Tuttavia, è importante assicurarsi di installare le patch mensili di Windows per garantire la sicurezza del sistema.

Let’s go! Portiamo il sottosistema di Linux su Windows. (Prequisiti per l’installazione)

Per prima cosa, dobbiamo verificare se la nostra installazione di Windows soddisfa i prerequisiti di sistema. Per esempio, se stiamo utilizzando Windows 10, è necessario avere installata la versione 2004 o successiva. Se invece stiamo utilizzando Windows 11, qualsiasi versione andrà bene. Se la versione di Windows che stiamo utilizzando è inferiore a quelle elencate sopra, possiamo seguire la guida di Microsoft per macchine datate.

Successivamente, abilitiamo la virtualizzazione hardware nel BIOS seguendo questi passaggi:

  1. Spegniamo il PC e accediamo all’interno del BIOS e andiamo alla voce configurazione.
  2. Nell’utilità di configurazione del BIOS, successivamente andiamo sulla voce “Tecnologia di virtualizzazione”e abilitamo questa opzione.
  1. Salviamo le modifiche e usciamo dal BIOS, riavviando il PC.
  1. Il PC si riavvierà e applicherà le modifiche. Questo potrebbe richiedere del tempo, quindi attendiamo che il sistema sia completamente riavviato.

Dopo il riavvio, abilitiamo la funzione Hyper-V su Windows seguendo uno dei due metodi seguenti:

Metodo 1: Abilitazione di Hyper-V utilizzando la finestra di dialogo Funzionalità di Windows

  1. Premiamo “Win + R” per apriamo “Esegui”.
  2. Digitiamo “control” e facciamo clic su “OK” per aprire il Pannello di controllo.
  3. Nel Pannello di controllo, andiamo su “Programmi > Programmi e funzionalità”.
  4. Nel riquadro di sinistra, facciamo clic su “Attiva o disattiva le funzionalità di Windows”.
  5. Nella finestra di dialogo “Funzionalità di Windows”, selezioniamo “Hyper-V”. Se espandiamo Hyper-V, vediamo “Hyper-Strumenti di gestione” e “Piattaforma Hyper-V” selezioniamo e abilitiamo le voci seguenti opzioni.
  6. Assicuriamoci che entrambe le opzioni siano selezionate e facciamo clic su “OK”. Windows inizierà a installare e attivare le funzionalità opzionali sul nostro PC. Questo processo potrebbe richiedere del tempo per essere completato.
  7. Dopo il completamento, facciamo clic su “Riavvia ora” per riavviare e applicare le modifiche.

Sui sistemi dove già si utilizzava WSL (la prima versione della piattaforma) bisogna scaricare e installare il pacchetto aggiuntivo disponibile a questo indirizzo (cliccare sul link per “Scaricare il pacchetto di aggiornamento più recente del kernel Linux di WSL 2“).

Dopo riavviato il sistema apriamo una finestra del prompt dei comandi o di PowerShell con i diritti di amministratore e digitare quanto segue:

wsl --set-default-version 2

Così facendo Windows 10 utilizza per impostazione predefinita WSL 2 anziché la prima versione del Sottosistema Windows per Linux.

N.B In Windows 11 non c’è invece da fare nulla perché il sistema operativo usa per default WSL 2.

Metodo 2: Abilitazione di Hyper-V utilizzando il prompt dei comandi

  1. Premiamo il tasto “Win” e digitiamo “cmd”. Quindi, facciamo clic con il pulsante destro del mouse su “Prompt dei comandi” e selezioniamo “Esegui come amministratore”.
  1. Nella finestra del prompt dei comandi, digitiamo il seguente comando e premiamo Invio per eseguire:
DISM /Online /Enable-Feature /All /FeatureName:Microsoft-Hyper-V
  1. Lo strumento di manutenzione e gestione delle immagini di distribuzione inizierà ad abilitare la funzionalità Hyper-V e mostrerà lo stato di avanzamento nel prompt dei comandi.
  1. Una volta completata l’operazione , Riavviamo il PC.

Dopo il riavvio del PC, possiamo aprire e utilizzare Hyper-V Manager per creare macchine virtuali .

Installare WSL e usare Linux in Windows 10 e Windows 11

Adesso che è tutto pronto , passiamo all’ installazione di Linux in Windows 10 e Windows 11 con WSL basta seguire alcuni semplici passaggi. Le ultime versioni di WSL 2 sono compatibili anche con le soluzioni per la virtualizzazione di terze parti (Virtualbox, VMware,…) che possono essere contemporaneamente utilizzate sulla stessa macchina.

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 che segue e premiamo invio

wsl --install 

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

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 --list --online 

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

Prima installazione

Seguendo la procedura (semplice) per configurare Ubuntu durante il suo primo avvio (ma questa operazione è valida anche per le altre versione). Come prima cosa dopo aver lanciato il comando wsl --install ci vorrano alcuni secondi (o minuti, dipende dalla connessione) prima il sistema finisca di scaricare tutti i file necessari.

Una volta terminato il 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.

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!

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

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

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

Comandi WSL per gestire le distribuzioni Linux installate

Aprendo il prompt dei comandi di Windows (Windows+R, digitare cmd) oppure utilizzando una finestra PowerShell (Windows+X quindi selezionare Windows PowerShell in Windows 10 o Terminale in Windows 11) è possibile impartire alcuni comandi per gestire le distribuzioni Linux. Vediamo di seguito quelli principali.

– Elencare le distribuzioni installate in WSL: wsl -l -v
Il comando visualizza la lista delle distribuzioni installate insieme con i rispettivi nomi identificativi. Viene riportata anche la versione di WSL in uso.

Con il comando wsl -l –running viene restituito solo l’elenco delle distribuzioni Linux che risultano al momento in esecuzione tramite WSL.

– Impostare una distribuzione come predefinita: wsl -s
Il comando va utilizzato facendo seguire il nome di una distribuzione Linux installata con WSL. In questo modo è possibile impostarla come predefinita.

– Avviare una distribuzione: wsl -d
Facendo seguire al comando il nome della distribuzione Linux, è possibile avviarla con WSL. È un approccio alternativo rispetto all’utilizzo dell’icona visualizzata nel menu Start.

– Arrestare l’esecuzione di una distribuzione: wsl -t
Per interrompere l’esecuzione di una distribuzione Linux caricata con WSL basta eseguire questo comando seguito dal nome della distribuzione da arrestare.

– Creare un backup di una distribuzione: wsl –export
Quando si lavora con le distribuzioni Linux in WSL capita di voler salvare tutto il contenuto di una distribuzione per poi ripristinarlo successivamente. Si tratta di un’accortezza utile nel caso in cui si effettuassero modifiche e configurazioni importanti: creando un backup non si rischierà di perdere il lavoro svolto e si potrà eventualmente ripristinarlo nel caso in cui si svolgessero interventi inadeguati.

Al comando deve essere fatto seguire il nome di una distribuzione Linux installata e il nome del file .TAR all’interno del quale la configurazione deve essere salvata.

Linux in Windows: come, quando e perché utilizzarlo

– Importare il backup di una distribuzione: wsl –import
Per ripristinare una distribuzione Linux della quale si era creato un backup in precedenza, basta usare il comando seguito dal nome da assegnare alla distribuzione e dal riferimento al file TAR.

– Disinstallare una distribuzione: wsl –unregister
La disinstallazione di una distribuzione Linux caricata in WSL può essere richiesta usando l’interfaccia di Windows, come abbiamo visto in precedenza, ma anche da riga di comando avendo ovviamente cura di specificare il nome della distribuzione da rimuovere.

Comandi utilizzabili in una distribuzione Debian, Ubuntu e derivate

Tutti i comandi Linux funzionano perfettamente con le distribuzioni caricate in WSL. Nel caso di Ubuntu, per esempio, si possono usare i seguenti per gestire i pacchetti software:

– sudo apt update per scaricare informazioni aggiornate sui pacchetti disponibili

– sudo apt upgrade per aggiornare tutti i pacchetti Linux all’ultima versione disponibile

Si possono anche combinare i comandi per eseguire in un colpo solo le due operazioni:
sudo apt update && sudo apt upgrade -y

– sudo apt install seguito dal nome del pacchetto per installare un’applicazione Linux (esempio sudo apt install python-minimal)

– sudo apt remove seguito dal nome del pacchetto per rimuovere un pacchetto Linux precedentemente installato

– sudo apt search seguito dal termine che si desidera cercare all’interno degli archivi dei pacchetti software (ad esempio per individuare il nome esatto del software che s’intende installare).

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 Bashl’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 wgetcatgrepechofind

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 sistem