Win­dows-sub­sys­teem voor Li­nux in­stal­le­ren en con­fi­gu­re­ren

Het Win­dows-sub­sys­teem voor Li­nux in­stal­le­ren en con­fi­gu­re­ren

C’t Magazine - - Inhoud - Jan Mahn en Pe­ter Sie­ring

Mi­cro­soft heeft het Win­dows Sub­sy­s­tem for Li­nux (WSL) na een jaar uit de bè­ta­fa­se ge­haald. Bij de Fall Cre­a­tors Up­da­te is het een re­gu­lie­re com­po­nent ge­wor­den. Li­nux­pro­gram­ma's draai­en recht­streeks on­der Win­dows, wat voor­al in­te­res­sant zal zijn voor ont­wik­ke­laars en ad­mi­ni­stra­tors die met bei­de sys­te­men wer­ken.

Het on­ge­loof was groot toen Mi­cro­soft meer dan een jaar ge­le­den aan­kon­dig­de dat Win­dows een soft­wa­re­laag zou gaan krij­gen die Li­nux-co­de zon­der eni­ge con­ver­sie uit zou kun­nen voe­ren. De ge­brui­ker ziet een Li­nux-shell en kan daar­mee op de­zelf­de ma­nier om­gaan als bij een echt Li­nux-sys­teem. Je kunt dan bij­voor­beeld op de ge­brui­ke­lij­ke ma­nie­ren pak­ket­ten in­stal­le­ren.

Naast de soft­wa­re­laag, die Mi­cro­soft een sub­sys­teem noemt, heeft Win­dows een user­land-om­ge­ving no­dig. Dat is in Li­nux jar­gon voor de pro­gram­ma's en bi­bli­o­the­ken waar­uit een dis­tri­bu­tie nor­maal ge­spro­ken be­staat bui­ten de ker­nel. Mi­cro­soft heeft vier van der­ge­lij­ke om­ge­vin­gen aan­ge­kon­digd: Ubuntu, dat er van meet af aan bij zat, Su­se Li­nux En­ter­pri­se Ser­ver (SLES), OpenSu­se en Fe­do­ra – die laat­ste ont­brak op het mo­ment van schrij­ven nog.

Als je een Unix-com­mand­line voor Win­dows zoekt, is het WSL een re­sour­ce­vrien­de­lijk al­ter­na­tief voor vir­tu­a­li­sa­tie

en min­der om­slach­tig als bij­voor­beeld Cyg­win – voor SSH-ver­bin­din­gen met an­de­re ser­vers of de Rasp­ber­ry Pi of voor Unix-lief­heb­bers. Maar die moe­ten het on­der Win­dows wel zon­der grep, sed en awk doen. Het is na­tuur­lijk in het be­lang van Mi­cro­soft dat Win­dows het hoofd­sys­teem is dat daar­naast ook met Li­nux over­weg kan.

Als je voor een ont­wik­kel­pro­ject ech­ter een con­ti­nu draai­en­de web­ser­ver wilt in­stal­le­ren, moe­ten we je te­leur­stel­len: zo­dra je het con­so­le­ven­ster sluit, ster­ven al­le daar­in ge­star­te pro­ces­sen een zach­te dood. Dat is geen fout, maar echt de be­doe­ling van de ont­wik­ke­laars. Als je een ser­vi­ce on­der Li­nux wilt star­ten, schiet Mi­cro­softs WSL dus te­kort.

Be­gin bij het be­gin

De com­po­nent is in­mid­dels deel van de hui­di­ge ver­sie van Win­dows 10 en heeft bij de Fall Cre­a­tors Up­da­te niet meer het bè­ta­sta­di­um als toe­voe­ging. In de tus­sen­tijd heeft WSL ook bij Win­dows Ser­ver zijn in­tre­de ge­daan, zo­dat al­les wat we hier zeg­gen ook voor Win­dows Ser­ver 1709 geldt.

Om te kun­nen ex­pe­ri­men­te­ren met de Fall Cre­a­tors Up­da­te, mag je al­le ou­de­re hand­lei­din­gen weg­gooi­en. Die gel­den voor al­le pre­vie­w­ver­sies en zijn in­mid­dels ach­ter­haald. Je hoeft Win­dows bij­voor­beeld niet meer eerst in de 'Mo­dus voor ont­wik­ke­laars' te zet­ten. Wel moet je nog je toe­vlucht ne­men tot het ou­de Con­fi­gu­ra­tie­scherm, dat bij Win­dows ei­gen­lijk op de no­mi­na­tie staat om te ver­dwij­nen. Start van­uit de zoek­balk control.exe en ga bij 'Pro­gram­ma's' naar 'Win­dows-on­der­de­len in- of uit­scha­ke­len'. Daar staat bij­na on­der­aan 'Win­dows-sub­sys­teem voor Li­nux', waar­mee de ker­nel uit­ge­breid wordt met dri­vers. Een her­start is daar­na dan ook nood­za­ke­lijk.

Ben je wat meer thuis op de com­mand­line of pro­beer je een pre­vie­w­ver­sie van Ser­ver uit, dan kun je Win­dows het­zelf­de la­ten doen met Po­werShell:

Ena­ble-Win­dowsOp­ti­o­nalFe­a­tu­re -On­li­ne

-Fe­a­tu­reNa­me Mi­cro­soft-Win­dows-Sub­sy­s­tem-Li­nux

Als je Win­dows 10 hebt, staan Ubuntu, Su­se Li­nux En­ter­pri­se en OpenSu­se in de Sto­re en kun je die zon­der aan te mel­den met één klik in­stal­le­ren – al leidt dat wel tot een down­load van on­ge­veer 200 MB groot. Op de Co­re-ver­sie van Win­dows Ser­ver zon­der gra­fi­sche in­ter­fa­ce kun je de om­ge­ving we­der­om down­lo­a­den en ac­ti­ve­ren met de com­mand­line. Die wel­licht wat pu­ris­ti­sche ma­nier ver­raadt veel over de ach­ter­gron­den.

Met het Po­werShell-com­man­do

In­vo­ke-We­bRe­quest

-Uri htt­ps://aka.ms/wsl-ubuntu-1604 -OutFi­le ubuntu1604.zip -UseBa­sicPar­sing

down­load je bij­voor­beeld de user­land­be­stan­den van Ubuntu. In de ser­ver­do­cu­men­ta­tie (zie de link on­der­aan dit ar­ti­kel) staan an­de­re links. De op­tie -UseBa­sicPar­sing is al­leen bij een Ser­ver Co­re-in­stal­la­tie no­dig. Het com­man­do

Ex­pand-Ar­chi­ve ubuntu1604.zip ubuntu1604 pakt het ge­down­lo­a­de be­stand uit in de map ubuntu1604. In die map staat dan het be­stand ubuntu.exe. De daad­wer­ke­lij­ke naam ver­schilt van dis­tri­bu­tie tot dis­tri­bu­tie.

Dat exe-be­stand uit het ar­chief speelt een be­lang­rij­ke rol: het dient voor het in­stal­le­ren, ver­wij­de­ren, te­rug­zet­ten en star­ten van de om­ge­ving. Bij de eer­ste aan­roep pakt het exe-be­stand het in het zip-be­stand zit­ten­de in­stal­la­tie-ar­chief (in­stall.tar.gz) uit en maakt daar het root-be­stands­sys­teem voor de user­landom­ge­ving mee. Dat komt in een sub­map 'rootfs' re­la­tief ten op­zich­te van het pad waar­mee het is aan­ge­roe­pen. Het exe-be­stand richt de Li­nux-om­ge­ving niet al­leen in, maar voert het met­een ook uit. Bij de eer­ste start vra­gen de om­ge­vin­gen naar een ge­brui­kers­naam en een wacht­woord, wat ook voor root kan gel­den.

Bij een in­stal­la­tie uit de Sto­re ge­beurt dat ach­ter de scher­men en op an­de­re plek­ken. De be­stan­den voor een Li­nux-om­ge­ving, dus on­der meer het exe-be­stand en het tar.gz-ar­chief, be­lan­den in een map in c:\Pro­gram Fi­les\Win­dowsApps. Win­dows maakt dan ook een bij­pas­send start­me­nu-item voor Ubuntu, Su­se en an­de­re. Het ge­brui­kers­spe­ci­fie­ke deel, het ei­gen­lij­ke root-be­stands­sys­teem van de om­ge­ving, of­te­wel rootfs, heb­ben de ont­wik­ke­laars in het ge­brui­kers­pro­fiel on­der­ge­bracht. Voor ge­brui­ker Hans is dat bij­voor­beeld C:\Users\hans\Ap­pDa­ta\ Lo­cal\Pack­a­ges\Ca­no­ni­calGroupLi­mi­ted. Ubunt­u­onWin­dows_79rhkp1fndgsc\Lo­calSta­te. Win­dows maakt per ge­brui­ker dus een ko­pie van het root-be­stands­sys­teem aan.

Als het niet loopt

Het hand­ma­tig in­stal­le­ren met Po­werShell luk­te bij de pre­vie­w­ver­sies niet zo­da­nig dat meer­de­re ge­brui­kers Li­nuxom­ge­vin­gen kon­den star­ten. Een oor­zaak daar­van was niet te ach­ter­ha­len. De in HKEY_CURRENT_USER\Soft­wa­re\ Mi­cro­soft\Win­dows\Cur­rentVer­si­on\Lxss voor el­ke om­ge­ving aan­ge­maak­te items wa­ren er ge­woon, net als bij een app-in­stal­la­tie via de Sto­re. Een af­wij­kend pad is al met al niet erg han­dig om­dat de exe­be­stan­den dan niet in het zoek­pad en in het Start­me­nu te­recht­ko­men.

Als een Li­nux-om­ge­ving niet meer func­ti­o­neert, kun je hem door het in­ty­pen van zijn naam met de ex­tra op­tie clean te­rug­zet­ten, bij­voor­beeld ubuntu clean voor Ubuntu. Let op: daar­bij gaan be­stan­den en con­fi­gu­ra­tie­ge­ge­vens in het root-be­stands­sys­teem ver­lo­ren. Het te­rug­zet­ten geldt al­tijd al­leen voor de hui­di­ge ge­brui­ker.

Mi­cro­soft waar­schuwt dat je met de stan­daard­mid­de­len van Win­dows uit de in het be­stands­sys­teem van Win­dows zicht­ba­re rootfs-map moet blij­ven. De Unix-ei­gen be­stands­at­tri­bu­ten zijn niet di­rect ge­kop­peld aan de be­stan­den en gaan bij der­ge­lij­ke ope­ra­ties ka­pot. Bij toe­gang van­uit een Li­nux-om­ge­ving geldt die waar­schu­wing na­tuur­lijk niet. Om be­stan­den tus­sen Win­dows en Li­nux uit te wis­se­len, heb­ben de ont­wik­ke­laars al­le Win­dows-schij­ven on­der /mnt ge­mount, bij­voor­beeld c: als /mnt/c.

Als je mak­ke­lijk bij de be­stan­den in het Win­dows-ge­brui­kers­pro­fiel wilt kun­nen, maak je on­der Li­nux met -ln -s / mnt/c/Users/hans ~win een link aan, zo­dat je met cd ~win naar het Win­dows-pro­fiel kunt gaan. Hoe je het au­to­ma­tisch aan­ge­maak­te Li­nux-ac­count noemt, kun je ge­heel zelf be­den­ken – er is geen in­hou­de­lij­ke sa­men­hang tus­sen de ge­brui­kers­da­ta­ba­se van Win­dows en die van de Li­nux-om­ge­ving. Be­stan­den die van­uit Li­nux wor­den aan­ge­maakt ho­ren al­tijd bij de on­der Win­dows aan­ge­mel­de ge­brui­ker, zelfs als de ge­brui­ker root die in de Li­nux-om­ge­ving aan­maakt.

Hoe het werkt

De tech­ni­sche ach­ter­grond van de in­te­gra­tie van Li­nux in Win­dows wordt door Mi­cro­soft zelf ge­ge­ven [1]. De ont­wik­ke­laars heb­ben daar een dun­ne soft­wa­re­laag in Win­dows voor aan­ge­maakt die Li­nux-aan­roe­pen om­zet naar Win­dows­func­ties of an­ders emu­leert. On­der de door Win­dows uit­ge­voer­de Li­nux-pro­gram­ma's draait dus geen Li­nux-ker­nel en er wordt geen pa­ral­lel sys­teem ge­boot: bij de Li­nux-pro­gram­ma's gaat het om ori­gi­ne­le bi­nai­re ELF-be­stan­den met 64bit co­de.

Om er­voor te zor­gen dat Mi­cro­soft on­ver­an­der­de bi­nai­re Li­nux-be­stan­den kan uit­voe­ren, vol­stond het niet om Win­dows nog een sub­sys­teem te ge­ven. Daar zijn er bij Win­dows sinds eeu­wig­he­den al een paar van, bij­voor­beeld voor 16-bit pro­gram­ma's, OS/2- en Po­six-pro­gram­ma's – die voe­ren ech­ter al­leen bi­nai­re PER-be­stan­den uit. In plaats daar­van heb­ben de Win­dows-ont­wer­pers een ge-

Het Win­dows­sub­sys­teem voor Li­nux, wat ei­gen­lijk

een Li­nux­sub­sys­teem voor Win­dows

is, kun je in het Con­fi­gu­ra­tie­scherm

ac­ti­ve­ren.

Li­nux in de Win­dows Sto­re: de user­land-om­ge­vin­gen zijn be­schik­baar als app.

Newspapers in Dutch

Newspapers from Netherlands

© PressReader. All rights reserved.