Introductie
In populair gebruik verwijst “Linux” vaak naar een groep besturingssysteemdistributies die zijn gebouwd rond de Linux-kernel. In de striktste zin verwijst Linux echter alleen naar de aanwezigheid van de kernel zelf. Om een volledig besturingssysteem op te bouwen, bevatten Linux-distributies vaak gereedschappen en bibliotheken van het GNU-project en andere bronnen. Meer ontwikkelaars gebruiken de laatste tijd Linux om mobiele applicaties te bouwen en uit te voeren; het heeft ook een belangrijke rol gespeeld in de ontwikkeling van betaalbare apparaten zoals Chromebooks, die besturingssystemen op de kernel uitvoeren. Binnen cloud computing- en serveromgevingen in het algemeen is Linux om een aantal praktische redenen een populaire keuze:
- Zijn distributies blijven actueel en worden ondersteund door gemeenschappen van andere ontwikkelaars.
- Het kan worden uitgevoerd op een breed scala aan hardware en kan naast bestaande systemen worden geïnstalleerd (een handige eigenschap in lokale ontwikkelomgevingen).
- Het ondersteunt gecentraliseerde software-installatie vanuit bestaande repositories.
- Zijn resourcevereisten zijn laag.
- Het staat vaak bovenaan de lijst wanneer ontwikkelaars applicatie-ecosystemen en gereedschappen voor servers bouwen, wat leidt tot hoge niveaus van compatibiliteit.
- Het ondersteunt noodzakelijke aanpassingen aan het gedrag van het besturingssysteem.
Linux vindt ook zijn oorsprong in de vrije en open-source softwarebeweging, en als gevolg daarvan kiezen sommige ontwikkelaars het om ethische en praktische redenen.
- Voor sommige ontwikkelaars betekent het gebruik van Linux een toewijding aan toegankelijkheid en vrijheid van expressie.
- De Linux-gemeenschap trekt ook sommige ontwikkelaars aan: wanneer ze vragen hebben, kunnen ze de middelen raadplegen die door deze gemeenschap zijn geproduceerd of rechtstreeks contact opnemen met een van de vele actieve beheerders.
Om de rol van Linux binnen de ontwikkelaarsgemeenschap (en daarbuiten) te begrijpen, zal dit artikel een beknopte geschiedenis van Linux schetsen via Unix en enkele populaire Linux-distributies bespreken.
Wortels in Unix
Linux heeft zijn wortels in Unix en Multics, twee projecten die als doel hadden een robuust multi-gebruikersbesturingssysteem te ontwikkelen.
De Beginjaren van Unix
Unix ontstond uit de iteratie van het Multics-project bij het Computer Sciences Research Center van Bell Laboratories. De ontwikkelaars die werkten aan Multics bij Bell Labs en elders waren geïnteresseerd in het bouwen van een multi-gebruikersbesturingssysteem met single-level storage, dynamische koppeling (waarin een lopend proces kan verzoeken om een ander segment aan zijn adresruimte toe te voegen, waardoor het de code van dat segment kan uitvoeren) en een hiërarchisch bestandssysteem.
Bell Labs stopte de financiering van het Multics-project in 1969, maar een groep onderzoekers, waaronder Ken Thompson en Dennis Ritchie, bleef werken met de kernprincipes van het project. In 1972-3 namen ze de beslissing om het systeem opnieuw te schrijven in C, wat Unix uniek draagbaar maakte: in tegenstelling tot andere hedendaagse besturingssystemen kon het zowel van hardware veranderen als deze overleven.
Onderzoek en ontwikkeling bij Bell Labs (later AT&T) gingen door, waarbij Unix System Laboratories versies van Unix ontwikkelden, in samenwerking met Sun Microsystems, die breed werden overgenomen door commerciële Unix-leveranciers. Ondertussen werd er onderzoek voortgezet in academische kringen, met name de Computer Systems Research Group aan de Universiteit van Californië, Berkeley. Deze groep produceerde de Berkeley Software Distribution (BSD), die een scala aan besturingssystemen inspireerde, waarvan er velen vandaag de dag nog in gebruik zijn. Twee BSD-distributies van historische betekenis zijn NeXTStep, het besturingssysteem pionierde door NeXT, dat de basis werd voor macOS, onder andere producten, en MINIX, een educatief besturingssysteem dat een vergelijkingsbasis vormde voor Linus Torvalds toen hij Linux ontwikkelde.
Kernfuncties van Unix
Unix is gericht op principes van helderheid, draagbaarheid en gelijktijdigheid.
- Clarity: Unix’ modulaire ontwerp maakt het mogelijk om functies op een beperkte en gedefinieerde manier uit te voeren. Zijn bestandssysteem is eenduidig en hiërarchisch, wat de manipulatie van gegevens vereenvoudigt. In tegenstelling tot sommige van zijn voorgangers, implementeert Unix honderden (in plaats van duizenden) systeemaanroepen, elk ontworpen om duidelijk en doelgericht te zijn.
- Portabiliteit: Door Unix in C te schrijven, plaatste de groep bij Bell Labs Unix voor grootschalig gebruik en adoptie. C is ontworpen om laag-niveau toegang tot geheugen te hebben, minimale run-time ondersteuning, en een efficiënte relatie tussen taal en machine-instructies. Een basis in C betekent dat Unix aanpasbaar is en gemakkelijk te draaien is op verschillende hardware.
- Simultaanheid: De Unix-kernel is afgestemd op het doel (gedeeld door het Multics-project) om meerdere gebruikers en werkstromen te ondersteunen. Kernelruimte blijft onderscheiden van gebruikersruimte in Unix, waardoor meerdere toepassingen tegelijk kunnen worden uitgevoerd.
De Evolutie van Linux
Unix stelde belangrijke vragen voor ontwikkelaars, maar bleef ook eigendomsgebonden in zijn vroegste iteraties. Het volgende hoofdstuk in zijn geschiedenis is dus het verhaal van hoe ontwikkelaars er binnen en tegen werkten om gratis en open-source alternatieven te creëren.
Open-Source Experimenten
Richard Stallman was een centrale figuur onder de ontwikkelaars die geïnspireerd waren om niet-eigendomsalternatieven voor Unix te creëren. Terwijl hij werkte bij het Artificial Intelligence Laboratory van MIT, begon hij met het GNU-project (recursief voor “GNU is niet Unix!”), en verliet uiteindelijk het laboratorium in 1984 zodat hij GNU-componenten kon verspreiden als vrije software. De GNU-kernel, bekend als GNU HURD, werd het middelpunt van de Free Software Foundation (FSF), opgericht in 1985 en momenteel geleid door Stallman.
Ondertussen was een andere ontwikkelaar bezig met een gratis alternatief voor Unix: de Finse student Linus Torvalds. Nadat hij gefrustreerd was geraakt door de licentieverlening voor MINIX, kondigde Torvalds op 25 augustus 1991 aan aan een MINIX-gebruikersgroep dat hij zijn eigen besturingssysteem aan het ontwikkelen was, dat leek op MINIX. Hoewel het oorspronkelijk werd ontwikkeld op MINIX met de GNU C-compiler, werd de Linux-kernel al snel een uniek project met een kern van ontwikkelaars die in 1994 versie 1.0 van de kernel uitbrachten, samen met Torvalds.
Torvalds gebruikte GNU-code, inclusief de GNU C-compiler, met zijn kernel, en het blijft waar dat veel Linux-distributies gebruikmaken van GNU-componenten. Stallman heeft gelobbyd om de term “Linux” uit te breiden naar “GNU/Linux”, waarvan hij beweert dat het zowel de rol van het GNU-project in de ontwikkeling van Linux vastlegt als de onderliggende idealen die het GNU-project en de Linux-kernel hebben bevorderd. Vandaag de dag wordt “Linux” vaak gebruikt om zowel de aanwezigheid van de Linux-kernel als de GNU-elementen aan te duiden. Tegelijkertijd maken ingebedde systemen op veel handheld-apparaten en smartphones vaak gebruik van de Linux-kernel met weinig tot geen GNU-componenten.
Belangrijkste kenmerken van Linux
Hoewel de Linux-kernel veel doelen en eigenschappen heeft geërfd van Unix, verschilt het van het eerdere systeem op de volgende manieren:
- De kerncomponent is de kernel, die onafhankelijk wordt ontwikkeld van andere onderdelen van het besturingssysteem. Dit betekent dat Linux elementen leent van verschillende bronnen (zoals GNU) om een volledig besturingssysteem te vormen.
- Het is gratis en open source. Onderhouden door een gemeenschap van ontwikkelaars, is de kernel gelicentieerd onder de GNU General Public License (een afsplitsing van het werk van de FSF aan het GNU-project) en beschikbaar voor download en aanpassing. De GPL bepaalt dat afgeleid werk de licentievoorwaarden van de originele software moet behouden.
- Het heeft een monolithische kernel, vergelijkbaar met Unix, maar het kan kernelcode dynamisch laden en ontladen op aanvraag.
- Het heeft symmetrische multiprocessor (SMP) ondersteuning, in tegenstelling tot traditionele Unix-implementaties. Dit betekent dat een enkel besturingssysteem toegang kan hebben tot meerdere processors, die een hoofdgeheugen delen en toegang hebben tot alle I/O-apparaten.
- De kernel is preemptive, een ander verschil met Unix. Dit betekent dat de planner een contextwissel kan afdwingen op een stuurprogramma of een ander deel van de kernel terwijl het wordt uitgevoerd.
- De kernel maakt geen onderscheid tussen threads en normale processen.
- Het bevat een Command Line Interface (CLI) en kan ook een Graphic User Interface (GUI) bevatten.
Populaire Linux Distributies
Ontwikkelaars onderhouden tegenwoordig veel populaire Linux-distributies. Een van de langst bestaande is Debian, een gratis en open-source distributie met 50.000 softwarepakketten. Debian inspireerde een andere populaire distributie, Ubuntu, gefinancierd door Canonical Ltd. Ubuntu gebruikt het deb-pakketformaat en de pakketbeheertools van Debian, en ontwikkelaars van Ubuntu sturen wijzigingen terug stroomopwaarts naar Debian.
A similar relationship exists between Red Hat, Fedora, and CentOS. Red Hat created a Linux distribution in 1993, and ten years later split its efforts into Red Hat Enterprise Linux and Fedora, a community-based operating system that utilizes the Linux kernel and elements from the GNU Project. Red Hat also has a relationship with the CentOS Project, another popular Linux distribution for web servers. This relationship does not include paid maintenance, however. Like Debian, CentOS is maintained by a community of developers.
Conclusie
In dit artikel hebben we Linux’s wortels in Unix en enkele van zijn kenmerkende eigenschappen behandeld. Als je geïnteresseerd bent in meer te weten komen over de geschiedenis van Linux en Unix-varianten (inclusief FreeBSD), zou een goede stap onze serie over FreeBSD kunnen zijn. Een andere optie zou kunnen zijn om onze introductie serie over het beginnen met Linux te overwegen. Je kunt ook deze introductie van de bestandsindeling in Linux bekijken, deze bespreking over hoe find
en locate
te gebruiken om bestanden te zoeken op een Linux VPS, of deze introductie van reguliere expressies op de commandoregel.
Source:
https://www.digitalocean.com/community/tutorials/brief-history-of-linux