Geschiedenis van Unix en Linux: van 1969 tot nu
Ontdek hoe Unix bij Bell Labs in 1969 ontstond en waarom Linux de standaard in serverruimtes werd. Wij analyseren de impact van de AT&T licenties en de juridische BSD strijd.
De geschiedenis van Unix en Linux in het kort
De geschiedenis van Unix en Linux is één langdurige discussie over wie de broncode mag bezitten. Unix begon in 1969 bij Bell Labs. Linux begon in 1991 in Helsinki en deelt niets van die oorspronkelijke code. Wat tussen beide systemen werd overgedragen, was een ontwerp en een reeks gepubliceerde interfaces: bestanden, processen, pipes en een shell die kleine programma's met elkaar verbindt. Unix verspreidde zich in de jaren 70 via universiteiten omdat een antitrust-schikking uit 1956 AT&T (American Telephone and Telegraph) verbood om software te verkopen; daarom licentieerde Bell Labs de broncode tegen lage kosten. Unix belandde overal terwijl het buiten AT&T niemand toebehoorde, en de licentiegevechten die volgden bepaalden welk vrij Unix-achtig systeem uiteindelijk in uw serverrack terechtkwam.
1969: een reserve PDP-7 en de ideeën die bleven hangen
Bell Labs trok zich in 1969 terug uit het Multics-project. Multics (multiplexed information and computing service) was een groot time-sharing-systeem dat samen met MIT en General Electric werd ontwikkeld, maar de Labs besloten dat het te omvangrijk was om te voltooien. Ken Thompson behield de ideeën die hem bevielen en liet de rest vallen; hij schreef een klein time-sharing-systeem op een afgedankte PDP-7 minicomputer. Dennis Ritchie sloot zich bij hem aan. De naam Unix was een grap ten koste van Multics.
In 1970 verhuisde het systeem naar een PDP-11 die de Labs hadden gekocht voor de typisten van de octrooiafdeling, omdat een tekstverwerkingstool makkelijker te financieren was dan een besturingssysteem. Die machine had 24 KB aan kerngeheugen, verdeeld over het systeem en gebruikersprogramma's. Dit financieringstoeval is de reden waarom de eerste Unix-handleiding, gedateerd november 1971, een set geformatteerde documenten was, en het is de reden waarom u nog steeds man 5 crontab typt. De sectienummers in die handleiding zijn de sectienummers in die van u.
Twee wijzigingen maakten het ontwerp permanent. Pipes werden in 1973 geïntroduceerd in Version 3, omdat Doug McIlroy jarenlang had betoogd dat het mogelijk moest zijn om programma's achter elkaar te schakelen, en Thompson voegde de |-operator toe zodat de uitvoer van het ene programma de invoer van het volgende werd. Vervolgens werd Version 4, later in 1973, herschreven in C. Een besturingssysteem dat in een draagbare taal is geschreven, kan worden verplaatst naar hardware waarvoor het niet oorspronkelijk was geschreven; dit is de reden waarom Unix elke machine waarop het begon te overleven.
Waarom Unix zich verspreidde: AT&T mocht het niet verkopen
Een schikking uit 1956 beëindigde een antitrustzaak tegen AT&T. AT&T behield zijn telefoonmonopolie en accepteerde in ruil daarvoor een beperking: het bedrijf zou zich niet begeven op andere markten dan telecommunicatie. Software was een van die markten. Toen universiteiten om Unix vroegen, kon Bell Labs het dus niet als product verkopen. Ze licentieerden de broncode tegen een symbolisch bedrag, zonder ondersteuning en zonder garantie.
Het effect was groot en niet wat AT&T had gepland. Sixth Edition Unix, uitgebracht in 1975, bereikte honderden informatica-afdelingen met volledige broncode. John Lions van de University of New South Wales drukte die kernelbroncode af met commentaar per regel en gaf er les uit. Een generatie leerde hoe een besturingssysteem werkt door een echt systeem te bestuderen.
Daarna veranderde de licentie. De licentie van de Seventh Edition uit 1979 verbood het gebruik van de broncode in lessen, waardoor het commentaar van Lions circuleerde als kopieën van kopieën. Dit is de kern van het hele verhaal. Unix was overal aanwezig en tegelijkertijd niet vrij, waardoor elke verbetering die iemand aanbracht een verbetering was van andermans propriëtaire code.
Berkeley: de onderdelen van Unix die u daadwerkelijk typt
Ken Thompson bracht het academisch jaar 1975 tot 1976 door aan de University of California, Berkeley, en liet een zeer actieve Unix-groep achter. De Computer Systems Research Group (CSRG) van Berkeley verstuurde tapes met lokale verbeteringen, en die tapes werden BSD, de Berkeley Software Distribution. Bill Joy schreef een groot deel van het vroege werk: 1BSD in 1978, gevolgd door 2BSD in 1979, waarin de vi-editor en de C shell waren opgenomen.
De C shell is de bron van !! en !$. Bash heeft die syntaxis overgenomen, wat de reden is dat bash history expansion nog steeds mensen verrast die een uitroepteken binnen dubbele aanhalingstekens typen, veertig jaar later.
DARPA (het Amerikaanse Defense Advanced Research Projects Agency) betaalde Berkeley vervolgens om de nieuwe internetprotocollen in Unix te implementeren. 4.2BSD, uitgebracht in augustus 1983, bevatte TCP/IP (transmission control protocol over internet protocol) en de socket application programming interface. Elke netwerkservice op uw server roept nog steeds socket(), bind(), listen() en accept() aan in die volgorde, omdat Berkeley die namen in 1983 heeft gekozen.
Eén detail bepaalde het volgende decennium. Een BSD-tape was geen compleet systeem. Het was een verzameling toevoegingen aan AT&T's Unix, en u had een geldige AT&T-bronlicentie nodig om het legaal te kunnen draaien. Berkeley verving de AT&T-onderdelen gedurende meerdere jaren door eigen code, bestand voor bestand. Of die vervanging daadwerkelijk volledig was, is de vraag die later voor de rechter kwam.
1984: de opsplitsing en de Unix-oorlogen
Het Bell System werd op 1 januari 1984 opgesplitst en daarmee kwam het einde aan het consent decree dat AT&T uit de softwaremarkt had gehouden. AT&T kon Unix nu als product verkopen, en dat deden ze ook. Commerciële broncodelicenties werden kostbaar, waardoor Unix niet langer het goedkope systeem was dat universiteiten aan studenten verstrekten.
De leveranciers hadden het systeem inmiddels geforkt. Elk bedrijf dat werkstations produceerde, leverde zijn eigen Unix op zijn eigen hardware. Tegen het einde van de jaren 80 moest een programma dat voor het ene systeem was geschreven, worden geport naar het volgende. De industrie splitste zich in 1988 in twee standaardkampen: de Open Software Foundation aan de ene kant en Unix International aan de andere. Ze brachten jarenlang incompatibele systemen uit terwijl ze discussieerden over welke Unix de echte was.
POSIX (portable operating system interface) kwam voort uit die chaos. IEEE 1003.1 werd in 1988 gepubliceerd en legde vast waaraan een Unix-achtig systeem moet voldoen: de system calls, het gedrag van de shell, de standaard utilities en de interfaces van de C library. Dit is belangrijker dan het lijkt, omdat een standaard een specificatie is en niet onder een licentie valt. Drie jaar later schreef een student een kernel op basis van die documenten.
Minix en het gat dat het achterliet
Andrew Tanenbaum bracht Minix in 1987 uit als het onderwijssysteem voor zijn leerboek over besturingssystemen. Minix was een klein Unix-achtig systeem, de broncode werd bij het boek geleverd en het draaide op de goedkope pc's die studenten daadwerkelijk bezaten. Het was legaal om het in een klaslokaal te bestuderen, wat bij Seventh Edition Unix niet langer het geval was.
Minix bleef bewust klein omdat het verklaarbaar moest zijn in een boek, en Tanenbaum wees patches af die er een productiesysteem van zouden hebben gemaakt. De licentie was bovendien niet vrij: u kocht het boek en het herdistribueren van uw aangepaste Minix was niet aan u om te beslissen. Tegen 1991 kon een student dus wel een werkende Unix-achtige kernel lezen, maar kon hij er niets blijvends op bouwen.
GNU had alles behalve een kernel
Richard Stallman kondigde het GNU-project aan in september 1983, met als doel een volledig vrij Unix-achtig systeem. Tegen 1991 had GNU het merendeel van de onderdelen geproduceerd die een kernel omringen: de GCC-compiler, de GNU C-bibliotheek, de binaire hulpprogramma's en bash, de shell die Brian Fox in 1989 schreef en de shell waarin uw server u nog steeds laat inloggen. De GNU-kernel, Hurd, was het onderdeel dat steeds op zich liet wachten.
De GNU General Public License versie 2 werd gepubliceerd in juni 1991. De regel is kort. U mag de code gebruiken en wijzigen, en als u het resultaat distribueert, moet u de broncode onder dezelfde voorwaarden distribueren. Die regel wordt over twee secties het scharnierpunt van dit verhaal.
Augustus 1991: het bericht naar comp.os.minix
Op 25 augustus 1991 plaatste een student in Helsinki een bericht in de Usenet-groep comp.os.minix:
Hello everybody out there using minix -
I'm doing a (free) operating system (just a hobby, won't be big and
professional like gnu) for 386(486) AT clones.Versie 0.01 kwam uit in september 1991. De code deelde niets met Unix of Minix. Het was een nieuwe kernel voor de 386, ontwikkeld op een Minix-machine, geschreven volgens de POSIX-interfaces en gekoppeld aan de reeds bestaande GNU-tools. Tanenbaum vertelde Torvalds in januari 1992 dat een monolithische kernel een verouderd ontwerp was. Hij had een valide punt wat betreft het ontwerp, maar Torvalds beantwoordde een andere vraag: wat draait er goed op de enige goedkope computer die een student bezit.
In februari 1992 werd versie 0.12 onder de GPL uitgebracht. Torvalds heeft dat sindsdien zijn beste beslissing genoemd. De oorspronkelijke Linux-licentie verbood elke vorm van commercie, wat de cd-verkopers en de ondersteuningsbedrijven die daarna kwamen, zou hebben geblokkeerd. De GPL stond handel toe en dwong tegelijkertijd af dat elke gedistribueerde wijziging terugvloeide naar dezelfde gedeelde broncode.
De rechtszaak: april 1992 tot februari 1994
Berkeley bracht in juni 1991 Networking Release 2 (Net/2) uit: bijna een compleet BSD-systeem, waaruit de van AT&T afgeleide bestanden waren verwijderd. Er ontbraken zes kernelbestanden. Bill en Lynne Jolitz schreven vervangers en brachten in maart 1992 386BSD 0.0 uit, gevolgd door 386BSD 0.1 op 14 juli 1992. Er bestond nu een vrije, complete en volwassen BSD-versie voor de 386, op hetzelfde moment dat Linux nog slechts een hobby-kernel was. Berkeley Software Design, Inc. (BSDi) verkocht een ondersteunde commerciële build, BSD/386, en adverteerde hiermee met het telefoonnummer 1-800-ITS-UNIX.
In april 1992 klaagde Unix System Laboratories (USL), de dochteronderneming van AT&T die destijds eigenaar was van Unix, BSDi aan bij de federale rechtbank in New Jersey wegens bedrijfsgeheimen en het Unix-handelsmerk. De rechtszaak werd later uitgebreid met de Regents of the University of California als gedaagde. De universiteit diende in 1993 een tegenaanklacht in in Californië, met het argument dat AT&T Berkeley-code in System V had gedistribueerd zonder de naamsvermelding die de eigen licentie vereiste.
De juridische kern van de zaak viel in 1993 uiteen. Rechter Dickinson Debevoise weigerde USL een voorlopige voorziening toe te kennen. Hij was van mening dat de auteursrechtclaim van USL op de oudere 32V-code waarschijnlijk ongeldig was, omdat AT&T die code jarenlang had gedistribueerd zonder auteursrechtvermeldingen. Novell kocht USL halverwege 1993 van AT&T en het management van Novell wilde de strijd beëindigen. De zaak werd in februari 1994 geschikt. Van de ongeveer 18.000 bestanden in de Berkeley-distributie werden er drie verwijderd en kregen ongeveer zeventig bestanden een auteursrechtvermelding van USL.
Berkeley bracht in juni 1994 4.4BSD-Lite uit en dit was juridisch gezien schoon. FreeBSD en NetBSD, beide in 1993 opgericht op basis van de betwiste Net/2-code, moesten hun systemen vervolgens herbouwen op de nieuwe basis, wat het grootste deel van de rest van 1994 in beslag nam. Linux 1.0 werd in maart 1994 uitgebracht, midden in die herbouwperiode.
Waarom veroverde Linux de servermarkt en BSD niet?
De rechtszaak is het gangbare antwoord, en dat is ook een deel van de verklaring. Tussen april 1992 en februari 1994 moest iedereen die een vrije Unix-variant voor een product koos, een lopende claim van de advocaten van AT&T afwegen tegen een kernel van een Finse student waar niemand een rechtszaak over kon aanspannen. Dat was precies de periode waarin het web ontstond en de eerste Linux-distributies verschenen: Slackware in juli 1993, Debian in augustus 1993, gevolgd door Red Hat en SUSE.
Vier andere factoren waren net zo belangrijk als de rechtszaak.
- Hardware. Linux richtte zich vanaf de eerste regel code op de gangbare 386 PC, en dat was de hardware die goedkoop werd. Het zwaartepunt van BSD lag bij de VAX en de workstation, en de 386-poort was een extern initiatief van slechts twee personen.
- De licentie. De GPL vereist dat een bedrijf dat een aangepaste kernel distribueert, de wijzigingen publiceert, waardoor werk van leveranciers terugvloeide naar één centrale broncode. De BSD-licentie staat bedrijven toe om wijzigingen privé te houden, en dat deden zij dan ook.
- Het ontwikkelmodel. Torvalds voegde patches van buitenaf snel samen en bracht constant nieuwe releases uit. 386BSD bracht zo traag updates uit dat de eigen gebruikers het in 1993 tweemaal splitsten, in NetBSD en FreeBSD, en in 1995 nogmaals in OpenBSD.
- Momentum. Ontwikkelaars gaan naar waar de andere ontwikkelaars al zijn, en drivers worden geschreven voor het systeem met de meeste gebruikers.
Wees eerlijk over de technische kant. BSD was in 1994 het meer voltooide systeem, met een coherente basis, een gedocumenteerde geschiedenis en netwerkcode waar Linux jaren over deed om die in te halen. Niemand koos in 1994 voor Linux omdat het beter was. Men koos ervoor omdat het beschikbaar was, vrij van juridische lasten, draaide op hardware die men al bezat en elke week verbeterde.
Wat BSD heeft behouden en waar het nu draait
BSD is blijven bestaan. Wat het verloor, was de dominante positie. Het duidelijkste bewijs bevindt zich op uw eigen machine: het OpenBSD-project schreef OpenSSH in 1999, en dit is de SSH-server op vrijwel elk Linux-systeem dat tegenwoordig wordt uitgeleverd. Daarom zijn de SSH-sleutelgewoonten die het leren waard zijn identiek voor beide families.
Netflix streamt video vanaf FreeBSD-appliances. Junos, het besturingssysteem op Juniper-routers, is gebaseerd op FreeBSD. De systeemsoftware van de PlayStation stamt af van FreeBSD. macOS en iOS van Apple bevatten BSD-code in de kernel en in de userland. De permissieve licentie die BSD de gedeelde serverboom kostte, zorgde er wel voor dat BSD-code in een grote hoeveelheid hardware terechtkwam die er nooit melding van maakt.
Als u vandaag een keuze maakt, is de vraag praktisch in plaats van historisch. Linux en FreeBSD vergelijken als server komt neer op ZFS, jails, de ports tree en de mate waarin software van derden uitgaat van Linux als basis. FreeBSD 15 als server is een actueel, onderhouden systeem en geen museumstuk. En Linux tegenover Windows Server is een aparte kwestie met een antwoord dat afhangt van uw applicatiestack.
Het ontwerp uit 1969 dat u vandaag op een VPS gebruikt
Elk van deze onderdelen is ouder dan de meeste mensen die ze gebruiken.
- De pipe.
who | wc -ltelt ingelogde gebruikers omdat Version 3 Unix in 1973 het mogelijk maakte dat de output van het ene programma de input van het andere werd. - De handleidingssecties.
man 1 lsenman 5 crontabgebruiken het nummeringsschema uit de handleiding van november 1971. - De splitsing van het bestandssysteem.
/usrbestaat omdat de root-schijf op die PDP-11 in 1971 vol raakte en de ontwikkelaars bestanden naar het tweede schijfpakket verplaatsten. Distributies hebben deze splitsing inmiddels ongedaan gemaakt: voerls -ld /binuit op Ubuntu 24.04 of Debian 13 en u krijgt een symbolische link naarusr/bin. - De socket-aanroepen. Berkeley schreef deze voor 4.2BSD in 1983, en elke netwerk-daemon gebruikt ze nog steeds.
- POSIX. Een
#!/bin/sh-script dat geschreven is volgens de standaard, draait ongewijzigd op Linux, op FreeBSD, op macOS en op Solaris, omdat de standaard hetgeen is dat zij allemaal hebben geïmplementeerd.
Wanneer u een virtual private server huurt en inlogt, typt u in een interface die ontworpen is voor een machine met 24 KB geheugen en een octrooiafdeling om te bedienen. Het overleefde omdat de interface werd gepubliceerd, bediscussieerd, gestandaardiseerd en vervolgens vanaf nul opnieuw werd geïmplementeerd door mensen die de originele code nooit mochten inzien.
FAQ
Bevat Linux originele Unix-code?
Nee. Linus Torvalds schreef de kernel vanaf nul vanaf 1991, waarbij hij zich richtte op de POSIX-interfaces in plaats van op enige AT&T-broncode. De Unix-erfenis is een ontwerp en een gepubliceerde interface: bestanden, processen, pipes en de namen van systeemoproepen. De GNU-tools rondom de kernel zijn eveneens vanaf nul geschreven, beginnend in 1983. Die onafhankelijkheid is de reden dat de rechtszaak van AT&T over BSD-code Linux nooit heeft geraakt.
Wanneer was de rechtszaak van AT&T tegen BSD, en heeft dit BSD de das omgedaan?
USL, de dochteronderneming van AT&T die eigenaar was van Unix, klaagde BSDi aan in april 1992 en voegde later de University of California toe als gedaagde. In 1993 wees de rechter een voorlopige voorziening af, met het oordeel dat de auteursrechtclaim op de oudere 32V-code waarschijnlijk ongeldig was. Novell kocht USL medio 1993 en schikte de zaak in februari 1994, waarbij drie bestanden van de ongeveer 18.000 werden verwijderd en ongeveer zeventig bestanden een nieuwe auteursrechtvermelding kregen. Het heeft BSD niet de das omgedaan. Het bevroor de adoptie van BSD gedurende de twee jaar waarin de wereld koos voor een vrije Unix.
Waarom nam Linux de servermarkt over in plaats van BSD?
Rechtszekerheid was één reden: gedurende 1992 en 1993 liep er geen rechtszaak tegen Linux, terwijl er wel een tegen BSD liep. Andere redenen waren de 386 als doelplatform vanaf de eerste dag, de GPL die wijzigingen van leveranciers terugbracht in één enkele broncodeboom, en een samenvoegproces dat snel genoeg was om bijdragers betrokken te houden terwijl 386BSD in drie richtingen splitste. Technische superioriteit was niet de doorslaggevende factor, aangezien BSD in 1994 het meer voltooide systeem was.
Is het nog steeds de moeite waard om FreeBSD te draaien?
Ja, en wel om concrete redenen: ZFS is geïntegreerd in het basissysteem, jails vormen een volwassen isolatiemodel, het basissysteem wordt ontwikkeld als één samenhangend geheel en de documentatie blijft accuraat. De kosten zitten in het compatibiliteitswerk, omdat de meeste serversoftware van derden, container-tools en ondersteuning van leveranciers uitgaan van Linux. Kies voor FreeBSD wanneer de opslag- en netwerkmogelijkheden die kosten rechtvaardigen, in plaats van uit loyaliteit aan de oudere afstamming.