Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Nicht umsonst sind für Veränderungen an Dateien oder Ordnern außerhalb des Homeverzeichnisses Rootrechte erforderlich. Solche Änderungen sollte man nur vornehmen, wenn man genau weiß, was man tut und welche Auswirkungen das haben kann.
Dieser Artikel beschreibt die Verzeichnisstruktur des Linux-Grundsystems. In diesen Systemverzeichnissen liegen die elementaren Programme und Konfigurationsdateien. In der Regel kann in diesen Verzeichnissen nur mit Root-Rechten geschrieben werden.
Lange Zeit brachte jedes Linux-Derivat seine eigenen Vorstellungen vom Aufbau seiner Dateiverwaltung mit. Um aber eine Vereinheitlichung und den Datenaustausch zwischen den Distributionen zu erleichtern, hat sich ein Gremium aus den wichtigsten Distributoren gebildet. Dieses Gremium erarbeitete den "Filesystem Hierarchy Standard" (FHS). Die Verzeichnisstruktur von Ubuntu richtet sich nach diesem Standard.
Die hier gezeigte Verzeichnisstruktur berücksichtigt nicht die Installation mit gesonderter Bootpartition (GRUB/Sonderformen der Installation). Die Auflistung erfolgt in alphabetischer Reihenfolge.
Erste Verzeichnisebene; entspricht in der Regel der Bootpartition (Ausnahme: Eigene Bootpartition); enthält neben den folgenden Unterverzeichnissen auch die symbolischen Verknüpfungen initrd.img und vmlinuz (siehe /boot)
Von: binaries (Programme); muss bei Systemstart vorhanden sein; enthält für Linux unverzichtbare Programme; diese Programme können von allen Benutzern ausgeführt werden; /bin darf keine Unterverzeichnisse enthalten.
Muss bei Systemstart vorhanden sein; Enthält zum Booten benötigte Dateien. Beispiele: Kernel "vmlinuz-versionsnummer-generic" (für Desktopsysteme), "vmlinuz-versionsnummer-server" (für Serversysteme), "vmlinuz-versionsnummer-virtual" (für virtuelle Maschinen), initiale Ramdisk "initrd.img-versionsnummer-generic"/"-server"/"-virtual" und das Programm für den Memorytest memtest86.bin
Unterverzeichnis(se):
/boot/grub: Enthält Dateien zum Bootloaders GRUB 2
/boot/efi: Enthält EFI-Programme - nur bei eingesetzten und aktiv genutztem EFI
Von: devices (Geräte); muss bei Systemstart vorhanden sein; enthält alle Gerätedateien, über die die Hardware angesprochen wird; Gerätedateien für Hot-Plug-Systeme (z.B. USB, IEEE1394) werden von udev erstellt
Von: et cetera ("alles übrige"), später auch: editable text configuration (änderbare Text Konfiguration); muss bei Systemstart vorhanden sein; enthält Konfigurations- und Informationsdateien des Basissystems. Beispiele: fstab, hosts, lsb-release, blkid.tab; hier liegende Konfigurationsdateien können durch gleichnamige Konfigurationsdateien im Homeverzeichnis überlagert werden. Beispiel: bash.bashrc
Unterverzeichnisse u.a.:
/etc/default: Enthält u.a. die Konfigurationsdatei grub
/etc/grub.d: Enthält Skripte für Grub_2
/etc/opt: Verzeichnisse und Konfigurationsdateien für Programme in /opt
/etc/X11: Verzeichnisse und Konfigurationsdateien des XServer; Beispiel: xorg.conf
/etc/network: Verzeichnisse und Konfigurationsdateien des Netzwerkes: Beispiel interfaces
/etc/init.d: Enthält Start- und Stopskripte; Siehe Dienste
/etc/sgml: Konfigurationsdateien für SGML (optional)
/etc/xml: Konfigurationsdateien für XML (optional)
Von: home-directory (Heimatverzeichnis); enthält pro Benutzer ein Unterverzeichnis; jedes Verzeichnis wird nach dem Anmeldenamen benannt; ausführlicher Artikel: Homeverzeichnis
Von: libraries (Bibliotheken); muss bei Systemstart vorhanden sein; enthält unverzichtbare Bibliotheken fürs Booten und die dynamisch gelinkten Programme des Basissystems; mindestens notwendige Dateien bzw. symbolische Verknüpfungen: libc.so.* (C-Bibliotheken), ld* (Bibliotheksdaten: Versionen, Zugriffspfade,...)
Unterverzeichnisse u.a.:
/lib/modules: Kernelmodule
/lib/udev: Bibliotheken und Programme für udev
/lib/linux-restricted-modules: Speicherort für eingeschränkte Treiber (z.B. Grafikkarte); siehe restricted-manager
(verloren und gefunden); Dateien und Dateifragmente, die beim Versuch, ein defektes Dateisystem zu reparieren, übrig geblieben sind; Verzeichnis ist auf Partitionen mit reiserfs oder xfs nicht vorhanden.
Für (Speicher-)Medien. Enthält Unterverzeichnisse, welche als mount- oder Einhängepunkte für transportable Medien wie z.B. externe Festplatten, USB-Sticks, CD-ROMs, DVDs und andere Datenträger dienen. Ubuntu legt hier auch die Einhängepunkte für Partitionen an. Unterverzeichnisse sind u.a.:
/media/floppy: Einhängepunkt für Disketten
/media/cdrom0: Einhängepunkt für CD-ROMs
Ab Ubuntu 12.10 wird zusätzlich der Benutzername verwendet. Beispiele:
/media/BENUTZERNAME/floppy: Einhängepunkt für Disketten
/media/BENUTZERNAME/cdrom0: Einhängepunkt für CD-ROMs
Von: mount (eingehängt); normalerweise leer; kann für temporär eingehängte Partitionen verwendet werden. Für Datenträger, die hier eingehängt werden, wird im Gegensatz zu /media kein Link auf dem Desktop angelegt (gilt nur für GNOME).
Von: optional; ist für die manuelle Installation von Programmen gedacht, die ihre eigenen Bibliotheken mitbringen und nicht zur Distribution gehören; siehe /opt; Speicherort für selbst erstellte Programme siehe /usr/local in /usr
Von: processes (laufende Programme); muss bei Systemstart vorhanden sein; enthält Schnittstellen zum aktuell geladenen Kernel und seinen Prozeduren; Dateien lassen sich mittels cat auslesen; Beispiele: version (Kernelversion), swaps (Swapspeicherinformationen), cpuinfo, interrupts, usw.;
Unterverzeichnisse u.a.:
/proc/Nummern: Jedes Programm mit Prozessnummer als Verzeichnisnamen; darin z.B. die Datei status, die Auskunft über den Prozess liefert (Programmname, Nummer, Speichernutzung,...)
/proc ist im eigentlichen Sinne kein Verzeichnis, sondern ein spezielles, virtuelles Dateisystem vom Typ "proc", welches lediglich Schnittstellen zu Kernelprozeduren beinhaltet.
Ist das Homeverzeichnis des Superusers (root).
Programme, die per gksudo bzw. kdesudo - nicht aber sudo - ausgeführt werden, bekommen dieses Verzeichnis als Heimatverzeichnis zugewiesen. Dies hat z.B. Auswirkungen auf zu installierende Programme oder gelöschte Dateien (diese findet man dann unter /root/.local/Trash)
Der Grund wieso sich das /root-Verzeichnis im Wurzelverzeichnis und nicht im Verzeichnis /home befindet, ist, dass das Homeverzeichnis von Root immer erreichbar sein muss, selbst wenn die Home-Partition aus irgendeinem Grund (Rettungs-Modus, Wartungsarbeiten) mal nicht eingehängt ist.
Die Benutzung dieses Ordners wurde erst mit Ubuntu 11.10 eingeführt und dient als Ersatz für bisher verwendete Ordner:
/run (bisher: /var/run, siehe auch /var)
/run/lock (bisher: /var/lock)
/run/shm (bisher: /dev/shm, siehe auch /dev)
Von: system binaries (Systemprogramme); muss bei Systemstart vorhanden sein; enthält alle Programme für essentielle Aufgaben der Systemverwaltung; Programme können nur vom Systemadministrator (root) oder mit Superuserrechten ausgeführt werden; Beispiele: shutdown (Herunterfahren), make2fs, lsmod (Kernelmodule)
Von: services (Dienste); Verzeichnisstruktur noch nicht genau spezifiziert; soll Daten der Dienste enthalten; unter Ubuntu in der Regel leer
Von: system; im FHS noch nicht spezifiziert; erst ab Kernel 2.6. im Verzeichnisbaum enthalten; besteht ebenso wie /proc hauptsächlich aus Kernelschnittstellen
/sys ist im eigentlichen Sinne kein Verzeichnis, sondern ein spezielles, virtuelles Dateisystem vom Typ "sysfs", welches ebenso wie /proc lediglich Schnittstellen zu Kernelprozeduren beinhaltet.
Von: temporary (temporär); enthält temporäre Dateien von Programmen; Verzeichnis soll laut FHS beim Booten geleert werden.
Von: user (siehe: Herkunft); enthält die meisten Systemtools, Bibliotheken und installierten Programme; der Name ist historisch bedingt - früher, als es /home noch nicht gab, befanden sich hier auch die Benutzerverzeichnisse;
Da für die (De-)Installation von Programmen die Paketverwaltung verantwortlich ist, sollte dieses Verzeichnis (abgesehen von /usr/local) nur von der Paketverwaltung angetastet werden.
Unterverzeichnisse u.a.:
/usr/bin : Anwenderprogramme; Hier liegen die Desktopumgebungen und die dazu gehörigen Programme, aber auch im Nachhinein über die Paketverwaltung installierte Programme, wie Audacity. Hier liegen aber nicht die manuell installierten Programme (die in /opt installiert werden).
/usr/include : Header-Dateien für C-Programme (nur für Programmierer interessant)
/usr/lib : Bibliotheken
/usr/local : Das Verzeichnis /usr/local enthält noch einmal die gleiche Verzeichnisstruktur wie /usr und ist für Programme gedacht, die man an der Paketverwaltung vorbei installieren möchte, z.B. selbst kompilierte Programme. Bei einem neu installierten Ubuntu enthält es höchstens leere Ordner.
/usr/sbin : für Linux nicht unbedingt notwendige Systemprogramme; Beispiel: dmidecode
/usr/share : im Gegensatz zu /var für statische, sich nicht ändernde Dateien; ist Architektur unabhängig, nicht aber vom Betriebssystem (z.B. können sich "Ubuntu 8.10 i386" und "Ubuntu 8.10 amd64" dieses Verzeichnis teilen, aber nicht "Ubuntu 8.10" und "Ubuntu 9.04")
/usr/share/man : Manpages
Von variable (variabel); enthält nur Verzeichnisse; Dateien in den Verzeichnissen werden von den Programmen je nach Bedarf geändert (im Gegensatz zu /etc); Beispiele: Log-Dateien, Spielstände, Druckerwarteschlange
Unterverzeichnisse u.a.:
/var/log : Alle Log-Dateien der Systemprogramme; Beispiele: Xorg.0.log (Log-Datei des XServer), kern.log (Logdatei des Kernels), dmesg (letzte Kernelmeldungen), messages (Systemmeldungen); Siehe auch Logdateien
/var/games : Spielstände von Linuxspielen
/var/run : Dateien, die den Zustand des Gesamtsystems speichern; Inhalt wird bei jedem Booten gelöscht und neu geschrieben (siehe auch /run)
/var/tmp : Daten, die bei einem Reboot zwischengespeichert werden müssen (nicht verlorengehen sollen)
/var/spool : Druckaufträge
Noch mehr Informationen - auch über viele Unterverzeichnisse - kann man der Manpage von hier entnehmen, also mittels man hier
. Das Wort "hier" steht in diesem Fall für "Description of the file system hierarchy", zu deutsch: "Beschreibung der Hierarchie des Dateisystems".
Es ist möglich, die Dateisystemhierachie auf verschiedene Dateisysteme (unter Umständen sogar auf verschiedene Speichermedien wie z.B. RAIDs) auszulagern; dies hat den Vorteil, dass Performance und Datensicherheit für bestimmte Teile der Hierarchie gewährleistet werden können.
Bitte beachte, dass dies nur ein Vorschlag ist; abhängig von den installierten Anwendungen ist diese Konfiguration mehr oder weniger sinnvoll. Auch mit nur einer Partition kann man ein System sinnvoll betreiben!
Ein typisches Desktop-System könnte wie folgt partitioniert sein:
Für das Wurzelverzeichnis (/-Dateisystem) mindestens 10 Gigabyte
Für /boot genügt eine Partition mit ca. 200 Megabyte (man kann auch gut auf eine eigene Partition dafür verzichten)
Wenn man den Ruhezustand nutzen will, benötigt man für die Swap-Partition 5% mehr als der Arbeitsspeicher groß ist. Ansonsten reichen 512MB für Swap.
Für das Homeverzeichnis soviel wie man benötigt, da dort alle persönlichen Daten liegen
Ein typischer Server könnte so partitioniert sein; es ist zu beachten, dass verschiedene Serverdienste eine andere Partitionierung erfordern!
Für das Wurzelverzeichnis (/-Dateisystem) mindestens 5 Gigabyte
Für /boot genügt eine Partition mit ca. 200 Megabyte
Der Swap sollte so groß sein wie der vorhandene Arbeitsspeicher, mehr ist nur in Ausnahmen sinnvoll
Für /var sollte es schon mehr sein, da fast alle Server-Dienste (Mail, HTTP, DB) die Daten dort ablegen
http://www.bitloeffel.de/DOC/fhs/fhs_de.html - Deutsche Übersetzung des FHS
http://www.pathname.com/fhs - Originaldokument zum FHS
http://www.easylinux.de/2003/12/014-dateibaum/index.html - Ausführliche Beschreibung der Verzeichnishierarchie
http://linux.derkeiler.com/Newsgroups/comp.os.linux.misc/2005-12/msg02154.html - Wofür steht die Abkürzung /usr?