Zum Inhalt springen

AB 03 — Partition und Dateisysteme (Teil 1)

Mein Fortschritt0/3 (0 %)

In verschiedenen Systemverzeichnissen liegen alle elementaren Programme und Konfigurationsdateien.

In der Regel können in diesen Verzeichnissen (Ordnern) nur mit Root-Rechten Veränderungen vorgenommen werden. Obwohl dies gerade Ein- und Umsteigern gerne Probleme bereitet, ist dieser Zwang ein essentieller Baustein der Systemsicherheit.

Lange Zeit brachte jede Linux-Distribution ihre eigenen Vorstellungen vom Aufbau des Dateisystems mit. Um eine Vereinheitlichung und den Datenaustausch zwischen den Distributionen zu erleichtern, hat man ein Gremium aus den wichtigsten Distributoren gebildet. Dieses Gremium erarbeitete den “Filesystem Hierarchy Standard” (FHS). Auch die Verzeichnisstruktur von Ubuntu richtet sich nach diesem Standard.

Erste Verzeichnisebene; entspricht in der Regel der Root-Partition (nicht zwingend der Bootpartition). Von hier aus verzweigt sich das gesamte Dateisystem.

Von binaries (Programme).

Beinhaltet essentielle Programme, die sowohl für den Systemstart als auch für normale Benutzer verfügbar sind (z. B. ls, cp, mv).

Hinweis: Seit dem usr-merge (ab Ubuntu 22.04) ist /bin ein symbolischer Link auf /usr/bin.

Enthält zum Booten benötigte Dateien, wie Kernel (vmlinuz), Initial-Ramdisk (initrd) und Bootloader-Daten. Unterverzeichnisse:

/boot/grub: Dateien des Bootloaders GRUB 2

/boot/efi: Enthält EFI-Programme (nur bei aktivem UEFI)

Eine eigene /boot-Partition ist meist nicht erforderlich, außer bei Vollverschlüsselung oder speziellen RAID-/LVM-Layouts.

Von devices (Geräte).

Virtuelles Verzeichnis, das alle Gerätedateien enthält, über die die Hardware im Betrieb angesprochen wird (z. B. /dev/sda, /dev/null).

Von et cetera oder editable text configuration. Enthält Systemkonfigurations- und Informationsdateien. Beispiele: fstab, hosts, hostname, resolv.conf.

Seit Ubuntu 17+ wird Netplan hier verwendet:

/etc/netplan/*.yaml – Netzwerkdefinitionen (ersetzt /etc/network/interfaces)

Unterverzeichnisse:

/etc/default – Standardkonfigurationen (z. B. GRUB)

/etc/grub.d – Bootskripte für GRUB 2

/etc/systemd/ – systemd-Units und Service-Konfigurationen (ersetzt /etc/init.d)

/etc/opt – Konfigurationen zu Programmen in /opt

/etc/X11 – XServer-Konfiguration (z. B. xorg.conf)

/etc/ssh, /etc/sudoers.d, /etc/security – sicherheitsrelevante Konfigurationen

Enthält für jeden Benutzer ein persönliches Unterverzeichnis (/home/<benutzername>). Hier werden persönliche Dateien, Einstellungen und Desktop-Daten gespeichert. Wird oft auf eine eigene Partition ausgelagert.

Von libraries (Bibliotheken). Enthält unverzichtbare Systembibliotheken und Kernelmodule. Seit usr-merge ein Link auf /usr/lib.

Wichtige Unterverzeichnisse:

/lib/modules – Kernelmodule

/lib/udev – udev-Bibliotheken und Programme

(verloren und gefunden); Dateien und Dateifragmente, die beim Versuch, ein defektes Dateisystem zu reparieren, übriggeblieben sind. Das Verzeichnis ist auf Partitionen mit reiserfs oder xfs nicht vorhanden. Siehe auch Datenrettung.

Automatisch vom Dateisystem (z. B. ext4) angelegt.

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.:

Beispiele:

/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/cpuinfo → Informationen zur CPU

  • /proc/meminfo → Speicherbelegung

  • /proc/[PID]/status → Infos zu Prozessen

  • /proc/Nummern: Jedes Programm mit Prozessnummer als Verzeichnisnamen; darin z.B. die Datei status, die Auskunft über den Prozess liefert (Programmname, Nummer, Speichernutzung,…)

Experten-Info: /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). 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 Superuserrechtenausgefü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.

Vorgesehen für Dienst-spezifische Daten (z. B. Web- oder FTP-Server). In Ubuntu meist leer, wird aber von Administratoren z. B. für /srv/www genutzt.

Von: system; besteht ebenso wie /proc hauptsächlich aus Kernelschnittstellen

Experten-Info: /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;

Hinweis: 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

  • /usr/share: im Gegensatz zu /var für statische, sich nicht ändernde Dateien;

  • /usr/share/applications: Programmstarter, die für Anwendungsmenüs genutzt werden

  • /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 (z. B. syslog, kern.log, dmesg) 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/www/html: Standard-DocumentRoot für Apache

  • /var/spool: Warteschlangen (z.B. Druckaufträge)

Aufteilen der Verzeichnisse auf verschiedene Partitionen

Abschnitt betitelt „Aufteilen der Verzeichnisse auf verschiedene Partitionen“

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.

Hinweis: 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 30-40 Gigabyte

  • Für /home sollte es so groß wie benötigt (Daten) sein.

  • Für /boot sollte auf eine eigene Partition möglichst verzichtet werden (was aber nicht immer geht; verschlüsselte Systeme setzen eine zwingend voraus). Siehe auch Manuelle Partitionierung.

  • Wenn man den Ruhezustand nutzen will (empfehlenswert), benötigt man für die Swap-Partition 5% mehr als der Arbeitsspeicher groß ist. Ansonsten kann bei sehr viel Arbeitsspeicher u.U. auf Swap verzichtet werden.

  • 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 10 Gigabyte

  • Für /boot sollte auf eine eigene Partition möglichst verzichtet werden (was aber nicht immer geht; siehe oben)

  • 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 (E-Mail, Webserver, Datenbanken) ihre Daten hier ablegen

Aufgabe 1.1 – Orientierung im System

Öffne ein Terminal.

Finde heraus, in welchem Verzeichnis du dich aktuell befindest.

  • Wofür steht die Abkürzung FHS? Erkläre!
  • Was ist ein „mount point“ (Einhängepunkt)? Welche mount points besitzt dein Ubuntu?

Zeige den Inhalt des Root-Verzeichnisses / an:

Notiere in einer Tabelle mindestens 10 Unterverzeichnisse und beschreibe in eigenen Worten, wofür sie da sind.

Beispiel:

VerzeichnisBedeutung (kurz)
1/homePersönliche Benutzerdateien
2/etcSystemkonfigurationen
3
4
5
6
7
8
9
10

Aufgabe 1.2 – Details ansehen

Wechsle in das Verzeichnis /etc und liste die ersten 10 Dateien auf:

Öffne die Datei fstab mit einem Texteditor (z. B. cat oder less). Schreibe den jeweiligen Befehl auf:

Was steht in dieser Datei und wofür werden diese Einträge verwendet?

  • Suche heraus, welche Linux-Distribution du gerade nutzt. Gib den jeweiligen Befehl an und schreibe den Namen und die Version auf.