in Informatica

WSL (Windows Subsystem for Linux) – Introduzione ed installazione

WSL è un progetto nato nel 2016 da parte di Microsoft per permettere l’utilizzo di software nativo Linux ad utenti Windows. La piattaforma in questione è particolarmente utile per utenti che utilizzano software open source (magari nativo Linux) per le loro attività di sviluppo.

Al momento ci sono due versioni di WSL, che differiscono di molto nel come forniscono il servizio sopra introdotto.

WSL1 è un layer di compatibilità che permette di lanciare programmi eseguibili Linux su piattaforma Windows tramite un’interfaccia che emula il kernel Linux senza utilizzarlo in maniera vera e propria. Ogni volta che viene eseguita un’operazione sul layer Linux che richiederebbe una system call, questa azione viene mappata su una system call Windows che è quella che viene poi effettivamente eseguita. Ciò è reso possibile grazie al servizio Windows LxssManager, che gestisce questa e altre features, come quella inerente la gestione della generazione dei processi Linux. 

Pro:

  • Possibilità di utilizzare una miriade di software non nativo su Windows per gestire progetti, applicazioni, ambienti di sviluppo nella modalità più vicina al reale ambiente in cui verranno usati in produzione;
  • Molte distribuzioni Linux sono al momento disponibili per essere utilizzate in tandem con questa interfaccia, che forniscono flessibilità di utilizzo e permettono di non scendere a compromessi se si ha a che fare con progetti che devono essere sviluppati su piattaforme diverse;
  • Velocità non indifferente per essere un’ambiente “emulato”.

Contro:

  • Avendo a che fare con un layer di compatibilità, le funzionalità del sistema sono altamente limitate (molti programmi non sono utilizzabili, molte funzionalità non sono implementate);
  • Il fatto che la piattaforma sia indirizzata soprattutto verso sviluppatori open source implica un forte limite di utilizzo per altri tipi di utenti.
Uno schema semplificato del funzionamento di WSL1

WSL2 permette l’utilizzo completo del Kernel Linux su dispositivi su cui è installato Windows 10. A differenza della prima versione, WSL2 prende la strada della completa virtualizzazione del Kernel invece che un mapping delle system call (soluzione che, anche per motivi di scalabilità, risulta palesemente limitata), ma tramite una strada diversa da molte piattaforme di virtualizzazione.

La maniera in cui ciò è reso possibile è tramite l’utilizzo di Hyper-v, un Hypervisor nativo Windows sviluppato dalla stessa Microsoft, che fornisce l’accesso della macchina fisica al Kernel di Linux (ora direttamente fornito con le distribuzioni Windows!).

Ci sono due tipi diversi di Hypervisor: nativi ed hosted. Hyper-v è un Hypervisor nativo, anche definito in letteratura come bare metal; questi tipi di Hypervisor hanno accesso diretto al livello fisico della macchina su cui sono in esecuzione, senza dover passare attraverso il Sistema Operativo, a differenza di quelli di tipo hosted.

Pro:

  • Tramite l’utilizzo di questa piattaforma si ha il completo accesso a tutte le funzionalità di un sistema Linux.

Contro:

  • L’utilizzo di WSL2 prevede di avere una specifica build di Windows 10 che è, al momento della stesura di questo articolo, accessibile solo tramite il Windows Insider Program, tramite cui si possono ricevere gli ultimi aggiornamenti al sistema Windows ancora non perfezionati: il software ricevuto così è quindi instabile e può corrompere l’installazione di Windows.
Schema del funzionamento della virtualizzazione tramite l’Hypervisor Hyper-V

L’installazione di WSL è propedeutica a quella di WSL2 e sarà, quindi, la prima che verrà presentata qui di seguito.

Installazione WSL

  • Aprire una finestra di Windows PowerShell con privilegi di amministratore, cliccando con il tasto destro sull’icona di start in basso a sinistra o premendo i tasti Win + X e selezionando Windows PowerShell (amministratore);
  • Eseguire il seguente comando che abiliterà WSL e riavviare il computer:
    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux 
    
  • Installare la distribuzione Linux prescelta.

Per quanto riguarda l’installazione della distribuzione, ci sono due possibili approcci: l’installazione tramite Microsoft Store e quella manuale. La seconda modalità è lievemente più complessa ed indirizzata ad utenti esperti (si rimanda al seguente link per saperne di più); la prima è quasi banale: basterà aprire il Microsoft Store e cercare il nome della distribuzione prescelta, selezionarla ed installarla. Una volta fatto, sarà possibile terminare il processo di installazione aprendo una finestra di terminale ed eseguendo il comando bash o <nomedistro>  o ancora <nomedistro>.exe. Questi sono anche i comandi da utilizzare per fare partire una shell di WSL nei futuri avvii (usare il nome della distribuzione come comando di avvio fa sì che la shell venga aperta in ~, usare bash apre invece una shell nella cartella in cui si è al momento nel terminale Windows).

Installazione WSL2

Come accennato nei pro e contro introdotti precedentemente, WSL2 è disponibile solamente se si è in possesso della build 18917 (o maggiore) di Windows 10, che, al momento della scrittura dell’articolo, è disponibile solo tramite il Windows Insider Program. Una volta acquisita la build corretta di windows 10, l’installazione riprende da dove era terminata quella di WSL1:

  • Abilitare il componente per la virtualizzazione e quello per WSL (che dovrebbe già essere attivo), dopodiché riavviare il computer:
    Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  • Scaricare il Kernel di Linux per WSL2;
  • Configurare la distro installata precedentemente per essere avviata con WSL2; il secondo comando permette di impostare WSL2 come WSL di default, il terzo mostra ogni distro installata e quale WSL utilizza.
    wsl --set-version <Distro> 2 
    wsl --set-default-version 2  
    wsl -l -v

A questo punto, qualsiasi sia la versione scelta, WSL sarà installato ed utilizzabile: sarà possibile impostare i propri ambienti di sviluppo come su sistemi Linux avendo i vantaggi di entrambe le piattaforme.

Alla prossima!

EDIT 07/2020: Ad oggi quanto introdotto riguardo WSL2 è disponibile anche per Windows 10 Home; istruzioni riguardo come reperire l’aggiornamento e come usare WSL2 per far girare Docker Desktop su Windows Home al seguente articolo.

Scrivi un commento

Commento