Systemd Baustein Systemdateien

Aus Xinux Wiki
Version vom 17. Oktober 2026, 15:47 Uhr von Thomas.will (Diskussion | Beiträge) (Neue Seite: Baustein tmpfiles, sysctl, Module)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen
Baustein ab Stufe Lernpfad
tmpfiles, sysctl, Module Stufe 2 Übersicht

Einfach erklärt

  • systemd erledigt beim Start einige Aufgaben, die früher Startskripte hatten. Gesteuert wird alles über kleine Textdateien in *.d-Verzeichnissen.
  • tmpfiles.d: Verzeichnisse und Dateien anlegen, Rechte setzen, alte Dateien aufräumen.
  • sysctl.d: Kernelparameter setzen, z.B. IP-Weiterleitung.
  • modules-load.d: Kernelmodule beim Start laden.
  • Überall gilt dieselbe Regel: Pakete legen ihre Dateien unter /usr/lib ab, eigene gehören nach /etc. Gleicher Dateiname in /etc gewinnt.

tmpfiles.d

  • Typisch: Ein Dienst braucht unter /run ein Verzeichnis. /run ist nach jedem Neustart leer.
  • /etc/tmpfiles.d/meindienst.conf
# Typ  Pfad              Rechte Benutzer Gruppe Alter
d      /run/meindienst   0750   www-data www-data -
d      /var/tmp/upload   1777   root     root     7d
Typ Wirkung
d Verzeichnis anlegen, mit Alter: alte Dateien darin löschen
D wie d, aber der Inhalt wird bei jedem Start geleert
f Datei anlegen, wenn sie fehlt
L symbolischen Link anlegen
z Rechte und Besitzer einer vorhandenen Datei setzen
r Datei oder leeres Verzeichnis löschen
  • Sofort anwenden, ohne Neustart:
  • systemd-tmpfiles --create /etc/tmpfiles.d/meindienst.conf
  • Aufräumen nach Alter macht der Timer systemd-tmpfiles-clean.timer täglich.
  • Für eigene Dienste geht es oft einfacher mit RuntimeDirectory=meindienst in der Unit. Dann legt systemd /run/meindienst beim Start an und löscht es beim Stopp.

sysctl.d

net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
  • Sofort anwenden: sysctl --system
  • Beim Start erledigt das systemd-sysctl.service.
  • Debian 13 liest /etc/sysctl.conf nicht mehr. Eigene Einstellungen gehören nach /etc/sysctl.d/.

modules-load.d

  • Module laden, die keine Hardware von selbst anstößt, siehe auch Kernel und Module.
  • /etc/modules-load.d/bridge.conf
br_netfilter
  • Beim Start erledigt das systemd-modules-load.service.
  • Sofort: systemctl restart systemd-modules-load

Weitere Verzeichnisse dieser Art

Verzeichnis Wofür
/etc/systemd/system.conf.d/ Einstellungen von systemd selbst, z.B. Standard-Timeouts
/etc/systemd/journald.conf.d/ journald, siehe Systemd Baustein Journal
/etc/systemd/logind.conf.d/ Anmeldung, z.B. was beim Zuklappen des Laptops passiert
/etc/binfmt.d/ fremde Programmformate, z.B. ARM-Programme über qemu

Stolperfallen

  • Datei in /usr/lib geändert: Beim nächsten Update weg. Eigene Dateien nach /etc.
  • Falsches Alter bei d: Mit 1d in /var/tmp werden Dateien gelöscht, die jemand noch braucht.
  • sysctl.conf bearbeitet und nichts passiert: Debian 13 liest sie nicht mehr.
  • Reihenfolge: Die Dateien werden alphabetisch gelesen, spätere überschreiben frühere. Deshalb Zahlen wie 90- vor den Namen.

Aufgaben

Grundaufgaben

  1. Legen Sie mit tmpfiles.d ein Verzeichnis /run/test an, das nach jedem Neustart wieder da ist.
  2. Schalten Sie per sysctl.d die IP-Weiterleitung dauerhaft ein und prüfen Sie es nach dem Neustart.
  3. Lassen Sie per modules-load.d das Modul br_netfilter beim Start laden.

Für Schnelle

  1. Ersetzen Sie die tmpfiles-Regel durch RuntimeDirectory= in einer eigenen Unit.
  2. Finden Sie heraus, welche tmpfiles-Regel bei Ihnen /tmp aufräumt: systemd-tmpfiles --cat-config | grep /tmp

Weiter