π§© Hoofdstuk 14.1: Kernel Modules in Linux
Kernelmodules zijn uitbreidingen van de Linux-kernel die dynamisch geladen en verwijderd kunnen worden. Ze stellen het systeem in staat om functionaliteiten toe te voegen zonder de kernel zelf opnieuw te compileren.
ββββββββββββββββββββββββββββββββββββββββββββ
π§ Wat doen kernelmodules?
ββββββββββββββββββββββββββββββββββββββββββββ
Kernelmodules vervullen verschillende rollen in het systeem, waaronder:
- Apparaatdrivers: Voor de communicatie met hardware zoals USB-sticks of netwerkkaarten.
- Bestandssysteemdrivers: Om bijvoorbeeld EXT4, XFS of FAT32-bestandssystemen te kunnen lezen.
- Netwerkdrivers: Ondersteunen protocollen zoals IPv6 of draadloze communicatie.
- Systeemaanroepen: Breiden de mogelijkheden van de kernel uit met nieuwe functies.
- Executable Loaders: Ondersteunen extra uitvoerbare bestandsformaten zoals binfmt_misc.
Bestandsextensie van een kernelmodule: `.ko` (kernel object)
ββββββββββββββββββββββββββββββββββββββββββββ
π Waar worden kernelmodules opgeslagen?
ββββββββββββββββββββββββββββββββββββββββββββ
Modules worden georganiseerd per kernelversie in mappen zoals:
- `/lib/modules/
- `/usr/lib/modules/` β Kan een hardlink zijn naar bovenstaande map, vooral op Red Hat-systemen.
ββββββββββββββββββββββββββββββββββββββββββββ
π οΈ Configuratiebestanden voor modulebeheer
ββββββββββββββββββββββββββββββββββββββββββββ
Deze configuratiebestanden bepalen hoe en wanneer modules geladen worden:
| Locatie | Functie |
|----------------------------|------------------------------------------|
| `/etc/modprobe.d/` | Beheerderconfiguraties voor modprobe |
| `/etc/modules-load.d/` | Lijst met modules die bij opstarten geladen worden |
| `/lib/modprobe.d/` | Instellingen geleverd door pakketten |
| `/usr/lib/modprobe.d/` | Mogelijke hardlink naar /lib/modprobe.d/ |
| `/run/modprobe.d/` | Tijdelijke configuraties (runtime) |
Op systemd-systemen beheert `systemd-modules-load.service` het laden van modules tijdens het opstartproces.
ββββββββββββββββββββββββββββββββββββββββββββ
π§ͺ Belangrijke tools voor modulebeheer
ββββββββββββββββββββββββββββββββββββββββββββ
| Tool | Functie |
|------------|------------------------------------------------------|
| `dmesg` | Toont kernelmeldingen en fouten (zoals driverproblemen) |
| `lsmod` | Lijst van momenteel geladen modules met gebruiksinformatie |
| `modinfo` | Toont metadata van een specifieke module (zoals afhankelijkheden en beschrijving) |
Voorbeeld van toepassing:
- Gebruik `dmesg` om meldingen te zoeken die gerelateerd zijn aan USB-hardware.
- Met `lsmod` kun je nagaan of een bepaalde netwerk- of audio-driver actief is.
- `modinfo` kan aangeven waar een module zich bevindt, wie hem heeft gemaakt, en welke parameters beschikbaar zijn.
ββββββββββββββββββββββββββββββββββββββββββββ
π Samenvatting
ββββββββββββββββββββββββββββββββββββββββββββ
Kernelmodules zijn onmisbaar voor de flexibiliteit en uitbreidbaarheid van Linux. Ze maken het mogelijk om nieuwe hardware of functionaliteiten toe te voegen zonder de kernel te hoeven herstarten of hercompileren. Door kennis van opslaglocaties, configuratiebestanden en beheertools kun je effectief werken met kernelmodules in elke Linux-distributie.