Voor toevallige gebruikers en minder-dan-hardcore fans is Linux een besturingssysteem. Voor puristen is de titel "Linux" echter gereserveerd voor de kernel die het besturingssysteem aandrijft. Als je nieuwsgierig bent naar wat de Linux-kernel is, laten we die vraag dan beantwoorden met het oog op de nieuwe gebruiker.
modes
Voordat we uitleggen wat een kernel is, is het belangrijk om de termen "gebruikersmodus" en "kernelmodus" te begrijpen. Gebruikersmodus is wanneer het uitvoeren van code geen mogelijkheid heeft om rechtstreeks toegang te krijgen tot hardware of referentiegeheugen. Om toegang te krijgen tot hardware en geheugen, moet code die in gebruikersmodus wordt uitgevoerd instructies delegeren aan systeem Application Programming Interfaces (API's). Kernel-modus heeft bij het uitvoeren van code onbeperkte toegang tot alle hardware en is gereserveerd voor de meest vertrouwde functies van een besturingssysteem.
Wat is een kernel?
Elk besturingssysteem heeft een kernel. Windows, macOS, iOS, Android, Chrome OS en Linux hebben elk een laag systeem dat verantwoordelijk is voor het koppelen van alle applicaties aan de fysieke hardware van de computer. Zonder de kernel zou geen van uw applicaties gebruik kunnen maken van de fysieke computer; apps zoals Firefox, Chrome, LibreOffice, MS Office of Outlook zouden niet werken. De kernel is ook verantwoordelijk voor het toestaan van processen om informatie uit te wisselen met behulp van zogenaamde Inter-Process Communication (IPC).
Er zijn (in het algemeen gesproken) drie soorten kernels:
- Monolithische kernels: deze kernels omvatten de CPU, geheugen, IPC, apparaatstuurprogramma's, bestandssysteembeheer en systeem serveroproepen. Het is ook verantwoordelijk voor het overhandigen van gratis systeemgeheugen aan applicaties. Deze typen kernels zijn meestal beter in het gebruik van hardware en multitasking.
- microkernels: Microkernels hebben een minimalistische benadering en beheren alleen de CPU, het geheugen en de IPC.
- Hybride kernels: Hybrid Kernels hebben de mogelijkheid om te beslissen wat ze willen uitvoeren in de gebruikers- of kernelmodus. Hoewel dit het beste van beide werelden biedt, heeft het van de hardwarefabrikanten veel meer nodig om stuurprogramma's te maken die dienen als interface tussen hardloopcode en hardware.
Linux gebruikt een open source, Monolithic Kernel, terwijl macOS en Windows beide hybride kernels gebruiken. De Linux-kernel werd in 1991 ontworpen door Linus Torvalds. Tot op de dag van vandaag blijft Mr. Torvalds de hoofdontwikkelaar van de Linux-kernel, terwijl ontwikkelaars van over de hele wereld bijdragen aan de Linux-kernel. Naar schatting hebben bijna 10.000 ontwikkelaars van meer dan 1.000 bedrijven een bijdrage geleverd aan de Linux-kernel (sinds het volgen in 2005 is begonnen).
Waar is de Kernel?
Als u een terminalvenster opent en de opdracht geeft ls / boot, je ziet een bestand genaamd vmlinuz-VERSION (Waar VERSION de releasenaam of het nummer is). Het vmlinuz-bestand is de feitelijke opstartbare Linux-kernel en de "z" is om aan te geven dat de kernel is gecomprimeerd; dus in plaats van vmlinux hebben we vmlinuz.

In die / bootmap staan andere belangrijke kernelbestanden, zoals initrd.img-VERSION, system.map-VERSION en config-VERSION (waarbij VERSION een naam of releasummer is). Deze andere bestanden hebben de volgende doelen:
- initrd: wordt gebruikt als een kleine RAM-schijf die het feitelijke kernelbestand extraheert en uitvoert.
- system.map: gebruikt voor geheugenbeheer, voorafgaand aan het laden van de kernel.
- config: instrueert de kernel over welke opties en modules moeten worden geladen.
modules
Zonder modules zou de kernel niet veel gebruiken. Modules schakelen effectief de stuurprogramma's in die nodig zijn om met de hardware te communiceren zonder al uw systeemgeheugen te verbruiken. Modules voegen ook functionaliteit toe aan de kernel, zoals communiceren met randapparatuur, het beheren van bestandssystemen, beveiliging, enz. Het is mogelijk om modules in de kernel op te sommen, toe te voegen en te verwijderen met de volgende opdrachten:
- lsmod zal een lijst maken van alle momenteel geladen kernelmodules.
- insmod zal een kernelmodule in de werkende kernel laden.
- rmmod zal een module uit de werkende kernel verwijderen.
Dus je ziet, met de hulp van enkele eenvoudige commando's, kan de Linux-kernel behoorlijk flexibel zijn.
De huidige kernel
Op dit moment is de stabiele Linux-kernel 4.18.5, maar niet alle Linux-distributies bevatten de nieuwste kernel. In feite voert de bijgewerkte elementaire OS-bureaubladdistributie kernel 4.15.0-30 uit. Wat betekent dat getal? In het geval van de nieuwste kernel op Elementair OS, betekent het:
- 4 is de hoofdversie
- 15 is de kleine versie
- 0-30 is de revisie
Het is ook mogelijk om verschillende versies van de Linux-kernel van kernel.org te downloaden en zelf te compileren. De compilatie van de Linux-kernel is een taak die het best overgelaten wordt aan degenen die echt weten wat ze doen. Een onjuist gecompileerde kernel kan een systeem niet meer opstartbaar maken. Dus, tenzij je klaar bent om een duik te nemen in de uitdagende taak van het compileren van code op dit niveau, gebruik dan de standaard kernel die wordt verzonden en updates over je distributie naar keuze.




