Der Verzeichnisbaum
Ein einziger Baum
Abschnitt betitelt „Ein einziger Baum“Windows gibt jedem Laufwerk einen Buchstaben: C: für die Systemplatte, D: für die zweite, E: für den USB-Stick. Linux macht das anders. Es gibt genau einen Verzeichnisbaum, und seine Wurzel heisst / (gesprochen «Slash» oder «Root»). Jede Platte, jede Partition, jeder USB-Stick und jede Netzwerkfreigabe wird irgendwo in diesen Baum eingehängt (englisch mount). Ein USB-Stick erscheint also nicht als E:, sondern zum Beispiel als Verzeichnis /media/anna/STICK.
Das zweite Prinzip: Alles ist eine Datei. Auch Geräte, laufende Prozesse und Kernel-Einstellungen erscheinen im Baum als Dateien. Deine erste Festplatte ist /dev/sda, der Zufallsgenerator ist /dev/urandom, und /proc/cpuinfo beschreibt deine CPU. Du kannst sie mit denselben Werkzeugen lesen wie eine Textdatei.
Hands-on: Schau dir drei Dateien an, die keine Dateien im klassischen Sinn sind.
head -5 /proc/cpuinfocat /proc/uptimels -l /dev/sda /dev/nullDie Zahl in /proc/uptime sind Sekunden seit dem Start. /dev/sda beginnt in der ls-Ausgabe mit b für block device; dazu mehr auf der nächsten Seite.
Der Filesystem Hierarchy Standard
Abschnitt betitelt „Der Filesystem Hierarchy Standard“Damit sich alle Distributionen gleich anfühlen, legt der Filesystem Hierarchy Standard (FHS) fest, was wohin gehört. Die wichtigsten Verzeichnisse:
| Verzeichnis | Inhalt |
|---|---|
/bin, /sbin |
Grundlegende Programme (ls, cp) und Systemprogramme für den Admin (fdisk, reboot). Heute Symlinks auf /usr/bin und /usr/sbin, siehe unten. |
/boot |
Kernel und Bootloader (GRUB). |
/dev |
Gerätedateien: Platten, Terminals, /dev/null. |
/etc |
Systemweite Konfigurationsdateien, fast alles im Textformat. |
/home |
Die Home-Verzeichnisse der Benutzer, etwa /home/anna. |
/lib |
Bibliotheken und Kernel-Module. Ebenfalls ein Symlink auf /usr/lib. |
/usr |
Der grösste Teil des Systems: Programme, Bibliotheken, Dokumentation. Nur lesend genutzt im Normalbetrieb. |
/opt |
Zusätzliche, meist grosse Fremdsoftware in eigenem Ordner pro Programm. |
/var |
Variable Daten: Logs (/var/log), Mail-Spool, Datenbanken, Webseiten (/var/www). |
/tmp |
Temporäre Dateien, werden beim Neustart gelöscht. Jeder darf hier schreiben. |
/proc |
Virtuell: Kernel und Prozesse als Dateien, existiert nur im Arbeitsspeicher. |
/sys |
Virtuell: Hardware und Treiber als Dateien. |
/media |
Automatisch eingehängte Wechselmedien (USB-Stick, DVD). |
/mnt |
Leerer Mountpoint für manuelles, vorübergehendes Einhängen. |
/srv |
Daten von Diensten, die der Server anbietet (Web, FTP), auf Ubuntu meist leer. |
/root |
Home-Verzeichnis des Superusers root. Nicht mit / verwechseln. |
flowchart TD
root["/"] --> bin["bin → usr/bin"]
root --> boot
root --> dev
root --> etc
root --> home
root --> usr
root --> var
root --> tmp
root --> proc
home --> anna["anna"]
home --> ben["ben"]
usr --> usrbin["bin"]
usr --> usrlib["lib"]
usr --> local
var --> log
var --> www
etc --> fstab
etc --> ssh
Hands-on: Lass dir die erste Ebene des Baums anzeigen. Du brauchst dafür find, das auf der letzten Seite dieses Moduls ausführlich kommt.
find / -maxdepth 1 -type dZerlegt: find ist der Befehl, / das Startverzeichnis, -maxdepth 1 steigt nur eine Ebene ab und -type d liefert nur Verzeichnisse (directories). Dasselbe als Baum, schöner lesbar:
sudo apt install treetree -d -L 1 /tree -d -L 2 /usrUnd wie viele Verzeichnisse hat dein System insgesamt? Von Hand zählen ist mühsam, die Shell kann das:
sudo find / -type d | wc -lDas | ist eine Pipe: Die Ausgabe von find wird nicht auf den Bildschirm geschrieben, sondern direkt an wc -l (word count, Option -l für Zeilen) weitergereicht. sudo brauchst du, weil dein Benutzer nicht in jedes Verzeichnis hineinschauen darf. Pipes sind das Thema von Modul 7, hier reicht das Bild vom Rohr zwischen zwei Befehlen.
Mounts: Wo hängt was
Abschnitt betitelt „Mounts: Wo hängt was“Welche Dateisysteme gerade im Baum hängen, zeigt findmnt. Der ältere Befehl mount liefert dieselbe Information als lange Liste.
findmnt --reallsblk -fdf -hfindmnt --realzeigt nur echte Dateisysteme, ohne die virtuellen wie/procund/sys. Ohne die Option siehst du den ganzen Baum der Mounts.lsblk -flistet die Blockgeräte (Platten und Partitionen), deren Dateisystem, UUID und Mountpoint.df -h(disk free) zeigt belegten und freien Platz pro Dateisystem, mit-hin lesbaren Einheiten.
In einer frischen Ubuntu-VM sieht lsblk -f ungefähr so aus:
NAME FSTYPE FSVER LABEL UUID MOUNTPOINTSsda├─sda1 vfat FAT32 8A1C-3F7B /boot/efi└─sda2 ext4 1.0 3f1d2c4e-8b2a-4b1e-9d6f-1a2b3c4d5e6f /Eine Platte sda mit zwei Partitionen: die kleine EFI-Partition für den Bootvorgang und die grosse Systempartition, die auf / eingehängt ist.
/etc/fstab
Abschnitt betitelt „/etc/fstab“Beim Systemstart baut Linux den Baum anhand der Datei /etc/fstab (file system table) auf. Jede Zeile beschreibt ein Dateisystem, die sechs Spalten sind durch Leerzeichen oder Tabs getrennt:
# <file system> <mount point> <type> <options> <dump> <pass>UUID=3f1d2c4e-8b2a-4b1e-9d6f-1a2b3c4d5e6f / ext4 defaults 0 1UUID=8A1C-3F7B /boot/efi vfat umask=0077 0 1/swap.img none swap sw 0 0| Spalte | Bedeutung |
|---|---|
| file system | Das Gerät, meist über seine UUID statt /dev/sda2, weil Gerätenamen sich ändern können. |
| mount point | Wo im Baum es erscheint. |
| type | Dateisystemtyp: ext4, vfat, swap, nfs … |
| options | defaults reicht meistens. Weitere: ro (nur lesen), noexec, noauto. |
| dump | Für das alte Backup-Programm dump, heute praktisch immer 0. |
| pass | Reihenfolge der Dateisystemprüfung beim Booten: 1 für /, 2 für andere, 0 für keine Prüfung. |
Hands-on: Vergleiche deine fstab mit dem, was tatsächlich eingehängt ist.
cat /etc/fstabfindmnt /Dateisystemtypen
Abschnitt betitelt „Dateisystemtypen“Was in der Spalte type steht, ist das Format, mit dem Daten auf der Partition organisiert sind. Linux kann sehr viele davon lesen, aber nicht jedes taugt als Systempartition, weil zum Beispiel FAT keine Linux-Rechte speichern kann.
| Typ | Wofür |
|---|---|
ext4 |
Der Standard unter Ubuntu und Debian. Robust, schnell, mit Journal. Nimm das, wenn du keinen Grund für etwas anderes hast. |
xfs |
Standard bei RHEL und Fedora Server. Gut für sehr grosse Dateien und Volumes. |
btrfs |
Mit Snapshots und integrierten Prüfsummen. Standard bei openSUSE und Fedora Workstation. |
vfat |
FAT32. Für die EFI-Partition und USB-Sticks, weil es jedes Betriebssystem lesen kann. Keine Linux-Rechte. |
ntfs |
Das Windows-Dateisystem. Linux liest und schreibt es mit dem Kernel-Treiber ntfs3. |
tmpfs |
Dateisystem im Arbeitsspeicher, zum Beispiel für /run. Inhalt ist nach dem Neustart weg. |
Der Installer erstellt standardmässig eine ext4-Partition für / und eine vfat-Partition für /boot/efi.
Fedora Workstation nutzt btrfs für /, RHEL und Fedora Server xfs. Die Befehle findmnt, lsblk und df funktionieren identisch.
Lösung anzeigen
script labs/linux/04-dateisystem/verzeichnisbaum.txtls -l /# Antwort 1: 20 Einträge, davon bin, lib, lib64 und sbin als Symlinks nach /usrfindmnt /df -h /# Antwort 2: /dev/sda2, ext4, etwa 15G freisudo find / -type d | wc -l# Antwort 3: rund 12000 Verzeichnissegrep -v '^#' /etc/fstab# Antwort 4: Die Zeile mit Mountpoint /; pass = 1 heisst, dieses Dateisystem wird beim Booten als erstes geprüftexitDie konkreten Zahlen sind bei dir anders.
Selbstcheck · 6 Fragen
Weiterführend
Abschnitt betitelt „Weiterführend“- Filesystem Hierarchy Standard, die offizielle Spezifikation.
man hier: Die Manpage zur Verzeichnisstruktur, direkt auf deiner VM.- ubuntuusers-Wiki: fstab