Wat kun je allemaal met Bash op Windows 10?

Dankzij de samenwerking tussen Microsoft en Canonical is het in Windows 10 mogelijk om Linux-programma’s te draaien. Hoe zit dat in elkaar en wat kun je ermee?

Sinds Windows build 14316, die te installeren is als je toetreedt tot het Windows Insider-programma, heb je toegang tot een interessante functie: het Windows-subsysteem voor Linux, zoals het officieel heet. Hiermee draai je Linux-software onder Windows 10. De functie is nu nog in bèta; de ‘Anniversary Update’ van Windows 10 die de komende zomer verwacht wordt, zal de definitieve versie bevatten.

Lees ook: Zo installeer je de Linux Bash-shell op Windows 10.
 

Minimaal

Het Windows-subsysteem voor Linux is een minimale Ubuntu-installatie. Voorlopig krijg je versie 14.04 LTS van de populaire Linux-distributie Ubuntu en binnenkort is versie 16.04 LTS beschikbaar. Het is geen virtuele machine of emulatie, maar je draait exact dezelfde Linux-programma’s en Linux-library’s als je rechtstreeks in Linux zou draaien. Eigenlijk doet dit subsysteem het omgekeerde van wat Wine onder Linux doet.

© PXimport



Er draait ook geen Linux-kernel op de achtergrond. Als een Linux-programma of -library een systeemfunctie van de Linux-kernel aanroept, vertaalt het Windows-subsysteem voor Linux dit on-the-fly naar de overeenkomstige Windows-systeemfunctie. Door die vertaalslag kan de hele laag boven de Linux-kernel identiek hetzelfde blijven. En de performance lijdt er amper onder.

Lees ook: Waarom Microsoft Linux nu plotseling omarmt.
 

Beter dan Cygwin

Een andere aanpak om Linux-programma’s rechtstreeks onder Windows te draaien is Cygwin. Maar bij Cygwin wordt de broncode van de Linux-programma’s opnieuw gecompileerd onder Windows. In feite zijn het dan Windows-programma’s, ze roepen dan ook geen functies van de Linux-kernel meer aan. Met het nieuwe Windows-subsysteem voor Linux kun je bit-voor-bit dezelfde Linux-binary’s draaien als onder Ubuntu.

Lees ook: Command Line in Windows draaien.

Ook software installeren gaat hetzelfde als onder Ubuntu. Met de opdracht ‘apt search [ZOEKTERM]’ zoek je naar software en met ‘sudo apt install [PAKKET]’ installeer je een pakket in het subsysteem. Met ‘sudo apt update’ download je de nieuwste lijst met pakketversies en met ‘sudo apt upgrade’ upgrade je het hele Ubuntu-systeem naar de nieuwste beschikbare versie.

© PXimport



Niet alle software werkt met het nieuwe subsysteem samen: zo zijn grafische Linux-programma’s niet ondersteund. Er bestaat wel een workaround door een X Server op Windows te installeren, maar het resultaat is niet zo stabiel. En ook bij de commandlineprogramma’s werkt nog niet alles.
 

Bash-shell

Hét argument van Microsoft om dit subsysteem naar voren te schuiven is dat je daarmee Bash draait, de populaire Linux-shell. Bash is te vergelijken met de opdrachtprompt in Windows, maar veel krachtiger. De officiële naam ‘Windows-subsysteem voor Linux’ wordt dan ook amper gebruikt: zo heet de app waarmee je het subsysteem start ‘Bash on Ubuntu on Windows’. Met de toegang tot talloze commandlineprogramma’s via apt heb je dus een krachtige gereedschapskist tot je beschikking.

Het Ubuntu-systeem is goed geïntegreerd met Windows, zodat je niet de indruk hebt dat je in een afgesloten deel van je computer werkt. De inhoud van je hele Ubuntu-systeem is te vinden in C:\Users\[Gebruikersnaam]\AppData\Local\Lxss\rootfs: Als je dus bestanden downloadt of bewerkt in je Ubuntu-systeem, zijn die ook in Windows bereikbaar. Ook in de andere richting is er toegang mogelijk: al je Windows-schijfletters zijn in Bash beschikbaar onder /mnt. Zo staat de inhoud van je C-schijf onder /mnt/c. Maar er zijn grenzen aan de integratie: Windows-programma’s in de Bash-shell opstarten werkt niet, noch Linux-programma’s in de Windows-opdrachtprompt draaien.

© PXimport

Aan de slag

Maar wat kun je nu met Bash op Windows? Eigenlijk alles wat met niet-grafische programma’s onder Linux mogelijk is. Een eerste handigheidje is ssh. Dit is hét programma waarmee je van een afstand op Linux-computers inlogt. Doe je dat op een Windows-computer, dan werk je traditioneel met het programma PuTTY.

Met Bash op Windows heb je geen PuTTY meer nodig: je opent eenvoudigweg de Bash-shell en start het programma ssh. Wil je bijvoorbeeld op je Raspberry Pi inloggen met ip-adres 192.168.0.101, geef dan de opdracht ‘ssh -l pi 192.168.0.101’. Je krijgt dan de vraag of je de vingerafdruk van de sleutel vertrouwt en geeft daarna het wachtwoord van gebruiker pi op je Raspberry Pi in. Zodra je ingelogd bent, kun je op je Pi opdrachten invoeren.

© PXimport



Enkele basisopdrachten voor Bash moet je wel kennen. Met ‘cd directory’ ga je naar een directory. Net zoals in Windows dus, maar let op dat Linux directory’s en bestanden in een pad met een / scheidt in plaats van een \. De inhoud van een directory bekijk je met ‘ls’. Een bestand kopiëren doe je met ‘cp bestand1 bestand2’, een bestand verplaatsen met ‘mv bestand1 bestand2’ en een bestand verwijderen met ‘rm bestand’. Let op: Bash werkt niet met een prullenbak, dus een verwijderd bestand wordt onmiddellijk verwijderd!
 

Afbeeldingen manipuleren

Het pakket ImageMagick (installeer met ‘sudo apt install imagemagick’) bevat heel wat handige commandlinetools om afbeeldingen te manipuleren. Een van de opdrachten in het pakket is ‘mogrify’, waarmee je eenvoudig afbeeldingen converteert naar een ander bestandsformaat of vergroot of verkleint. Zo halveer je de dimensies van een foto met ‘mogrify -resize 50% foto.jpg’. Let op: dit overschrijft het oorspronkelijke bestand! Wil je dat niet, gebruik dan de ImageMagick-opdracht convert en geef de bestandsnaam van de verkleinde foto op: ‘convert -resize 50% foto.jpg foto_klein.jpg’.

De kracht van ImageMagick komt pas tot zijn recht als je meerdere afbeeldingen met één opdracht begint te manipuleren. Stel dat je van alle jpg-afbeeldingen in een map thumbnails wilt maken. Maak dan eerst een map voor de thumbnails aan met ‘mkdir thumbnails’. Voer dan de volgende mogrify-opdracht uit: ’mogrify -resize 100x100 -path thumbnails *.jpg’. De thumbnails van alle afbeeldingen verschijnen dan in de map.

© PXimport


 

Vooral voor ontwikkelaars

Bash op Windows is vooral interessant voor je als je ontwikkelaar bent. Je hebt nu eenvoudig toegang tot programmeertalen zoals Ruby, Python en PHP en tools zoals de compilercollectie GCC. En je kunt deelnemen aan de ontwikkeling van opensourceprojecten met versiebeheersystemen zoals Git.

Het is zelfs mogelijk om een webserver zoals Apache te draaien om de website of webapplicatie die je ontwikkelt te testen. En je draait uiteraard eenvoudig krachtige editors zoals vim en Emacs om je software in te ontwikkelen. Kortom, als ontwikkelaar heb je nu geen Mac- of Linux-laptop meer nodig om de beste tools te draaien.

Deel dit artikel
Voeg toe aan favorieten