Uitleg over BSD

Greg Lehey

<grog@FreeBSD.org>

Revision: 47687

Juridische kennisgeving

Last modified on 2015-10-27 19:12:00 by rene.

Samenvatting

In de open-source wereld is het woord “Linux” bijna een synoniem van “besturingssysteem”, maar het is niet het enige open-source UNIX® besturingssysteem. Volgens de Internet Operating System Counter, draait sinds april 1999 31.3% van de machines op de wereld die met een netwerk verbonden zijn Linux. 14.6% draait BSD UNIX®. Sommige van 's werelds grootste webinstallaties, zoals Yahoo!, draaien BSD. De drukste FTP-server van de wereld van 1999 (nu buiten werking), ftp.cdrom.com, gebruikte BSD om 1.4 TB aan gegevens per dag over te brengen. Het is duidelijk dat dit geen nichemarkt is: BSD is een goed bewaard geheim.

Dus wat is het geheim? Waarom is BSD niet bekender? Dit artikel behandelt deze en andere vragen.

>In dit artikel zullen verschillen tussen BSD en Linux zo worden aangegeven.

[ Opgedeeld HTML bestand / Enkel HTML bestand ]

1. Wat is BSD?

BSD is een afkorting van “Berkeley Software Distribution”. Het is de naam van broncodedistributies van de universiteit van California te Berkeley, wat origineel uitbreidingen waren van het besturingssysteem UNIX® van AT&T Research. Verschillende projecten over open-source besturingssystemen zijn gebaseerd op een uitgave van deze broncode die bekend staat als 4.4BSD-Lite. Ze omvatten ook een aantal pakketten van andere open-source projecten, opmerkelijk genoeg onder andere van het GNU-project. Het besturingssysteem in het geheel omvat:

De BSD-kernel, die proces-scheduling, geheugenbeheer, symmetrische multi-processing (SMP), apparaatstuurprogramma's, etcetera afhandelt.

In tegenstelling tot de Linux-kernel zijn er een aantal verschillende BSD-kernels met verschillende mogelijkheden.

De C-bibliotheek, de basis-API voor het systeem.

De C-bibliotheek van BSD is gebaseerd op code van Berkeley, niet van het GNU-project.

Gereedschappen zoals shells, bestandsgereedschappen, compilers en linkers.

Sommige gereedschappen zijn afgeleid van het GNU-project, andere niet.

Het X Window-systeem, wat grafisch afbeelden afhandelt.

Het X Window-systeem dat in de meeste versies van BSD wordt gebruikt wordt onderhouden door het X.Org project. FreeBSD staat de gebruiker toe om te keizen uit verschillende bureaubladen, zoals GNOME, KDE of Xfce; en lichtgewicht vensterbeheerders zoals Openbox, Fluxbox of Awesome.

Vele andere programma's en gereedschappen.

2. Wat, een echte UNIX®?

De BSD-besturingssystemen zijn geen klonen, maar open-source afgeleiden van AT&T's Research UNIX® besturingssysteem, wat ook de voorouder is van het moderne UNIX® System V. Dit kan als een verrassing komen. Hoe kon dit gebeuren als AT&T nooit zijn code als open-source heeft uitgegeven?

Het is waar dat AT&T UNIX® niet open-source is, en wat betreft copyright is BSD zeer zeker niet UNIX®, maar van de andere kant heeft AT&T bronnen geïmporteerd van andere projecten, nota bene de Computer Science Research Group (CSRG) van de University of California in Berkeley, CA. In 1976 is de CSRG begonnen met het uitgeven van tapes van hun software, die ze Berkeley Software Distribution of BSD noemden.

Initiële BSD-uitgaven bestonden grotendeels uit gebruikersprogramma's, maar dat veranderde enorm toen CSRG in een contract belandde met het Defense Advanced Research Projects Agency (DARPA) om de communicatieprotocollen in hun netwerk, ARPANET, te vernieuwen. De nieuwe protocollen stonden bekend als Internet Protocols, later TCP/IP na de belangrijkste protocollen. De eerste wijdverbreide implementatie die gedistribueerd werd was deel van 4.2BSD, in 1982.

In de loop van de jaren 80 ontsproten er een aantal nieuwe werkstationbedrijven. Vele verkozen het om UNIX® te licenseren boven het ontwikkelen van hun eigen besturingssystemen. In het bijzonder licenseerde Sun Microsystems UNIX® en implementeerde het een versie van 4.2BSD, wat ze SunOS™ noemden. Toen AT&T zelf UNIX® commercieel mocht verkopen, begonnen ze met een ietwat kale basisimplementatie genaamd System III, die snel gevolgd werd door System V. De codebase van System V bevatte geen netwerkcode, dus bevatten alle implementaties aanvullende software van de BSD, waaronder de TCP/IP-software, maar ook gereedschappen zoals de csh-shell en de tekstverwerker vi. Deze uitbreidingen stonden gezamenlijk bekend als de Berkeley Extensions.

De BSD-tapes bevatten de broncode van AT&T en hadden dus een UNIX® bronlicentie nodig. Tegen 1990 raakten de fondsen van de CSRG uitgeput, en er dreigde sluiting. Sommige leden van de groep besloten om de BSD-code uit te geven, welke Open Source was, zonder de propriëtaire code van AT&T. Dit gebeurde eindelijk met de Networking Tape 2, gewoonlijk bekend als Net/2. Net/2 was geen compleet besturingssysteem: ongeveer 20% van de kernelcode ontbrak. Een van de leden van de CSRG, William F. Jolitz, schreef de overblijvende code en gaf het in het begin van 1992 uit als 386BSD. In diezelfde tijd begon een andere groep van ex-CSRG-leden een commercieel bedrijf genaamd Berkeley Software Design Inc. en gaf een betaversie van een besturingssysteem genaamd BSD/386 uit, welke op dezelfde bronnen was gebaseerd. De naam van het besturingssysteem werd later veranderd in BSD/OS.

386BSD werd nooit een stabiel besturingssysteem. In plaats daarvan splitsten er twee andere projecten van af in 1993: NetBSD en FreeBSD. De twee projecten groeiden oorspronkelijk uit elkaar wegens verschillen in de hoeveelheid geduld om op verbeteringen aan 386BSD te wachten: de mensen van NetBSD begonnen in het begin van het jaar, en de eerste versie van FreeBSD was niet klaar voor het einde van het jaar. In de tussentijd waren de codebases genoeg uit elkaar gegroeid om samenvoegen ervan moeilijk te maken. Tevens hadden de projecten verschillende doelen, wat we hieronder zullen zien. In 1996 splitste OpenBSD zich af van NetBSD, en in 2003 splitste DragonFlyBSD zich af van FreeBSD.

3. Waarom is BSD niet bekender?

Om een aantal redenen is BSD relatief onbekend:

De BSD-ontwikkelaars zijn vaak meer geïnteresseerd in het verbeteren van hun code dan het aan de man brengen.

Veel van de populariteit van Linux komt door factoren buiten de Linux-projecten, zoals de pers, en door bedrijven die zijn opgericht om Linux-diensten aan te bieden. Tot voor kort hadden de open-source BSDs zulke voorstanders niet.

BSD-ontwikkelaars zijn vaak meer ervaren dan Linux-ontwikkelaars, en hebben minder interesse in het systeem gemakkelijk in gebruik te maken. Nieuwelingen voelen zich vaak meer op hun gemak met Linux.

In 1992 klaagde AT&T BSDI, de verkoper van BSD/386, aan op verdenking dat het product code bevatte waarover AT&T copyright had. De zaak werd buiten de rechtbank om in 1994 beslist, maar het spook van de rechtszaak blijft mensen achtervolgen. Een artikel uit maart 2000 dat op het web werd gepubliceerd claimde dat de zaak “recentelijk beslist” was.

Eén detail dat de rechtszaak ophelderde is de naamgeving: in de jaren 80 stond BSD bekend als “BSD UNIX®”. Met het nemen van de laatste vestiging van AT&T-code van BSD, verloor het ook het recht op de naam UNIX®. U zult dus verwijzingen in boektitels zien naar “het besturingssysteem 4.3BSD UNIX®” en “het besturingssysteem 4.4BSD”.

4. BSD en Linux vergelijken

Wat is nou echt het verschil tussen bijvoorbeeld Debian Linux en FreeBSD? Voor de gemiddelde gebruiker is het verschil verrassend klein: beiden zijn UNIX®-achtige besturingssystemen. Beiden worden ontwikkeld door niet-commerciële projecten (dit geldt uiteraard niet voor vele andere distributies van Linux). In de volgende sectie wordt BSD bekeken en vergeleken met Linux. De beschrijving is het beste van toepassing op FreeBSD, dat een geschatte 80% van alle BSD-installaties voor rekening neemt, maar de verschillen van NetBSD, OpenBSD, en DragonFlyBSD zijn klein.

4.1. Wie bezit BSD?

Geen enkel persoon of bedrijf bezit BSD. Het wordt tontwikkeld en verspreid door een gemeenschap van zeer technische en toegewijde wereldwijde contribuanten. Sommige onderdelen van BSD zijn open-source projecten op zichzelf en worden beheerd door verschillende projectbeheerders.

4.2. Hoe wordt BSD ontwikkeld en bijgewerkt?

De BSD-kernels worden ontwikkeld en bijgewerkt volgens het Open Source ontwikkelmodel. Elk project beheerst een publiek toegankelijke broncodeboom onder Subversion (SVN), wat alle bronbestanden voor het project bevat, inclusief documentatie en andere toevallige bestanden. SVN stelt gebruikers in staat om een “check out” te doen (met andere woorden, om een kopie te maken) van elke gewenste versie van het systeem.

Een grote groep van wereldwijde ontwikkelaars dragen bij aan verbeteringen aan BSD. Ze zijn verdeeld in drie soorten:

Contributors schrijven code of documentatie. Ze hebben geen toestemming om direct naar de broncodeboom te committen (code toe te voegen). Om hun code aan het systeem toe te voegen, moet het herzien en ingecheckt worden door een geregistreerde ontwikkelaar, die een committer wordt genoemd.

Committers zijn ontwikkelaars met schrijftoegang tot de broncodeboom. Om committer te worden, moet een individu kennis en kunde laten zien in het gebied waarin hij actief is.

Het is aan de discretie van de individuele committer of hij instemming moet krijgen voordat er veranderingen naar de broncodeboom worden gecommit. In het algemeen mag een ervaren committer veranderingen maken waarvan duidelijk is dat ze correct zijn zonder hiervoor consensus te verkrijgen. Een committer van het documentatieproject bijvoorbeeld mag typografische of grammaticale fouten verbeteren zonder dat deze herzien worden. Van de andere kant wordt van ontwikkelaars die verreikende of gecompliceerde veranderingen maken verwacht dat ze hun veranderingen ter herziening insturen voordat ze deze committen. In het uiterste geval kan een lid van het coreteam met een functie als Principal Architect eisen dat de veranderingen uit de boom verwijderd worden, een proces dat bekend staat als backing out. Alle committers ontvangen email die elke individuele commit beschrijft, het is dus niet mogelijk om heimelijk te committen.

Het Coreteam. FreeBSD en NetBSD hebben elk een coreteam dat het project beheert. De coreteams zijn in de loop van de projecten ontstaan, en hun rol is niet altijd eenduidig gedefinieerd. Het is niet nodig om ontwikkelaar te zijn om lid te zijn van het coreteam, hoewel het normaal is. De regels voor het coreteam verschillen per project, maar in het algemeen hebben ze een grotere inspraak in de richting van het project dan niet-leden van het coreteam hebben.

Deze opstelling verschilt in een aantal opzichten van die van Linux:

Geen enkel persoon heerst over de inhoud van het systeem. In de praktijk is dit verschil overdreven, aangezien de Principal Architect kan eisen dat code gebacked-out wordt, en zelfs in het Linux-project mogen meerdere mensen veranderingen maken.

Van de andere kant is er een centraal repository, een enkele plaats waar u de gehele broncode van het besturingssysteem kunt vinden, inclusief alle oudere versies.

BSD-projecten beheren het gehele “Besturingssysteem”, niet alleen de kernel. Dit onderscheid is slechts van beperkt nut: noch BSD noch Linux is nuttig zonder applicaties. De applicaties die onder BSD gebruikt worden zijn vaak dezelfde als de applicaties die onder Linux gebruikt worden.

Een gevolg van het formele beheer van een enkele SVN-broncodeboom is dat de BSD-ontwikkeling helder is, en dat het mogelijk is om elke versie van het systeem aan de hand van het uitgavenummer of datum te benaderen. SVN staat ook incrementele wijzigingen aan het systeem toe: het repository van FreeBSD bijvoorbeeld wordt ongeveer 100 keer per dag bijgewerkt. De meeste van deze veranderingen zijn klein.

4.3. BSD-uitgaven

FreeBSD, NetBSD, en OpenBSD bieden het systeem in drie verschillende “uitgaven” aan. Net als bij Linux worden aan uitgaven nummers zoals 1.4.1 of 3.5 toegekend. Tevens heeft het versienummer een achtervoegsel die het doel aangeeft:

De ontwikkelversie van het systeem wordt CURRENT genoemd. FreeBSD kent een nummer aan CURRENT toe, bijvoorbeeld FreeBSD 5.0-CURRENT. NetBSD hanteert een lichtelijk ander schema voor de naamgeving en voegt een achtervoegsel van een enkele letter toe welke veranderingen aan de interne interfaces aangeeft, bijvoorbeeld NetBSD 1.4.3G. OpenBSD kent geen nummer toe(“OpenBSD-current”). Alle nieuwe ontwikkelingen aan het systeem komen in deze tak terecht.

De projecten brengen met regelmatige tussenpozen, tussen twee en vier keer per jaar, een RELEASE-versie van het systeem uit, welke beschikbaar is op CD-ROM en vrij te downloaden is van FTP-sites, bijvoorbeeld OpenBSD 2.6-RELEASE of NetBSD 1.4-RELEASE. De RELEASE-versie is bedoeld voor eindgebruikers en is de normale versie van het systeem. NetBSD biedt ook patch-uitgaven aan met een derde cijfer, bijvoorbeeld NetBSD 1.4.2.

Wanneer er bugs in een RELEASE-versie worden gevonden, worden ze gerepareeed, en worden de reparaties toegevoegd aan de SVN-boom. In FreeBSD wordt de resulterende versie de STABLE-versie genoemd, terwijl het in NetBSD en OpenBSD de RELEASE-versie blijft heten. Kleinere nieuwe eigenschappen kunnen ook aan deze tak worden toegevoegd na een testperiode in de CURRENT-tak. Beveiligings- en andere belangrijke reparaties worden ook op alle ondersteunde RELEASE-versies toegepast.

In contrast hiermee onderhoudt Linux twee gescheiden codebomen: de stabiele versie en de ontwikkelversie. Stabiele versies hebben een even klein versienummer, zoals 2.0, 2.2, of 2.4. Ontwikkelversies hebben een oneven klein versienummer, zoals 2.1, 2.3, of 2.5. In alle gevallen wordt het nummer gevolgd door een nog een nummer dat de exacte uitgave aangeeft. Verder voegt elke verkoper zijn eigen gebruikersprogramma's en gereedschappen toe, dus is de naam van de distributie ook belangrijk. Elke verkoper van distributies kent ook versienummers aan de distributie toe, dus kan een volledige omschrijving iets zijn als “TurboLinux 6.0 met kernel 2.2.14” zijn.

4.4. Welke versies van BSD zijn beschikbaar?

In tegenstelling tot de vele Linux-distributies, zijn er slechts vier grote open-source BSDs. Elk BSD-project beheert zijn eigen broncodeboom en zijn eigen kernel. In de praktijk schijnt er echter minder divergentie te zijn tussen de gebruikerscode van de projecten dan dat er in Linux is.

Het is moeilijk om de doelen van elk project te categoriseren: de verschillen zijn erg subjectief. Het volgende geldt ongeveer:

FreeBSD richt zich op hoge prestaties en gebruikersgemak voor eindgebruikers, en is een favoriet van aanbieders van webinhoud. Het draait op een aantal platformen en heeft aanzienlijk meer gebruikers dan de andere projecten.

NetBSD gaat voor maximale portabiliteit: “of course it runs NetBSD”. Het draait op machines variërend van palmtops tot grote servers, en het is zelfs gebruikt in ruimtemissies van NASA. Het is een bijzonder goede keuze om op oude niet-Intel® hardware te draaien.

OpenBSD gaat voor beveiliging en code-puurheid: het gebruikt een combinatie van het open-source concept en rigoureuze codeherzieningen om een systeem te maken dat aantoonbaar correct is, waardoor het de keuze is van beveiligingsbewuste organisaties zoals banken, beurzen, en afdelingen van de Amerikaanse overheid. Net als NetBSD draait het op een aantal platformen.

DragonFlyBSD gaat voor hoge prestaties en schaalbaarheid variërend van een UP-systeem van een enkele computer tot een reusachtig geclusterd systeem. DragonFlyBSD heeft verscheidene technische langetermijndoelen, maar de focus ligt op het bieden van een SMP-capabele infrastructuur dat eenvoudig te begrijpen en te onderhouden is, en waarvoor eenvoudig te ontwikkelen is.

Er zijn ook twee aanvullende BSD UNIX® besturingssystemen die niet open-source zijn, BSD/OS en Mac OS® X van Apple:

BSD/OS was de oudste van de afgeleiden van 4.4BSD. Het was niet open-source, alhoewel licenties voor de broncode tegen relatief kosten beschikbaar waren. Het leek in vele opzichten op FreeBSD. Twee jaar na de aankoop van BSDi door Wind River Systems slaagde BSD/OS er niet in om als een onafhankelijk product te overleven. Ondersteuning en broncode kunnnen nog steeds beschikbaar zijn van Wind River, maar alle nieuwe ontwikkelingen zijn gericht op het embedded besturingssysteem VxWorks.

Mac OS® X is de nieuwste versie van het besturingssysteem voor de Mac® lijn van Apple®. De BSD-kern van dit besturingssysteem, Darwin is beschikbaar als een volledig werkend open-source besturingssysteem voor x86- en PPC-computers. Het grafische systeem Aqua/Quartz en vele andere propriëtaire aspecten van Mac OS® X blijven echter closed-source. Verschillende Darwin-ontwikkelaars zijn ook FreeBSD-committers, en vice-versa.

4.5. Hoe verschilt de BSD-licentie van de publieke GNU-licentie?

Linux is beschikbaar onder de GNU General Public License (GPL), welke ontwikkeld is om closed-source software te elimineren. In het bijzonder moet elk afgeleid werk van een product dat onder de GPL is vrijgegeven ook met de broncode geleverd worden indien dat gevraagd wordt. In tegenstelling hiermee is de BSD-licentie minder beperkend: distributies met alleen binairen zijn toegestaan. Dit is in het bijzonder aantrekkelijk voor embedded applicaties.

4.6. Wat moet ik nog meer weten?

Aangezien er minder applicaties beschikbaar zijn voor BSD dan voor Linux, hebben de ontwikkelaars van BSD een Linux-compatibiliteitspakket ontwikkeld, wat het mogelijk maakt om Linux-programma's onder BSD te draaien. Het pakket bevat zowel kernelwijzigingen, om Linux-systeemaanroepen correct uit te voeren, en Linux-compatibiliteitsbestanden zoals de C-bibliotheek. Er is geen merkbaar verschil in uitvoersnelheid tussen een Linux-applicatie die op een Linux-machine draait en een Linux-applicatie die op een BSD-machine die dezelfde snelheid heeft draait.

De “alles van één leverancier”-natuur van BSD dat upgrades veel makkelijker af te handelen zijn dan dat vaak met Linux het geval is. BSD handelt upgrades aan bibliotheekversies af door compatibiliteitsmodulen voor eerdere bibliotheekversies aan te bieden, dus is het mogelijk om binairen die enige jaren oud zijn zonder problemen te draaien.

4.7. Wat zou ik moeten gebruiken, BSD of Linux?

Wat betekent dit allemaal in de praktijk? Wie zou BSD moeten gebruiken, en wie Linux?

Dit is een erg moeilijke vraag om te beantwoorden. Hier zijn wat richtlijnen:

“If it ain't broke, don't fix it”: als u al een open-source besturingssysteem gebruikt, en u er tevreden over bent, dan is er waarschijnlijk geen goede reden om over te stappen.

BSD-systemen, in het bijzonder FreeBSD, kunnen merkbaar beter presteren dan Linux. Maar dit geldt niet voor alles. In veel gevallen zijn er weinig of geen prestatieverschillen. In sommige gevallen kan Linux beter presteren dan FreeBSD.

In het algemeen hebben BSD-systemen een betere naam qua betrouwbaarheid, voornamelijk als het resultaat van een volwassenere codebase.

BSD-projecten hebben een betere naam qua kwaliteit en volledigheid van hun documentatie. De verschillende documentatieprojecten richten zich op het bieden van actief bijgewerkte documentatie, in vele talen, en op het behandelen van alle aspecten van het systeem.

De BSD-licentie kan aantrekkelijker zijn dan de GPL.

BSD kan de meeste Linux-binairen uitvoeren, terwijl Linux geen BSD-binairen kan uitvoeren. Vele implementaties van BSD kunnen ook binairen van andere UNIX®-achtige systemen uitvoeren. Als gevolg kan BSD een eenvoudigere migratieroute zijn van andere systemen dan dat Linux zou zijn.

4.8. Wie biedt ondersteuning, diensten, en training voor BSD aan?

BSDi / FreeBSD Mall Inc. bieden sinds bijna een decennium ondersteuningscontracten aan voor FreeBSD.

Verder heeft elk project een lijst van in te huren consultants: FreeBSD, NetBSD, en OpenBSD.