Installing Kernel Modules

🧩 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//` – Hier worden alle kernelmodules per versie opgeslagen.
- `/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.