Microsoft belijdt de liefde voor Linux met meer en meer daden. Op de Build-conferentie toonde de Windows-maker zijn nieuwste toenadering: Linux’ Bash-shell op Windows 10. Zonder virtualisatie, zonder Cygwin, zonder extra werk voor beheerders of developers.
De Windows-wereld is onderhevig aan flinke veranderingen. Microsoft breekt niet alleen met zijn eigen verleden door bijvoorbeeld een gloednieuwe browser te introduceren en daarmee de legacy van Internet Explorer af te bouwen. De producent van veelgebruikte software zoals Windows, Office, Exchange Server en SQL Server breekt ook met eigen afkeer uit het verleden. Het beconcurreerde, bestreden en zelfs verketterde Linux wordt nu serieus het hof gemaakt.
Over en weer
Zo brengt Microsoft één van zijn melkkoeien uit voor Linux: een uitvoering van databasesoftware SQL Server komt komend jaar uit voor het open source-besturingssysteem. Dat zal dan niet qua functionaliteit een volledig gelijke uitvoering zijn van SQL Server 2016: Microsoft brengt de kernmogelijkheden van zijn relationele database uit voor Linux. Het is dus nog niet duidelijk hoe zwaar of licht die Linux-uitvoering wordt.
Op de eigen Build-conferentie afgelopen week heeft Microsoft een strategische stap in tegenovergestelde richting gezet. Niet een eigen softwareproduct naar Linux brengen, maar een open source-product naar kernproduct Windows brengen. Windows 10, dat gratis is voor eindgebruikers, krijgt de Bash-shell die vooral bekend is van Linux. Microsofts acceptatie van open source in het algemeen en Linux in het bijzonder gaat dus twee kanten op.
Naast opdrachtprompt en Powershell
Bash (Bourne-again shell) is van origine een shell voor serverbesturingssysteem Unix en varianten daarvan. Het is een free software vervanger voor de Bourne-shell, die de standaard was op Unix versie 7. Op Linux en ook Mac OS X is Bash sinds jaar en dag de default om commando’s in te voeren en software te draaien. Nu krijgt Windows 10 deze omgeving als alternatieve optie voor Microsofts eigen, ingebouwde opdrachtprompt en de geavanceerde Powershell-omgeving.
Microsoft heeft hiervoor een compleet nieuwe infrastructuur in Windows gebouwd: het Windows Subsystem for Linux (WSL). Hierbij is er geen sprake van virtualisatie, waarbij een Linux-installatie bovenop of naast de actieve Windows-installatie zou draaien. Ook is er geen gebruik gemaakt van de Cygwin-omgeving, die Unix- en ook Linux-programma’s in aangepaste vorm laat draaien op Windows. Cygwin vereist namelijk nog het porten van de software, terwijl WSL ongewijzigde Linux-binaries kan draaien bovenop de NT-kernel. Program manager Scott Hanselman van Microsoft spreekt van ’the sweet spot’ tussen virtualisatie en Cygwin in, meldt technieuwssite WinBeta.
Reguliere user-mode omgeving
In grote lijnen valt dit te zien als een omgekeerde uitvoering van de aanpak die open source-ontwikkelaars hebben gedaan om bepaalde Windows-programma’s op Linux te kunnen draaien. De Wine-software (Wine Is Not an Emulator) laat gebruikers applicaties die zijn geschreven voor Windows toch draaien op hele andere besturingssystemen, zoals OS X en Ubuntu.
Windows kan met WSL dus niet alleen losse Linux-commando’s uitvoeren, maar ook complete, gecompileerde programma’s draaien. Daarvoor is het root-bestandssysteem van Linux-distributie Ubuntu geïmplementeerd in Windows 10, maar zonder de bijbehorende kernel. Daar bovenop draait dan een regulier user-mode image van Ubuntu, dat is aangeleverd door Ubuntu-maker Canonical. Vanuit de Bash-omgeving is ook het Windows-bestandssysteem toegankelijk, zodat beheerders en developers met zowel Windows-tools als Linux-tools werk kunnen verrichten op dezelfde bestanden.
‘Je kunt nu Bash-scripts draaien, Linux command-line tools zoals sed, awk, grep en je kunt zelfs Linux-first tools proberen, zoals Ruby, Git, Python, et cetera direct op Windows’, schrijft developer Mike Harsh van Microsoft in een blogpost. Terwijl WSL dus geen virtualisatie, Cygwin en ook geen containertechnologie gebruikt, valt het volgens Ubuntu-developer Dustin Kirkland wel te zien als een soort emulator.
Project Astoria
Laatstgenoemde blogt dat een team scherpe developers bij Microsoft er hard aan heeft gewerkt om researchwerk van het bedrijf aan te passen zodat Linux-syscalls in realtime worden omgezet in Windows-syscalls. Deze technologie is geen topgeheim geweest, ondanks de verrassing die de Bash-aankondiging van vorige week was. Microsoft heeft namelijk lange tijd hieraan gewerkt met het oog op Android-apps.
Dit zogeheten Project Astoria moest het mogelijk maken om apps voor Android te draaien op Windows-apparaten, zoals smartphones en tablets. Astoria was één van de vier softwarebruggen, vorig jaar al op Build onthuld, waar Microsoft aan werkt om zijn achterstand op de mobiele markt in te halen. Na uitstel en onduidelijkheid over de status van Astoria is het project uiteindelijk gesneefd, wist ict-nieuwssite Ars Technica eind februari te melden. Nu blijkt dat Astoria niet geheel is geschrapt: het keert terug als bredere Linux-laag in Windows.
Nu al uitproberen
It’ers die meedoen aan Microsofts testprogramma Windows Insider krijgen WSL ergens deze maand nog via een update. Zij kunnen het dan uitproberen. De definitieve release, voor alle gebruikers, staat gepland voor deze zomer. Die verjaardagsupdate voor Windows 10 brengt diverse verbeteringen, voor pc’s maar ook voor gameconsole Xbox One.
Misschien een detail voor sommigen, voor anderen weer niet, maar het gaat dus om GNU Bash op Windows 10. Het gaat niet om Linux. Het is de omgeving die je op een GNULinux systeem aantreft.