Jokerzeichen Das Dateisystem - Inhalt Partition Inhalt Index


Verzeichnisstruktur

Die Verzeichnisstrukur von Unix

Abbildung: Die Linux-Verzeichnisstruktur (Ausschnitt)

Bei der Unmenge von Dateien in Unix-Systemen (auf meinem System sind es 106839!) ist eine hierarchische Struktur unabdingbar. Lange Zeit hat jedes Unix-Derivat seine eigenen Vorstellungen vom Aufbau seiner Dateiverwaltung mitgebracht, aber unterdessen ist man sich mehr oder weniger einig geworden und erarbeitete den Filesystem Hierarchie Standard, der wichtige Strukturen definiert. Die meisten Distributionen folgen diesen Richtlinien, wobei Abweichungen oft durch unterschiedliche Auslegung des Standards begründet werden.

Neben der Beschreibung der vorgesehenen Verwendung jedes Verzeichnisses, werden auch konkrete Kommandos genannt, die mindestens in diesen Verzeichnissen vorhanden sein müssen. Des Weiteren finden systemspezifische Vorgaben und optionale Komponenten Erwähnung.

Sobald der Kernel aktiv ist, lädt er als erstes das Root-Filesystem, in dem alle für die Aufgaben des Kernels notwendigen Programme und Konfigurationsdateien angesiedelt sein müssen.

Zu den Programmen gehören:

Wenden wir uns also zunächst dem Inhalt des Wurzelverzeichnisses zu. Verzeichnisse und Dateien, die als optionale Komponenten im Standard enthalten sind, werden farblich dargestellt.



Verzeichnisse in der Wurzel


/bin Die wichtigsten Kommandos, um mit dem System arbeiten zu können, findet man hier. Sie dürfen von allen Nutzern ausgeführt werden. Zu den Kommandos gehören cat, chgr, chmod, chown, cp, date, dd, df, dmesg, echo, ed, false, kill, ln, login, ls, mkdir, mknod, more, mount, mv, ps, pwd, rm, rmdir, sed, setserial, sh, stty, su, sync, true, umount, uname (sh ist meist ein Link auf bash).
/boot Hier findet man die statischen Dateien des Bootmanagers und die Kernel. (In früheren Linux-Versionen wurden der "Haupt"-Kernel im Root-Verzeichnis installiert und nur die optionalen Kernel in diesem Verzeichnis.)
/dev

In diesem Verzeichnis stehen die Gerätedateien (Devices), die die gesamte Hardware beschreiben (Festplatte, Floppy, RAM...), sowie einige Devices mit speziellen Aufgaben. Drei Informationen sind für jedes Device relevant:

brw-rw-rw- 1 root disk 2, 0 Nov 8 20:48 /dev/fd0


Art des Zugriffs:

  • Blockorientiert (b) - gepufferter Zugriff, z.B. Festplatten


  • Zeichenorientiert (c) - ungepufferter Zugriff, z.B. Bildschirm, Drucker


brw-rw-rw- 1 root disk 2, 0 Nov 8 20:48 /dev/fd0


Hauptgerätenummer (major device number):

  • Nummer des zu verwendenden Treibers


  • Unter jeder Nummer existiert je ein Treiber für zeichen- und blockorientierte Geräte (z.B. Nummer 2 für Terminals (c) und Floppys (b))


  • Beschreibung vergebener Nummern unter /usr/src/linux/Documentation/devices.txt


brw-rw-rw- 1 root disk 2, 0 Nov 8 20:48 /dev/fd0


Nebengerätenummer (minor device number):

  • Nummer der zuständigen Routine in einem Treiber


  • Dient z.B. zur

    • Unterscheidung der Diskettenformate im Floppytreiber


    • Für ein zweites CD-ROM


    • usw.

Ein etwas ungewöhnliches Device ist /dev/null, der Mülleimer von Unix. Möchte man z.B. bei der Suche nach Dateien Fehlermeldungen (permission denied) vermeiden, hilft Folgendes:

user@sonne> find / -name "*" 2> /dev/null

Den Mechanismus erläutert der Abschnitt Ein/Ausgabe-Umleitung.

Wichtige Gerätedateien sind:

Datei Beschreibung
cdrom Link auf eine entsprechende Datei (z.B. cdu535)
cua* Serielle Schnittstellen (ausgehende Verbindungen)
fd* Diskettenlaufwerke
hd* IDE-Festplatten
kmem Speicherauszug (core)
lp Parallele Schnittstellen
mouse Link auf die entsprechende Datei
port IO-Ports
sd* SCSI-Festplatten
tty* Terminalkonsolen
ttys* Serielle Schnittstellen (eingehende Verbindungen)


/etc Enthält alle lokalen Konfigurationsdateien (Tastatur, X, Netzwerk...)
/home Alle Heimatverzeichnisse der Nutzer findet man hier. Nach dem Login landet jeder Benutzer (i.d.R.) in seinem Home. Heimatverzeichnisse können vom Systemverwalter auch an anderer Stelle angesiedelt werden.
/lib Die beim Systemstart benötigten Bibliotheken stehen hier. Ebenso liegen die Kernelmodule in einem eigenen Unterverzeichnis unterhalb von /lib.
/mnt Mountpunkt für temporäre Partitionen
/opt Software, die nicht zum üblichen Installationsumfang von Unix-Systemen gehören, werden oft unter diesem Zweig installiert. So werden nahezu alle kommerziellen Softwarepakete hier eingerichtet; auch die Programme zur KDE befinden sich hier.
/root Heimatverzeichnis des Administrators. In realen Unix-Installationen werden die Heimatverzeichnisse aller Nutzer oft auf einem Server gehalten. Bei einem Ausfall eines solchen Servers sollte aber zumindest Root in der Lage sein, vernünftig mit dem System zu arbeiten.
/sbin Wichtige System-Programme (beim Booten benötigt; Ausführung erfordert Root-Rechte)
/tmp Temporäre Dateien können hier abgelegt werden, jeder Nutzer ist dazu berechtigt.
/usr Zweite Hierarchie
/var Variable Daten


Der Filesystem Hierarchie Standard bezeichnet die Verzeichnisse unter /usr (user system ressources) als "zweite Hierarchie". Schauen wir uns an, was dort stehen sollte:

Verzeichnisse unter /usr



X11R6 X Window System (Version 11, Release 6)
X386 X Window System (Version 11, Release 5 auf x86er)
bin Die meisten Nutzerprogramme
games Spiele und Lernprogramme
include Headerdateien für C-Programme
lib Allgemeine Bibliotheken (außer X11)
local Lokale Hierarchie. Hier hat der Administrator die Möglichkeit, Nicht-Standard-Pakete einzuspielen.
sbin (weniger wichtige) Systemprogramme
share Architektur-abhängige Dateien
src Quelldateien zu den Paketen


Einige (symbolische) Links sind ebenso vorgeschrieben:

Links unter /usr



/usr/spool Link auf /var/spool
/usr/tmp Link auf /var/tmp
/usr/spool/lock Link auf /var/lock


Es gibt eine Menge Daten, die permanenter Veränderung unterliegen oder nur kurze Zeit existieren. Protokollierungen fallen ebenso in diese Kategorie, wie auch Mails, zu druckende Dateien, News, ... Insbesondere auf Servern sollte dem Verzeichnis /var eine eigene Partition gegönnt werden.

Verzeichnisse unter /var



account Prozessnutzungsprotokoll (falls unterstützt)
cache Zwischenspeicher von Programmen
crash Speicherauszug bei Systemabsturz (falls unterstützt)
games Variable Spieledaten
lock Sperren (Dateien, Geräte, etc.)
log Protokolle über Systemvorgänge
mail Mailboxen der Nutzer
opt Variable Daten der optionalen Programme
run Dateien zu laufenden Prozessen
spool Von Anwendungen gespoolte Daten
state Variable Status Informationen
tmp Temporäre Dateien, die zwischen Reboots erhalten bleiben
yp Dateien des Network Information Systems


Speziell für Linux-Systeme definiert der Standard Weiteres:

Linux Systeme



allgemein Der Name des Standard-Kernels ist vmlinux oder vmlinuz
/dev Enthält nur die im Dokument ''Linux Allocated Devices'' beschriebenen Links (sonst wie oben)
/proc Enthält Kernel- und Prozessinformationen in einem virtuellen Dateisystem
/sbin Enthält zusätzlich Routinen zum ext2-Dateisystem und lilo
/usr/src Enthält zusätzlich die Kernelquellen


Des Weiteren werden im Standard Daten nach folgenden Kriterien unterschieden:


Jokerzeichen Das Dateisystem - Inhalt Partition Inhalt Index