Zijn eerste computer was een Commodore Vic-20, zijn tweede de Sinclair QL, zijn derde een… , kortom computers bepaalden zijn leven. Linus Torvalds vertelt in dit tweede deel – van een interview – meer over de techniek achter Linux.
Als je iemand vraagt naar bepaalde herinneringen, kun je de meest onverwachte dingen te horen krijgen. Mensen hebben vaak heel specifieke associaties waarmee ze gebeurtenissen uit het verleden terughalen, bepaalde muziek bijvoorbeeld. Wat is voor u bepalend voor het verleden?
Het klinkt misschien vreselijk saai, maar – afgezien van heel speciale momenten als mijn huwelijk of de geboorte van mijn kinderen – worden mijn herinneringen vooral gemarkeerd door computers.
De eerste was een Commodore Vic-20. Die was van mijn grootvader van moederskant, een echte verstrooide professor. De Commodore zat verpakt in een soort buitenmodel schoenendoos. Ik kan me nog goed herinneren dat ik als kind op mijn opa’s schoot zijn programma’s zat in te tikken. Het was een hele lieve opa, en hij gaf die computer al gauw aan mij. Het was een van de eerste ‘homecomputers’, eigenlijk een hele verre voorvader van de moderne pc.
Wat was in die tijd de meest gebruikelijke programmeertaal?
Vóór de doorbraak van de pc werd het meeste programmeerwerk op deze computers gedaan in een taal die assembly heette. Computers hadden toen vaak een provisorisch besturingssysteem, vergelijkbaar met DOS voor de pc. Dat verschilde per computer: bij het ene merk was het een heel rudimentair formaat, bij het andere al een wat meer ontwikkeld geheel. Net als bij DOS kon het besturingssysteem een programma laden in een soort Basic-omgeving. De kwestie was dat er toen nog geen standaarden bestonden, en dat een aantal bedrijven, waaronder Commodore, probeerde de markt naar zich toe te trekken.
Wat was de volgende computer die u kocht?
Ik was een behoorlijk voorlijke en geobsedeerde tiener, en ik probeerde uit de Vic-20 te halen wat er in zat. Toen ik daar ten slotte toch genoeg van begon te krijgen, ging ik sparen voor een type van de volgende generatie.
In 1986 of 1987 was het dan eindelijk zover. Ik weet nog goed dat ik ongelooflijk veel tijd had besteed aan marktonderzoek, voor ik kon beslissen welke computer ik ging kopen. Ik probeerde me mijn splinternieuwe, flitsende computer voor te stellen, en ik wist in ieder geval zeker dat het geen pc ging worden. Het klinkt nu misschien vreemd, maar in die tijd waren pc’s geen beste machines. Mijn keus viel op de Sinclair QL – een computer die wellicht alleen de oudere lezer zich zal herinneren.
De Sinclair was een van de eerste 32-bit computers op de markt voor thuisgebruik. Was die niet ontworpen door die prettig gestoorde en briljante Britse geleerde Sir Clive Sinclair?
Precies. Sir Clive, met zijn kale hoofd en zijn malle sikje, was voor mij het summum van Britse excentriciteit. Hij deed me sterk denken aan professor Zonnebloem, uit de Kuifje-strips.
Zijn computer was al net zo excentriek. De Sinclair werd geleverd met Q-DOS, een bizar besturingssysteem dat ik volledig uit mijn hoofd kende. Ik weet nog dat de QL over een voor die tijd behoorlijk geavanceerde Basic-versie beschikte, en ook grafisch heel wat in zijn mars had.
Wat mij van het besturingssysteem van de Sinclair QL echter het meest aansprak, was het feit dat het een soort ‘multitasking’ kende. Je kon er dus meerdere programma’s tegelijk op draaien. Daar kwam nog bij dat de machine geleverd werd met maar liefst 128 kilobyte geheugen – helemaal niets voor moderne begrippen, maar voor die tijd echt monsterachtig veel voor een ‘homecomputer’. Bovendien was het een heuse 32-bit computer: je kon die enorme sloot geheugen dus ook nog eens probleemloos aanspreken. En dat was echt zeldzaam in die tijd.
Computers waren toen doorgaans nog behoorlijk prijzig. Wat kostte die Sinclair QL bijvoorbeeld? En was het eigenlijk een mooie machine?
De QL kostte toen bijna 2000 dollar – voor een arme student inderdaad een vermogen. Er leek in die tijd, althans in Finland, een soort gouden marktregel te bestaan dat computers altijd 2000 dollar moesten kosten. Dat is de laatste jaren pas veranderd. Je koopt nu al een nieuwe pc voor rond de 500 dollar.
Wat het uiterlijk van de QL aangaat: destijds, midden jaren tachtig, was het alles zwart en staal wat de klok sloeg in designland. En de QL deed ijverig mee aan die trend. Ik vond hem prachtig. Hij was volledig matzwart, met een zwart toetsenbord. Het toetsenbord was zo’n tweeënhalve centimeter dik en bood op een of andere geheimzinnige wijze ook onderdak aan de computer zelf.
Waar gebruikte u de Sinclair voor?
Een van de leukste dingen vond ik het klonen van spelletjes. Mijn favoriete spel was Asteroids, met Pacman als goede tweede. Ik weet nog goed dat ik een Pacman-kloon maakte. Oké, het was misschien niet zo goed als het origineel, maar ik was er toch beretrots op. De sprites bewogen even snel over het scherm als in het echte spel, en ze maakten ook dat hypnotiserende kauwgeluid waar tieners over de hele wereld weg van waren.
U hebt een voorliefde voor goede computergames en spreekt ook regelmatig uw bewondering uit voor de makers ervan. Waarom is dat?
De makers van computerspelletjes zijn ware pioniers, in die zin dat ze de hardware echt tot het uiterste belasten. Computers zijn tegenwoordig snel genoeg voor vrijwel alle gangbare toepassingen. Maar als je echt wil weten wat de hardware aankan, moet je eens een van die nieuwe 3D- spelen aanzetten. Als een computer vandaag de dag niet realtime draait, kan ie het schudden. Als je in je tekstverwerker af en toe eens een seconde moet wachten, is er niets aan de hand. Maar in een computerspel kan een fractie van een seconde dodelijk zijn. Voor de moderne veeleisende gamer is zoiets gewoonweg onacceptabel.
Hoelang hebt u de Sinclair QL gehad en wanneer besloot u dat hij de deur uit moest?
Ik heb met de Sinclair drie zeer onstuimige jaren beleefd, op de middelbare school, op de Universiteit van Helsinki en tijdens mijn diensttijd in het Finse leger. Maar in het laatste jaar dat ik hem had kwamen zijn tekortkomingen wel erg duidelijk naar voren. De Motorola 68008 was op zich een prima verwerkingseenheid, maar ik droomde al van de 68020, zijn opvolger, en fantaseerde over interessante zaken als geheugenmanagement en paging.
Welke computer kwam er daarna?
Aan het eind van de jaren tachtig waren de computerwinkels echt afgeladen met originele IBM-pc’s, die toen ondanks alle technische tekortkomingen een doorslaand succes werden. Op die zielloze grijze kasten zat een levensgrote IBM-sticker, en dat was een hoop waard in een tijd waarin het ene na het andere merk ‘homecomputer’ opkwam en weer net zo snel verdwenen was. Daar kwam bij dat voor de IBM alle randapparatuur standaard en gemakkelijk verkrijgbaar was.
Er waren nogal wat puristen in computerland die niet dol waren op de alomtegenwoordigheid van IBM, en op het feit dat de hele architectuur in wezen van IBM afstamde. Behoorde u ook tot dat kamp?
Oh zeker! Als ware computerfanaat was ik volledig verscheurd. Groot geworden met de veel blitsere Motorola-chip, had ik echt een bloedhekel aan de door Wintel gecontroleerde pc-wereld. Maar toen in 1986 de 386-chip uitkwam, werd ik op de een of andere mysterieuze wijze toch richting pc getrokken. De 386 kon alles wat de 68020 kon. En toen in 1990 de massaproductie op gang kwam en de markt vervolgens werd overspoeld door goedkope pc-klonen, werden ze relatief ook nog eens heel betaalbaar. En dat was voor mij op dat moment een doorslaggevend argument: ik had namelijk geen geld.
Maar goed, ik was jong en onbezonnen, dus op 2 januari 1991 – ik weet het nog goed, het was vlak na mijn eenentwintigste verjaardag – nam ik de economisch uiterst riskante beslissing een computer van rond de 3500 dollar te gaan kopen. Zelfs met al het geld dat ik met Kerstmis en op mijn verjaardag had gekregen kwam ik niet eens in de buurt van het benodigde bedrag. Dus kwam ik op het slimme idee de computer op afbetaling te kopen, met eenderde van het koopbedrag als aanbetaling.
Thuisgekomen werd ik meteen door grote twijfels overvallen. Had ik dat wel moeten doen? Een merkloze computer, en erg flitsend zag hij er ook al niet uit. Het was eigenlijk een vreselijk saaie, grijze kast met een 14-inch beeldscherm – voor mij ongeveer even opwindend als een Volvo-bestel. Maar het apparaat beschikte wel over een voor die tijd ongehoord computervermogen. Ik had de man in de computerwinkel zover gekregen dat hij er 4 MB RAM in had gestopt in plaats van 2 MB, en de processor draaide op maar liefst 33 MHz. Ik had ook genoegen kunnen nemen met 16 MHz, maar ik moest en zou het onderste uit de kan halen! De computer was verder voorzien van een uitgeklede DOS-versie, omdat ik hem op de Unix-variant Minix wilde laten draaien.
Waarom Minix?
Dat kwam door een boek, gek genoeg. Je zult met me eens zijn dat boeken een enorme invloed op mensen kunnen hebben. Er zijn mensen die zeggen dat hun leven totaal is veranderd nadat ze de Koran of de Bijbel hadden gelezen. Mijn hang naar spiritualisme is kennelijk nogal beperkt, want het boek dat mij sterk heeft geïnspireerd was Operating Systems: Design and Implementation van Andrew S. Tanenbaum.
Toen ik op 7 mei 1990 uit dienst kwam, schreef ik me onmiddellijk in voor een postdoctorale cursus aan de Universiteit van Helsinki in de herfst. De cursussen waar ik me het meest op verheugde waren die in programmeertaal C en Unix. Ik wilde een goede indruk maken op mijn ouders (die me nog altijd financieel ondersteunden) en mijn hoogleraren, en kocht het 719 pagina’s tellende boek van Tanenbaum, om dat in de zomer te gaan lezen. Als een echte modelstudent.
In het boek bespreekt Tanenbaum, hoogleraar aan de Vrije Universiteit in Amsterdam, het programma Minix, een door hem geschreven instapprogramma voor Unix. Minix is eigenlijk een klein opgezette maar uiterst efficiënte Unix-kloon. Toen ik de inleiding had gelezen en de filosofie achter Unix had bestudeerd, vielen me de schellen van de ogen. [Lacht] Het was waarlijk een openbaring voor me, een mystieke ervaring zoals anderen krijgen tijdens het lezen van de Bijbel.
Ik zag meteen wat een fantastisch, allesomvattend besturingssysteem Unix is – en wat een onbegrensde toepassingsmogelijkheden het systeem biedt. Ik moest uiteraard als de wiedeweerga een computer hebben waar ik Unix op kon draaien, of anders toch ten minste Minix. En dat was dus de reden dat ik die 386 kocht.
Wat is er zo bijzonder aan Unix en de beknopte versie ervan, Minix?
Wat Unix – en dus ook Minix – zo bijzonder maakt, is de fundamentele wijze waarop het systeem zijn doel probeert te bereiken. Unix is volledig procesgeoriënteerd – waarbij een proces iets is wat iets doet in vrijwel elke mogelijke combinatie of toepassing. Je kunt het concept misschien het beste vergelijken met dat van een flexibele taal als bijvoorbeeld het Engels. Het Engelse alfabet kent maar zesentwintig letters, maar met die paar letters kun je werkelijk álles bouwen.
Microsoft Windows werkt volgens een volkomen tegengesteld principe. Windows stelt de gebruiker in staat gecompliceerde dingen te doen die heel betekenisvol kunnen zijn, maar die nergens anders voor kunnen worden gebruikt.
Unix werkt daarentegen volgens de small-is-beautiful-theorie. Het bestaat uit een klein pakket eenvoudige bouwstenen die kunnen worden gecombineerd tot een onbegrensd gecompliceerde formule. Zoals ook de natuurkunde in elkaar zit trouwens.
En wat is nu precies het verhaal achter het ontstaan van Linux?
Oorspronkelijk wilde ik een besturingssysteem maken dat ik uiteindelijk als vervanger voor Minix kon gaan gebruiken. Het hoefde niet meer te kunnen dan Minix, maar het moest de dingen goed doen die Minix fout deed. De terminal-emulatie was bijvoorbeeld heel slecht geregeld in Minix. Erger was dat je de verschillende taken niet kon beheren: je kon een programma niet op de achtergrond plaatsen wanneer je het even niet nodig had. Bovendien was het geheugenbeheer wel erg simplistisch georganiseerd, net als overigens nog altijd het geval is in het Mac-besturingssysteem.
Verder kan ik niet ontkennen dat een zekere ijdelheid ook een rol speelde. Het besturingssysteem is de basis voor alles wat er gebeurt in een computer. Het creëren van een besturingssysteem is de ultieme uitdaging voor elke programmeur. Wanneer je een besturingssysteem ontwerpt, schep je de bestaanswereld voor alle programma’s die in die computer gaan draaien. In feite stel je de regels op voor wat mag en niet mag.
En nu wil je natuurlijk weten hoe je een besturingssysteem opzet?
Uiteraard!
Een besturingssysteem opzetten houdt in dat je eerst vaststelt wat de system calls, de systeemaanroepen, moeten doen, en vervolgens je eigen programma schrijft om die ‘system calls’ op jouw manier te implementeren. Door de bank genomen draait het om een paar honderd opdrachten. Sommige opdrachten hebben meerdere functies. Andere zijn weer heel eenvoudig. De wat meer fundamentele systeemaanroepen zijn vaak uiterst gecompliceerd en voor een groot deel afhankelijk van de bestaande infrastructuur. Neem een systeemaanroep als ‘Write’ of ‘Read’. Je moet een schijfbesturingsprogramma opzetten om iets op schijf te kunnen zetten of van een schijf te kunnen lezen. Ik weet nog dat de opdracht ‘Open’ me een hoop hoofdbrekens heeft gekost. Je moet de complete bestandssysteemlaag schrijven die alle bestandsnamen doorgeeft en bijhoudt waar alles zich op de schijf bevindt. Ik ben alleen al maanden bezig geweest met de opdracht ‘Open’. Maar toen die eenmaal liep, kon dezelfde code ook worden toegepast voor andere functies.
Zo gingen de vroegste ontwikkelingen van Linux in hun werk. Ik las de handleidingen voor de Sun-standaard en andere boeken over besturingssystemen door, links en rechts systeemopdrachten verzamelend en opdracht-voor-opdracht proberend of ik de boel aan de gang kreeg. Dat was echt heel frustrerend.
Het eerste programma dat je draaiend moet hebben is de programmaomgeving, de shell, omdat je anders vrijwel geen enkel ander programma aan de praat krijgt. Bovendien bevat de ‘shell’ zelf veel van de benodigde opdrachten. Gelukkig is de shell in Unix (en in Minix) de ‘moeder’ van alle programma’s, de plaats waar alle andere programma’s worden gestart.
Wanneer had u de ‘shell’ draaiend?
Dat was eind augustus, begin september 1991. Daarna ging alles een stuk gemakkelijker.
Zodra de shell draaide, kon ik de ingebouwde programma’s gaan testen. Vervolgens compileerde ik voldoende nieuwe programma’s om er ook echt iets mee te kunnen doen. Ik compileerde alles in Minix, maar verplaatste de shell naar een speciale partitie die ik voor het nieuwe besturingssysteem had aangemaakt. Privé noemde ik het systeem ‘Linux’.
Maar het bleef niet lang privé, omdat u besloot uw werk op internet te zetten. Wat deed u daartoe besluiten?
Toen ik het systeem eenmaal draaiend had, hoefde ik daar niet eens echt een besluit over te nemen. Het internet was voor mij de gebruikelijke manier om programma’s uit te wisselen. Op 17 september 1991 zette ik Linux op het net en nodigde de mensen uit om me te vertellen wat ze ervan vonden.
Op basis van de binnengekomen reacties besloot ik de eerste versie van mijn besturingssysteem uit te brengen. Als versie 0.01 – waardoor iedereen meteen kon zien dat het een nieuwkomertje was waar nog veel aan moest worden verbeterd. Ik denk dat hooguit twee mensen het programma daadwerkelijk bestudeerden.
Zo omstreeks november besloot ik dat Linux – mede op grond van suggesties van over de hele wereld – goed genoeg was om zonder Minix verder te gaan. Het is conceptueel gezien een enorme stap om de oorspronkelijke hosting-omgeving te laten vallen en het programma geheel op eigen benen te laten staan. Zo’n enorme stap zelfs dat ik de nieuwe versie 0.10 doopte. Een paar weken later volgde versie 0.11.
Omstreeks die tijd begon een aantal mensen mijn systeem echt te gebruiken in nuttige toepassingen. Tot dusver had ik hooguit eenregelige bug fixes ontvangen. Maar nu begonnen mensen me hele nieuwe functies toe te sturen.
Wanneer kwam Linux echt van de grond?
De eerste belangstelling van betekenis kan ik herleiden tot de eerste weken van 1992, toen het aantal Linux-gebruikers plotseling uitgroeide van vijf, tien, twintig mensen – mensen met wie ik mailde en die ik bij naam kende – tot enkele honderden onbekenden. Ik wist niet eens meer wie er allemaal met Linux werkte, en dat was een fantastische ervaring.
Linux kon indertijd nog niet alles wat Minix kon, maar het kon wel vrijwel alles waar de mensen echt behoefte aan hadden. En het beschikte over die ene prachtoptie waar werkelijk iedereen op zat te wachten: page-to-disk. Met ‘page-to-disk’ kun je grotere programma’s draaien dan het geheugen van je computer kan bevatten. Het principe is dat je, wanneer het geheugen van je computer vol zit, een oud stuk van het geheugen neemt, dat naar de harde schijf wegschrijft, onthoudt waar het staat en het vrijgekomen stuk geheugen gebruikt voor waar je mee bezig was. Dat was in 1992 in de eerste introductieweken een absolute sensatie! En daarna heb ik eerlijk gezegd alleen maar naar de toekomst gekeken.
Jonathan Webster Freelance Medewerker
Vertaling: Peter Wesselink