Assignment Chef icon Assignment Chef
All German tutorials

Programming lesson

Linux-Gerätedateien verstehen: Eine praktische Übung mit Loopback-Geräten und ext4

In diesem Tutorial lernst du, wie du in Linux ein virtuelles Speichergerät mittels Loopback erstellst, formatierst, mountest und Daten darauf schreibst. Eine praktische Einführung in Gerätedateien und das Dateisystem ext4 – ideal für Studenten der Betriebssystementwicklung.

Linux Gerätedateien Loopback Device erstellen ext4 Dateisystem formatieren dd Befehl Linux losetup mounten virtuelles Speichergerät Linux COP4600 Ex6 Lösung Gerätedateien Übung Linux Dateisystem verstehen hexedit Image untersuchen strings Befehl Linux Linux Systemprogrammierung Betriebssysteme Studium Linux Tutorial Anfänger Device Files erklärt Linux Mount Punkte

Einführung in Linux-Gerätedateien und Loopback-Geräte

In Unix-basierten Systemen wie Linux werden Hardwarekomponenten über sogenannte Gerätedateien (device files) angesprochen. Diese virtuellen Dateien, die im Verzeichnis /dev liegen, dienen als Schnittstelle zwischen dem Betriebssystem und physischen oder virtuellen Geräten. Stell dir vor, du spielst ein aktuelles Spiel wie Cyberpunk 2077 – die Tastatureingaben werden über /dev/input an das System weitergeleitet. Ähnlich funktioniert die Kommunikation mit SSDs, Mäusen oder Joysticks. In dieser Übung erstellst du selbst ein virtuelles Speichergerät über einen Loopback-Device, das eine normale Datei als Gerät erscheinen lässt. Das ist nützlich, um ISO-Images zu mounten oder Dateisysteme zu testen – ähnlich wie Entwickler bei Docker Images nutzen.

Was ist ein Loopback-Gerät?

Ein Loopback-Gerät (/dev/loop0, /dev/loop1, …) ermöglicht es, eine reguläre Datei wie ein Blockgerät (z. B. eine Festplatte) zu behandeln. Du kannst darauf ein Dateisystem erstellen, es mounten und Daten schreiben – alles ohne echte Hardware. Das ist perfekt für Übungen, aber auch für reale Anwendungen wie das Erstellen von Backup-Images. In diesem Tutorial gehen wir Schritt für Schritt vor, ähnlich wie bei der COP4600 Ex6: IO Device Files Aufgabe.

Vorbereitung: Arbeitsumgebung einrichten

Bevor wir starten, stelle sicher, dass du ein Linux-System (z. B. Ubuntu 24.04) mit Root-Rechten (sudo) verwendest. Wir arbeiten auf der Kommandozeile – kein GUI nötig. Öffne ein Terminal und lege ein Arbeitsverzeichnis an:

mkdir ~/loopback-uebung
cd ~/loopback-uebung

Schritt 1: Erstellen eines leeren Image-Files

Wir erstellen eine Datei ex6.img mit einer Größe von 1 MiB, gefüllt mit Nullen. Dazu verwenden wir den Befehl dd, der Daten blockweise kopiert. Die Eingabe kommt von /dev/zero, einer speziellen Gerätedatei, die unendlich viele Nullbytes liefert.

dd if=/dev/zero of=ex6.img bs=1M count=1

Erklärung: bs=1M setzt die Blockgröße auf 1 Megabyte, count=1 erzeugt genau einen Block. Du könntest auch bs=512 count=2048 verwenden – das Ergebnis ist dasselbe. Überprüfe die Datei mit ls -lh ex6.img; sie sollte 1,0 MB groß sein.

Schritt 2: Loopback-Gerät erstellen, formatieren und mounten

Jetzt verbinden wir die Image-Datei mit einem Loopback-Gerät. Der Befehl losetup sucht automatisch den nächsten freien Loop-Device. Mit sudo legen wir das Gerät an:

sudo losetup -fP ex6.img

Das -f sucht den nächsten freien Loop-Device, -P scannt die Partitionstabelle. Welches Gerät wurde verwendet? Finde es heraus mit:

losetup -a

Angenommen es ist /dev/loop0. Nun formatieren wir das Gerät mit dem ext4-Dateisystem, das auch auf den meisten modernen Linux-Systemen Standard ist:

sudo mkfs.ext4 /dev/loop0

Nach der Formatierung erstellen wir einen Mountpunkt und mounten das Gerät:

sudo mkdir -p /mnt/ex6
sudo mount /dev/loop0 /mnt/ex6

Überprüfe mit df -h /mnt/ex6, ob das Mount erfolgreich war. Du solltest eine 976K große ext4-Partition sehen (etwas weniger wegen Dateisystem-Overhead).

Schritt 3: Daten auf das virtuelle Gerät schreiben

Jetzt schreiben wir zwei Textdateien in das gemountete Verzeichnis. Das ist, als würdest du auf einem USB-Stick speichern – nur dass der „Stick“ eine Datei ist.

sudo touch /mnt/ex6/leere_datei.txt
echo „Hallo, Linux-Gerätedateien!“ | sudo tee /mnt/ex6/nachricht.txt

Zeige den Inhalt der Dateien mit cat an:

cat /mnt/ex6/leere_datei.txt
cat /mnt/ex6/nachricht.txt

Die erste Datei ist leer, die zweite enthält deine Nachricht. Du könntest auch längere Texte oder sogar Programme speichern – alles wird im Image persistiert.

Schritt 4: Aushängen und Loopback trennen

Nachdem die Daten geschrieben sind, müssen wir das Dateisystem aushängen und das Loopback-Gerät freigeben:

sudo umount /mnt/ex6
sudo losetup -d /dev/loop0

Der Befehl losetup -d trennt die Verbindung. Das Image ist nun wie eine „abgeschaltete“ Festplatte – die Daten sind sicher in der Datei gespeichert.

Schritt 5: Daten im Image überprüfen

Jetzt wollen wir sehen, ob die Daten wirklich im Image-File landen. Installiere hexedit (einen hexadezimalen Editor):

sudo apt update && sudo apt install hexedit -y

Öffne die Image-Datei:

hexedit ex6.img

Navigiere mit den Pfeiltasten. Du solltest die Dateinamen und den Text „Hallo, Linux-Gerätedateien!“ im ASCII-Bereich rechts erkennen können. Drücke Ctrl+X zum Beenden. Alternativ kannst du auch den Befehl strings verwenden, der alle lesbaren Zeichenketten aus einer Binärdatei extrahiert:

strings ex6.img

Das zeigt dir die gespeicherten Texte an – ein nützlicher Trick, um in unbekannten Dateien nach Hinweisen zu suchen.

Hintergrund: Warum Gerätedateien wichtig sind

Gerätedateien sind ein zentrales Konzept in Linux. Sie ermöglichen eine einheitliche Schnittstelle für Hardwarezugriffe. Wenn du z. B. eine Maus bewegst, liest ein Programm aus /dev/input/mouse0 die Bewegungsdaten. Ähnlich funktionieren Joysticks (/dev/input/js0) oder SSDs (/dev/sda). In der Praxis werden Loopback-Geräte oft verwendet, um ISO-Images zu mounten (z. B. für Linux-Installationen) oder um Dateisystem-Images für virtuelle Maschinen zu erstellen. Auch Docker verwendet ähnliche Techniken, um Container-Images bereitzustellen.

Fehlerbehebung und Tipps

  • Permission denied: Vergiss nicht sudo für losetup und mount.
  • Loop device already in use: Verwende losetup -f, um ein freies Gerät zu wählen.
  • mount: /mnt/ex6: special device /dev/loop0 does not exist: Stelle sicher, dass der Loop-Device mit losetup verbunden ist.
  • Daten nicht gefunden in hexedit: Achte darauf, dass du das richtige Image öffnest und nach dem Mounten geschrieben hast.

Erweiterung: Eigene Projekte mit Loopback

Du kannst dieses Wissen nutzen, um eigene Dateisystem-Experimente durchzuführen: Erstelle ein Image mit 100 MB, formatiere es mit einem anderen Dateisystem (z. B. mkfs.xfs), oder verwende losetup mit einer Partitionstabelle. Auch für die COP4600 Ex6 Aufgabe ist diese Übung die Grundlage. Nach Abschluss solltest du Screenshots von jedem Schritt machen – das ist Teil der Abgabe.

Zusammenfassung

Du hast gelernt, wie man ein virtuelles Speichergerät mittels Loopback erstellt, formatiert, mountet, Daten schreibt und überprüft. Dieses Verständnis von Gerätedateien ist essenziell für fortgeschrittene Linux-Administration und Betriebssystementwicklung. Mit den Befehlen dd, losetup, mkfs, mount, umount und hexedit kannst du nun selbstständig mit Dateisystem-Images arbeiten. Viel Erfolg bei deiner Übung!