1. Home
  2. Academy
  3. [Academy] Linux Kernel-Modul exFAT (1)
  1. Home
  2. Linux
  3. Systemadministration
  4. [Academy] Linux Kernel-Modul exFAT (1)

[Academy] Linux Kernel-Modul exFAT (1)

Lesedauer: 7 Minuten

Einleitung

Der Betriebssystem-Kernel ist das Herzstück eines jeden Computersystems. Er sorgt dafür, dass Programme und Hardware reibungslos zusammenarbeiten. Anwendungen wie Browser oder Textverarbeitungsprogramme sprechen nicht direkt mit Prozessor, Speicher oder Festplatte, sondern über den Kernel. Er übernimmt zentrale Aufgaben wie die Verwaltung von Prozessen (Start, Steuerung und Beendigung von Programmen), die Organisation des Arbeitsspeichers und die Kommunikation mit Geräten über Treiber. Dadurch ist es möglich, dass mehrere Programme gleichzeitig sicher und effizient laufen. Der Kernel bildet somit die Basis, auf der alles andere im System aufbaut – ohne ihn wäre ein Computer nicht arbeitsfähig.

Besonders interessant wird der Kernel, wenn man ihn nicht nur benutzen, sondern auch verändern kann. Beim Windows-Kernel ist das nicht möglich, beim Linux-Kernel hingegen schon: Der Quellcode ist frei verfügbar und man kann den Kernel selbst kompilieren, also neu bauen, und dabei Funktionen gezielt hinzufügen, entfernen oder anpassen. Dadurch wird erlebbar, wie flexibel ein Kernel sein kann und wie stark er die Funktionalität eines Computers bestimmt.

Um diese Flexibilität nachvollziehbar zu machen, eignet sich das Beispiel der Dateisysteme. Immer wenn ein USB-Stick, eine Festplatte oder eine SD-Karte eingebunden wird, muss der Kernel wissen, wie die darauf gespeicherten Daten organisiert sind. Dafür sind Dateisystemtreiber zuständig. Anhand dieses Beispiels kann man sehr anschaulich erkennen, wie der Kernel Funktionen bereitstellt und wie er sich durch Konfiguration und Kompilierung beeinflussen lässt, um bestimmte Dinge zu ermöglichen oder zu verhindern.

Treiber für Dateisysteme im Linux-Kernel

Damit ein Betriebssystem auf Daten zugreifen kann, muss es deren Organisation auf dem Speichermedium kennen. Genau hier kommen die Dateisysteme ins Spiel: Sie legen fest, wie Dateien benannt, gespeichert, gesucht und wiedergefunden werden. Bekannte Beispiele sind FAT, exFAT, NTFS oder ext4.

Der Kernel selbst versteht diese Dateisysteme jedoch nicht automatisch. Stattdessen benötigt er Treiber, die wie Dolmetscher zwischen der abstrakten Dateiverwaltung des Betriebssystems und der konkreten Struktur auf dem Datenträger vermitteln. In Linux sind solche Treiber meistens modular aufgebaut, das heißt, sie können entweder fest in den Kernel kompiliert oder bei Bedarf als Kernelmodul nachgeladen werden.

Beispiel: USB-Stick im System

Wenn ein neues Gerät angeschlossen wird, erkennt das System zwar dessen Vorhandensein, doch kann das Gerät erst mit einem passenden Gerätetreiber aktiv genutzt werden.

lsblk - list block devices

Mit dem Befehl lsblk können alle erkannten Blockgeräte samt ihrer Struktur (Partitionen, Dateisysteme, Mountpoints) angezeigt werden.

Ein Block Device ist jedes Gerät, das Daten blockweise liest oder schreibt – z. B. Festplatten, SSDs, USB-Sticks, SD-Karten, etc.

$ lsblk -f
NAME        FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sda
└─sda1      exfat  1.0   STICK 9635-F212
sr0
nvme0n1
├─nvme0n1p1
├─nvme0n1p2 vfat   FAT16       FB2D-C04A                             967,4M     1% /boot/efi
├─nvme0n1p3 ext4   1.0         f50927f8-9bd6-4128-b698-73bc1f1071c2   19,9G     5% /
└─nvme0n1p4 swap   1           2f775c77-df25-4053-9511-1198775874dc                [SWAP]

Die Ausgabe von lsblk -f besteht aus den folgenden Spalten:

  • NAME → Gerätename im System (z. B. sda1 für die erste Partition auf dem Gerät sda).
  • FSTYPE → Typ des Dateisystems (z. B. exfat, ext4, vfat).
  • FSVER → Versionsinformation des Dateisystems (falls verfügbar).
  • LABEL → Vom Nutzer vergebener Name des Dateisystems oder Mediums (z. B. STICK).
  • UUID → Eindeutige Kennung des Dateisystems, wird oft in /etc/fstab verwendet.
  • FSAVAIL → Freier Speicherplatz auf dem Dateisystem.
  • FSUSE% → Belegter Speicherplatz in Prozent.
  • MOUNTPOINTS → Verzeichnisse, an denen das Dateisystem gerade eingebunden ist (oder leer, wenn nicht gemountet).

Die Ausgabe zeigt also ein erkanntes Gerät sda mit einer exFAT formatierten Partition sda1 und dem Label STICK, das aber nicht ins System eingehängt (gemountet) ist.

lsmod - list (kernel) modules

Mit dem Befehl lsmod lässt sich anzeigen, welche Kernelmodule aktuell geladen sind. Ein Kernelmodul ist ein Stück Code, das den Kernel um bestimmte Funktionen, wie etwa die Unterstützung für ein Dateisystem oder ein Gerät, erweitert:

$ /sbin/lsmod | grep fat
vfat                   24576  1
fat                    90112  1 vfat

Die Ausgabe von lsmod besteht aus drei Spalten:

  • Module → Name des Moduls (z. B. exfat, vfat, fat)
  • Size → Speicherbedarf des Moduls (für die Praxis weniger wichtig)
  • Used by → Wie oft das Modul verwendet wird und ggf. von welchen anderen Modulen

mount - Dateisystem einhängen

Der Befehl mount stammt vom englischen Verb "to mount" und bedeutet "einbinden, befestigen". Er verbindet ein Dateisystem mit einem Verzeichnis im System, das als Mountpoint bezeichnet wird.

Zunächst muss der Mountpoint im Verzeichnisbaum erstellt werden:

# mkdir /mnt/usb

Anschließend kann der USB-Stick im Mountpoint /mnt/usb gemountet werden:

# mount /dev/sda1 /mnt/usb/

Mit dem Befehl lsmod wird nun das geladene Kernel-Modul exfat angezeigt. Der Used by Zähler (1) zeigt an, dass das Modul aktuell eingebunden und in Verwendung ist:

# lsmod | grep fat
exfat                  90112  1
vfat                   24576  1
fat                    90112  1 vfat

Ein erneut ausgeführtes lsblk -f bestätigt das Einhängen der Partition sda1 am Mountpoint /mnt/usb:

# lsblk -f
NAME        FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sda
└─sda1      exfat  1.0   STICK 9635-F212                             114,6G     0% /mnt/usb

umount - Dateisystem aushängen

Mit dem Befehl umount /mnt/usb/ wird der USB-Stick wieder aus dem System ausgehängt:

# umount /mnt/usb/

Nachdem der USB-Stick wieder ausgehängt wurde, ist das Modul exfat zwar noch geladen, wird aber nicht mehr verwendet. Das ist in der Spalte Used by an dem Wert 0 zu erkennen. Die Module vfat und fat bleiben dagegen weiterhin in Benutzung:

# lsmod | grep fat
exfat                  90112  0
vfat                   24576  1
fat                    90112  1 vfat

Das Modul fat ist ein Basis-Modul, das von vfat (und auch exfat) benötigt wird. vfat wird im System beispielsweise für die UEFI-Bootpartition genutzt (meist FAT16/FAT32). Deshalb bleiben fat und vfat In UEFI-basierten System dauerhaft in Benutzung und können auch nicht entladen werden.

modprobe - Laden und Entladen von Kernel-Modulen

Der Befehl modprobe setzt sich aus "module" und "probe" zusammen. Er lädt oder entfernt Kernelmodule und berücksichtigt dabei automatisch Abhängigkeiten.

Der Parameter -r (remove) entfernt Kernel-Module, sofern sie nicht mehr in Verwendung sind:

# /sbin/modprobe -r exfat

Damit sind wir wieder am Ausgangszustand angekommen, was ein erneutes lsmod bestätigt:

$ lsmod | grep fat
vfat                   24576  1
fat                    90112  1 vfat

Dynamisch geladen oder fest integriert?

In dem obigen Beispiel wurde ein modularer Treiber besprochen, der dynamisch zur Laufzeit von udev automatisch in den Kernel eingebunden oder auch wieder entfernt werden kann. Die meisten Treiber in Linux sind so aufgebaut. Es gibt jedoch auch eine Fülle elementarer Treiber, die fest in den Kernel "eingebacken" sind. Sie werden immer geladen, sobald der Kernel startet. Dazu gehören beispielsweise das Root-Dateisystem oder grundlegende Controller, ohne die der Rechner gar nicht starten würde. Diese Treiber können nicht entfernt werden, ohne dass der Kernel neu kompiliert wird.

udev - Userspace /dev

udev ist ein Gerätemanager für den Linux-Kernel. Er erstellt und verwaltet die Gerätedateien im Verzeichnis /dev. Gleichzeitig verarbeitet udev alle Ereignisse im Userspace, die beim Hinzufügen oder Entfernen von Hardwaregeräten auftreten. Er reagiert auf Kernel-Ereignisse (z. B. wenn ein neues Gerät eingesteckt wird) und lädt über modprobe automatisch die passenden Kernelmodule. Wenn beispielsweise ein USB-Stick angeschlossen wird, fordert der Kernel das Modul usb_storage an und udev erzeugt die Gerätedatei /dev/sda.

Loading

Updated on 14. September 2025
Was this article helpful?

Related Articles