Windows 10 Build 18917: arriva Windows Subsystem for Linux 2!
Torniamo prepotentemente a parlare di Linux su Windows in seguito alle grandi novità introdotte da Microsoft a partire da Windows 10 Build 18917. Questa versione al momento è disponibile solo per gli iscritti al programma Insider. Se non vedete l’ora di provarla per scoprire questa e molte altre funzionalità in anteprima potete iscrivervi gratuitamente direttamente sul portale Insider all’indirizzo https://insider.windows.com/en-us/
La grande novità di cui vogliamo parlare oggi è il cambiamento sostanziale nella struttura della funzionalità WSL (Windows Subsystem for Linux), che già da qualche anno rappresenta uno degli aspetti più particolari dei nuovi sistemi operativi Microsoft. Un cambiamento che un po’ stravolge quello che conoscevamo di WSL, a tal punto che la funzionalità ora viene chiamata WSL2. Abbiamo ampiamente scritto di WSL nei precedenti articoli su questo portale, quindi non ci dilungheremo troppo nel descrivere le potenzialità dello strumento, ma spendiamo due righe solo per ricordare che grazie a questa funzionalità è possibile utilizzare i binari compilati per Linux direttamente sul nostro client Windows 10 o su Windows Server 2019. La prima versione di WSL, che è ancora presente sulle versioni in uso di Windows 10, utilizza uno strato software che si comporta come un emulatore, e permette così di gestire l’esecuzione dei comandi Linux effettuando le opportune “traduzioni” per rendere le chiamate di sistema gestibili dal kernel Windows.
Ricordiamo come attivare WSL, anche perché rappresenta un prerequisito per l’uso di WSL2, e teniamo presente che la funzionalità è presente su tutti i Windows 10 a 64bit, ma è disattivata di default. L’attivazione è tuttavia semplicissima, è sufficiente infatti aprire “Attiva o disattiva funzionalità di Windows”
Mettere un segno di spunta su “Sottosistema Windows per Linux” e riavviare
In alternativa è possibile installare la funzionalità aprendo una PowerShell con privilegi elevati attraverso il comando:
1 |
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux |
Al riavvio del sistema possiamo scegliere l’app relativa alla distribuzione da installare ed installarla come una normale Windows App. Ad oggi sono disponibili le seguenti distribuzioni, di cui vi fornisco un collegamento ipertestuale, ma l’elenco è in continuo aggiornamento; per ottenere l’elenco completo è sempre possibile cercare “Linux” direttamente sul Microsoft Store.
Per questo esempio abbiamo scelto Ubuntu 18.04 LTS, apriamo quindi il relativo link:
Cliccando su Ottieni verrà avviato il download della distribuzione tramite l’App Microsoft Store
Al termine del download clicchiamo su Launch per avviare il mini-wizard per l’installazione
Durante il Wizard sarà richiesto di scegliere l’username e la password dell’utente da utilizzare all’interno della distribuzione Linux. L’utente è completamente indipendente da quello utilizzato su Windows. Al temine è possibile utilizzare la nostra distribuzione Ubuntu con WSL
Possiamo ora digitare exit per chiudere la shell e terminare l’esecuzione del processo WSL.
Veniamo quindi alla novità introdotta con la build 18917, dove l’emulatore lascia spazio ad un vero Kernel Linux, con un notevole aumento di prestazioni e soprattutto di compatibilità. Questo è reso possibile dalla tecnologia di virtualizzazione inclusa in Windows 10, attraverso la quale WSL2 è in grado di eseguire i comandi Linux facendo uso di una apposita macchina virtuale. Questa macchina virtuale avrà quindi un indirizzo IP diverso da quello della macchina Windows, ed è in fase di prossimo sviluppo il sistema di comunicazione tra Windows e WSL2 anche utilizzando “localhost”.
Vediamo subito come attivare WSL2, operazione che consiste semplicemente nel selezionare tra le funzionalità di Windows quella denominata “Virtual Machine Platform”
In alternativa è possibile installare la funzionalità aprendo una PowerShell con privilegi elevati attraverso il comando:
1 |
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform |
Come vediamo nello screenshot seguente, non è richiesto il riavvio
Possiamo a questo punto indicare alla nostra macchina di utilizzare la nostra app Ubuntu con WSL2 (macchina virtuale) e non più con WSL (emulatore).
Utilizziamo quindi il comando PowerShell seguente per visualizzare la corretta denominazione delle distribuzioni installate sulla macchina
1 |
wsl --list --verbose (o più velocemente wsl -l -v) |
Assicuriamoci che la distribuzione sia in stato “Stopped”, quindi se necessario chiudiamo tutte le istanze di WSL aperte, altrimenti la conversione alla versione 2 restituirà l’errore “Accesso negato”.
Sostituendo a <Distro> il nome della distribuzione attiviamo così Windows Subsystem For Linux versione 2
1 |
wsl --set-version <Distro> 2 |
Nel nostro caso:
1 |
wsl --set-version Ubuntu-18.04 2 |
Da questo momento stiamo utilizzando Ubuntu in una macchina virtuale, perfettamente integrata nel sistema Windows 10; notiamo che la vm non utilizza in alcun modo il servizio Hyper-V. Sulla nostra macchina, infatti, è stato possibile convertire la macchina a WSL2 abilitando l’opzione Virtual Machine Platform senza utilizzare il ruolo Hyper-V. In ogni caso teniamo presente che per l’attivazione di questa funzionalità è richiesto il supporto alla virtualizzazione sul processore e la relativa abilitazione nel BIOS.
Verifichiamo che Ubuntu stia girando in una VM semplicemente guardando il risultato dei comandi ipconfig (da Windows) e ip addr (da Linux); noteremo che gli ip in uso sono diversi
È però ancora assolutamente possibile lanciare comandi Linux dal prompt di comandi di Windows, volendo anche in maniera concatenata:
A questo punto non posso non terminare l’articolo con una prova di forza: vediamo come si comparta WSL2 con nmap il tool di scansione della rete per eccellenza, una sfida davvero ostica perché una delle limitazioni più grosse della prima versione di WSL è quella di non poter utilizzare i RAW socket; nmap infatti non è utilizzabile in una sessione WSL.
Installiamo nmap con
1 |
sudo apt-get install nmap |
E lanciamo un portscan su www.ictpower.it
FUNZIONA! Il risultato ci mostra che sono aperte le porte 80 e 443 come potremmo aspettarci su un qualsiasi webserver, e possiamo sicuramente affermare che il tool nmap viene eseguito con successo.
Direi a questo punto senza ombra di dubbio che WSL2 è promosso a pieni voti, ed ora sta solo a noi capire come sfruttarlo al meglio.
Alla prossima!