This post is also available in: Inglese

Reading Time: 5 minutes

In queste settimana c’è stato molto rumore e molto entusiasmo per l’annuncio da parte di Microsoft di includere la bash Linux in Windows 10 a partire dalla prossima  Windows Fast Ring update (14316), almeno per chi partecipa al programma Windows Insider.  Per tutti gli altri bisognerà aspettare il nuovo major upgrade di Windows 10 update: Windows 10 Redstone 1 (aka Anniversary Update).

Questo è stato uno dei primi risultati evidenti della partnership siglata tra Microsoft e Canonical alcuni mesi fa.

Come già detto bisogna far parte del programma Windows Insider e, a quel punto, passare alla modalità di aggiornamenti Fast Ring, andando in “System Settings > Advanced Windows Update options”. Inoltre bisogna passare in modalità Developer Mode, sempre in Settings > Update & security > For developers.

A quel punto, cercando nella varie “Windows Features” sarà possibile attivare il Windows Subsystem for Linux (Beta). Per completare il tutto, per installare Bash (e tutto il suo ambiente), basterà eseguire dal Command Prompt il comando “bash”:

Bash in Windows

Alla fine di un download di circa 1GB, si avrà non solo una bash, ma un ambiente Ubuntu 14.04.4 Long Term Support completo (con alcune limitazioni che vedremo) all’interno di un sistema Microsoft Windows!

1_bash

Non si tratta di una VM o di un container (che comunque non avrebbe senso), ma di un ambiente Ubuntu eseguito in userspace (e quindi non c’è un vero e proprio Linux kernel) in un sottosistema chiamato Windows Subsystem for Linux (WSL). WSL fornisce tutte le API necessarie per “similare” un ambiente Linux. Volendo fare un paragone con il mondo Linux è un po’ il duale di Wine (che converte le chiamate API di Windows in chiamate X-Window di Linux).

In realtà non è nulla di nuovo, dato che per anni esisteva già un sottosistema Unix chiamato Subsystem for Unix (SFU) utilizzabile sia in ambiente Windows client che in ambiente Windows Server.

Sicuramente una dimostrazione interessante di quanto il progetto originale delle “personalità multiple” di Windows NT fosse stato progettato bene fin dagli albori.

La differenza rispetto a SFU sta proprio nella completezza: SFU era molto limitato (ad esempio non aveva una bash, ma solo ksh), con WSL e con l’ambiente Ubuntu (ma teoricamente si potrebbero avere anche ambienti CentOS o di altre distribuzioni) si ha un vero e proprio ambiente compatibile (anche se non formalmente) con il livello POSIX.2, ossia in grado di eseguire tutti quegli ambienti di scripting ed interpretati.

Data la mancanza del kernel Linux, non può invece essere considerato un ambiente POSIX.1, visto che difficilmente tutte le system call potranno funzionari, quindi programmi binari di terze parti (non inclusi nel runtime scaricato) difficilmente funzioneranno senza problemi.

Ma a chi può veramente servire tutto questo?

Forse ai programmatori (o ad alcuni di essi) che potranno sviluppare (con i limiti detti in precedenza) o testare i loro lavori indifferentemente su Linux o Windows. Ma personalmente non ce lo vedo uno sviluppatore GNU/Linux che sceglie di passare da un ambiente Linux ad uno Windows (paradossalmente è più facile che vada su un MacOSX).

Per i sistemisti e ITpro non vedo tutti questi vantaggi. Va bene la potenziale compatibilità POSIX.2, ma dal mio punto di vista la possibilità di eseguire script interpretati multi-piattaforma è normalmente una chimera. A meno di avere ambienti con le stesse applicazioni multi-piattaforma o complicati ambienti eterogenei.

Ricordiamoci che la bash è semplicemente un interprete dei comandi e su Windows ne esiste già uno molto più potente chiamato PowerShell. Inoltre la bash richiama tanti comandi esterni: se può essere bello pensare di usare come find, cut, awk, grep, su Windows, quale potrebbe mai essere l’utilità di comandi come chmod, mount, passwd rapportati ad un ambiente Windows?

Premetto che non ho ancora avuto modo di provare questa novità, sembra sicuramente bella, ma faccio fatica a trovarne un’utilità pratica. E, come già detto, non è neppure così innovativa, visto che SFU già esisteva (seppure con i suoi mille limiti), come pure alternative come il progetto cywin. Sarà interessante vedere se WSL abilita (o abiliterà) anche un X-Server, quello potrebbe essere interessante, visto il numero esiguo di server X free esistenti per Microsoft Windows.

Personalmente sono più interessato a vedere PowerShell su Linux sia per maggior potenza della shell stessa, ma anche per le sue prerogative client-server che permetterebbero, almeno per i sistemisti, una gestione cross-platform più semplice ed omogenea.

Questo video della Build 2016 mostra una demo di Ubuntu su Windows:

Vedere anche (in inglese):

Share

Virtualization, Cloud and Storage Architect. Tech Field delegate. VMUG IT Co-Founder and board member. VMware VMTN Moderator and vExpert 2010-24. Dell TechCenter Rockstar 2014-15. Microsoft MVP 2014-16. Veeam Vanguard 2015-23. Nutanix NTC 2014-20. Several certifications including: VCDX-DCV, VCP-DCV/DT/Cloud, VCAP-DCA/DCD/CIA/CID/DTA/DTD, MCSA, MCSE, MCITP, CCA, NPP.