FreeBSD-Wochenrückblick: 20.–27. April 2026

Die Woche war geprägt von gleich zwei kritischen Security Advisories, dem Erscheinen des umfangreichen Q1-Statusberichts und dem Startschuss für den 15.1-Release-Zyklus. Außerdem rückt das End-of-Life für FreeBSD 13 näher — Zeit zum Handeln für alle, die noch auf dieser Version sitzen.

Zwei Security Advisories am selben Tag

Am 21. April veröffentlichte das FreeBSD Security Team zwei Advisories, die beide von Nicholas Carlini mithilfe von Claude (Anthropic) entdeckt wurden. Dass ein KI-gestützter Fuzzing-Ansatz zwei unabhängige Kernel-Bugs aufdeckt, ist bemerkenswert und deutet auf eine neue Ära in der Sicherheitsforschung hin.

SA-26:10.tty — Use-After-Free im TIOCNOTTY-Handler (CVE-2026-5398, HIGH 8.4)

Der TIOCNOTTY-ioctl erlaubt es einem Prozess, sich von seinem kontrollierenden Terminal zu lösen. Die Implementierung bereinigte jedoch nicht den Rückzeiger von der Terminal-Struktur zur Session des aufrufenden Prozesses. Wenn der Prozess danach beendet wird, bleibt ein Dangling Pointer im Kernel zurück — und ein böswilliger Prozess kann diesen nutzen, um sich Root-Privilegien zu verschaffen.

Betroffen sind alle unterstützten FreeBSD-Versionen (13.5, 14.3, 14.4, 15.0). Es gibt keinen Workaround — ein Update und Reboot sind zwingend erforderlich.

SA-26:11.amd64 — Fehlende Large-Page-Behandlung in pmap_pkru_update_range() (CVE-2026-6386)

Die Funktion pmap_pkru_update_range() aktualisiert Page-Tabellen-Einträge, wenn Memory Protection Keys (PKRU) auf einen Adressbereich angewendet werden. Sie berücksichtigte jedoch nicht die Anwesenheit von 1GB-Largepage-Mappings, die über shm_create_largepage() erzeugt wurden. Statt einen Page-Directory-Eintrag korrekt als Largepage zu erkennen, wurde er als Zeiger auf eine weitere Page-Table-Page interpretiert.

Die Konsequenz: Ein unprivilegierter Nutzer kann den Kernel dazu bringen, Userspace-Memory als Page-Table zu behandeln und so Speicher zu überschreiben, auf den er eigentlich keinen Zugriff haben sollte. Auch hier: Alle Versionen betroffen, kein Workaround, Update erforderlich.

Fazit: Wer amd64-Systeme betreibt, sollte umgehend patchen. Beide Bugs sind lokal ausnutzbar, SA-26:10 sogar zur Rechteausweitung auf Root. Der Hinweis auf KI-gestütztes Fuzzing als Entdeckungsquelle ist ein klares Signal: Die Angreifer nutzen diese Werkzeuge bereits — die Verteidiger müssen es auch.

Q1 2026 Status Report: 45 Einträge

Am 22. April erschien der Q1 2026 Status Report mit 45 Einträgen — der erste unter einem neu durchgesetzten, strengen Redaktionsschedule. Die Highlights:

Alpha-Omega Beach Cleaning

Die FreeBSD Foundation setzt ihr Beach-Cleaning-Projekt fort, finanziert durch die Alpha-Omega-Initiative der Linux Foundation. Ziel: Sicherheitslücken in Drittanbieter-Software des Basissystems finden und beheben — proaktiv, nicht reaktiv. Das Repository umfasst Build-Infrastruktur und Fuzzing-Setup für Komponenten wie libxml2, SQLite und weitere Base-System-Abhängigkeiten. Die Verbindung zu den beiden neuen SAs ist offensichtlich: Strukturiertes Fuzzing zahlt sich aus.

Cyber Resilience Act (CRA) Readiness

Die EU verabschiedete den Cyber Resilience Act — und FreeBSD muss sich darauf vorbereiten. Die Foundation hat ein dediziertes CRA-Readiness-Projekt gestartet, das monatliche Updates liefert. Kernfragen: Welche SBOM-Anforderungen treffen FreeBSD zu? Wie wird Vulnerability-Management dokumentiert? Für alle, die FreeBSD in EU-konformen Produkten einsetzen, ist dieses Projekt essenziell.

Laptop Testing & Integration

Das Laptop Integration Testing Project hat eine Python-Anwendung vorgestellt, die FreeBSD-Kompatibilität auf Laptops automatisiert testet. Die Foundation bittet die Community, Hardware-Probes einzusenden, um eine öffentliche Kompatibilitätsmatrix aufzubauen. Fortschritte gab es auch bei:

  • S0ix (Modern Standby): Suspend/Resume-Unterstützung für moderne Laptops
  • Hibernate (Suspend-to-Disk): Weiter in Entwicklung
  • CPPC: AMD CPPC-Unterstützung für Zen 2+ Prozessoren (als Out-of-Tree-Modul verfügbar)
  • Intel FRED: Konstantin Belousov (kib) hat die ersten Patches für Intels Flexible Return and Event Delivery eingereicht — CPUID-, MSR- und CR4-Bits sind im Main, die vollständige FRED-Unterstützung steht zur Review

Sylvea v0.2.3

Das Verwaltungstool Sylvea erreichte Version 0.2.3 mit verbesserter Jail- und VM-Unterstützung. Ein leichtgewichtiges GUI für Bhyve, Jails, ZFS und Netzwerk — eine interessante Alternative zu webbasierten Tools wie TrueNAS.

HPC Initiative

FreeBSD bekommt Ports für Slurm, OpenMPI und UCX — High-Performance-Computing kommt auf der Plattform an. Das ist ein Nischen-, aber strategisch wichtiger Schritt.

Cloud

FreeBSD auf EC2 mit aktualisierten AMIs, plus eine neue STACKIT Cloud Integration (ein europäischer Cloud-Provider, der zur IAD-Gruppe gehört).

Ports-Updates

  • KDE Plasma 6.6.3
  • OpenJDK 21/25
  • Wazuh 4.14.3 (Security Monitoring)

FreeBSD 15.1: Code Slush erreicht

Der 15.1-Release-Zyklus hat am 17. April den Code Slush erreicht — Commits auf den stable/15-Branch benötigen keine explizite Genehmigung mehr, aber neue Features sollten vermieden werden. Der weitere Zeitplan:

MeilensteinDatum
releng/15.1 Branch1. Mai 2026
BETA11. Mai 2026
BETA28. Mai 2026
BETA315. Mai 2026
RC122. Mai 2026
RELEASE2. Juni 2026

15.0 erreicht End-of-Life am 30. September 2026. Stable/15 wird bis Ende 2029 unterstützt.

FreeBSD 13.5: EOL am 30. April

Wer noch FreeBSD 13.5 betreibt, hat weniger als eine Woche Zeit zum Upgrade. Am 30. April endet der Support — danach gibt es keine Security-Patches mehr. Die Release Engineering Team hat die wöchentlichen Snapshot-Builds für stable/13 bereits eingestellt.

Die Migration auf 14.4 oder 15.0 ist jetzt dringend. Insbesondere nach SA-26:10 und SA-26:11 wäre es fahrlässig, auf einer EOL-Version zu bleiben.

ZFS: Snapshot-Automount-Deadlock behoben

Hamza (ixhamza) hat zwei wichtige ZFS-Fixes beigesteuert:

  1. Snapshot-Automount-Deadlock bei gleichzeitigem zfs recv — Wenn ein Snapshot automounted wird, während gleichzeitig ein zfs recv läuft, konnte das System deadlocken. Der Fix reorganisiert die Locking-Reihenfolge.
  2. AVL-Tree-Panic bei Snapshot-Automount-Race — Eine Race-Condition beim parallelen Mounten von Snapshots konnte einen AVL-Tree-Panic auslösen. Gelöst durch Umstellung auf AVL-Lookup statt Linear-Scan.

Zusätzlich gab es einen Fix für einen Memory Leak in zfsctl_snapshot_mount — die Options-Struktur wurde nicht korrekt freigegeben.

Für alle, die zfs recv im Betrieb nutzen (und das sollte jeder tun, der Replication einsetzt), sind diese Fixes relevant. Der Deadlock trat in der Praxis auf, wie ein offener Issue (#18073) zeigt.

BastilleBSD plant Einstellung

BastilleBSD hat Pläne angekündigt, einen teilzeit FreeBSD/Bastille-Sysadmin (ca. 20 Std./Woche) einzustellen — Fokus auf EMEA/APAC-Zeitzonen. Der Start ist für Mitte/Ende 2026 geplant, in Zusammenarbeit mit dem Bastille-Gründer an einem Cybersecurity-Startup. Ein Zeichen dafür, dass das Jail-Management-Ökosystem professionalisiert wird.

TopBar: Desktop-Umgebung für Wayland

Auf DiscoverBSD wurde TopBar vorgestellt — eine anpassbare Desktop-Umgebung, die mit Quickshell und QML für Wayland-Compositoren wie MangoWM und Hyprland gebaut wird. Sie integriert Statusleiste, App-Launcher, Lockscreen und Wallpaper-Management in ein einziges kohärentes System. Für FreeBSD-Laptop-Nutzer, die Wayland nutzen wollen, eine interessante Entwicklung.

ZFS Performance-Optimierung ohne neue Hardware

Ein Artikel auf DiscoverBSD fasst ZFS-Performance-Tipps zusammen, die ohne Hardware-Investitionen auskommen:

  • Recordsize an Workload anpassen (16K für Datenbanken, 1M–4M für Storage)
  • LZ4-Kompression aktivieren — reduziert oft I/O-Overhead statt ihn zu erhöhen
  • Pool-Topologie: Breite RAIDz-Konfigurationen durch gespiegelte VDEVs ersetzen für mehr Parallelität
  • Prefetch deaktivieren bei Random-Access-Workloads (Datenbanken)

Nichts Neues für ZFS-Veteranen, aber eine brauchbare Zusammenfassung für Einsteiger.

Was diese Woche bedeutet

Zwei kritische SAs in einer Woche, beide von KI-gestütztem Fuzzing entdeckt — das ist ein Weckruf. Die Werkzeuge werden besser, und die Angreifer nutzen sie auch. Der Q1-Statusbericht zeigt ein gesundes Projekt: Laptop-Support wächst, HPC kommt an, die CRA-Vorbereitung ist professionell. Und mit dem Code Slush für 15.1 rückt die nächste Release näher.

Wer noch auf 13.5 sitzt: Jetzt upgraden. Wer 15.0 oder 14.4 läuft: Jetzt patchen. Alles andere ist fahrlässig.

Jails statt Container: Warum FreeBSD-Jails für Isolation ausreichen — und Docker überflüssig machen können

Docker ist überall. Jedes Tutorial, jeder Workshop, jeder Stack-Overflow-Thread — alles dreht sich um Container. Und ehrlich: Das hat Gründe. Docker hat die Bereitstellung von Software radikal vereinfacht. Aber hier ist die unbequeme Frage, die sich kaum jemand stellt: Was macht Docker eigentlich, das ein Betriebssystem nicht schon kann?

Die Antwort, die ich im Lauf der Jahre gefunden habe, lautet: Erstaunlich wenig — wenn das Betriebssystem FreeBSD heißt.

Dieser Artikel ist mein Versuch, die Diskussion über Container-Isolation neu aufzurollen — nicht als Docker-Bashing, sondern als ehrlicher technischer Vergleich zwischen zwei Philosophien, die das gleiche Problem auf grundverschiedene Weise lösen.

Was ist ein Jail?

Ein FreeBSD-Jail ist, auf den Punkt gebracht, ein chroot mit Netzwerk. Und das ist nicht abwertend gemeint — es ist die präzise Beschreibung.

Wenn du unter Linux chroot /mein/verzeichnis ausführst, hast du einen Prozess, der ein anderes Dateisystem-Root sieht. Aber er teilt sich den Kernel, die Netzwerk-Interfaces, die Prozess-Tabelle, die User-IDs — alles. Ein chroot isoliert das Dateisystem, aber sonst nichts. Deswegen heisst es auch nicht umsonst chroot — change root, nicht isolate.

Ein Jail geht weiter. Viel weiter. Ein Jail-Prozess bekommt:

  • Ein eigenes Dateisystem-Root (wie chroot)
  • Ein eigenes Netzwerk-Interface (eigene IP, eigener Hostname)
  • Eine eigene Prozess-Tabelle (Prozesse im Jail sehen nur andere Prozesse im Jail)
  • Eigene User-IDs (root im Jail ist nicht root auf dem Host)
  • Eigene Netzwerk-Stacks (eigene Ports, eigene Firewall-Regeln möglich)

Und das alles ohne einen Hypervisor. Ohne Virtualisierung. Ohne Emulation. Der Kernel läuft weiter — ein einziger Kernel, der die Isolation direkt bereitstellt, und das als Design.

So sieht das in der Praxis aus:

jail -c path=/jails/webapp host.hostname=webapp.example.com \
  ip4.addr=192.168.1.10 command=/bin/sh

Das war’s. Kein Dockerfile. Kein Build-Kontext. Keine Registry. Ein Befehl, und du hast einen isolierten Prozess, der in seinem eigenen Teil des Systems läuft.

Jails existieren seit dem Jahr 2000. Sie waren da, als Linux noch über chroot stolperte und Container ein Konzept war, das man in Vorlesungen über Betriebssysteme erwähnte. FreeBSD hat das Problem der Prozessisolation vor über 25 Jahren im Kernel gelöst — und die Lösung ist bis heute stabil, sicher und geradezu banal einfach.

Docker-Anatomie: Der Zoo

Lass uns einen Schritt zurücktreten und anschauen, was Docker eigentlich ist. Nicht die Marketing-Version. Die echte Architektur.

Docker besteht aus:

  • dockerd — Ein Daemon, der im Hintergrund läuft und alle Container verwaltet. Er hat Root-Rechte. Er lauscht auf einem Socket. Er ist ein Single Point of Failure und ein Single Point of Compromise.
  • Docker Registry — Docker Hub (oder eine private Registry), wo Images gespeichert werden. Du pullst Images, du pushst Images. Du hängst an der Verfügbarkeit einer externen Infrastruktur.
  • Image Layers — Jedes Image besteht aus Schichten. Jede Schicht ist ein diff über der vorherigen. Das macht Images transportabel, aber es erzeugt einen ganzen Stack von Overlay-Dateisystemen, der zur Laufzeit übereinander gelegt wird.
  • Dockerfile — Ein eigenes Build-Format mit eigener Syntax. FROM, RUN, COPY, ENTRYPOINT. Ein Mini-Package-Manager-Ökosystem in Textform.
  • Eigener Package-Managerapk in Alpine, apt in Debian-Images, oft gemischt. Docker hat keinen eigenen Package-Manager, aber es zwingt dich, den der Base-Distribution zu nutzen — innerhalb eines Build-Contexts, der isoliert vom Rest deines Systems ist.
  • Docker Compose — Weil ein Container selten allein kommt. Du brauchst ein YAML-File, um mehrere Container zu orchestrieren. Compose ist de facto ein eigenes Tool mit eigener Syntax und eigenen Konventionen.
  • Swarm / Kubernetes — Weil Compose nicht für Produktion reicht. Swarm ist praktisch tot. Kubernetes ist… Kubernetes. Ein eigenes Ökosystem mit eigenem Vokabular, eigenen Konzepten, eigener Komplexität.

Das ist ein ganzer Zoo. Und ich meine das nicht nur umgangssprachlich. Docker hat sich von einem Tool zur Prozessisolation zu einer Plattform entwickelt, die ein eigenes Betriebssystem innerhalb deines Betriebssystems aufbaut. Eigene Networking-Lösung. Eigene Storage-Treiber. Eigene Build-Pipeline. Eigene Orchestrierung.

Wenn du Docker einsetzt, betreibst du ein Schichtenmodell:

Hardware → Host-OS → Docker-Daemon → Container-Runtime → Overlay-FS → Container

Jede Schicht hat ihre eigenen Fehlerquellen, ihre eigenen Konfigurationsmöglichkeiten, ihre eigenen Bugs. Und jede Schicht nimmt dir Kontrolle ab und gibt dir Abstraktion. Ob das ein fairer Trade ist, hängt davon ab, was du brauchst. Aber es ist ein Trade — und den sollte man mit offenen Augen machen.

Jail-Anatomie: Das, was übrig bleibt, wenn man alles weglässt

Jetzt der Kontrast. Ein FreeBSD-Jail besteht aus:

  • Kernel-Isolation — Der FreeBSD-Kernel bietet Isolation direkt an. Kein Daemon dazwischen. Keine Runtime. Der Kernel ist die Runtime.
  • Netzwerk-Isolation — Jedes Jail bekommt sein eigenes IP-Interface. Kein NAT nötig (aber möglich). Kein Bridge-Netzwerk, das du erst verstehen musst. Einfach eine IP, und der Traffic kommt an.
  • Dateisystem-Isolation — Das Jail-Root ist ein Verzeichnis. Alles darunter gehört zum Jail. Alles außerhalb existiert für Prozesse im Jail nicht.

Und das war’s. Kein Daemon. Keine Registry. Keine Layer. Kein Build-System. Keine YAML-Datei mit 40 Zeilen, um drei Services zu starten.

Die Verwaltung sieht so aus:

# Jail starten
jail -c path=/jails/webapp host.hostname=webapp ip4.addr=192.168.1.10 \
  command=/sbin/init

# Jail stoppen
jail -r webapp

# Jail-Konfiguration (persistent)
# /etc/jail.conf:
webapp {
    path = /jails/webapp;
    ip4.addr = 192.168.1.10;
    host.hostname = webapp.example.com;
    mount.devfs;
    exec.start = "/bin/sh /etc/rc";
    exec.stop = "/bin/sh /etc/rc.shutdown";
}

Das ist die komplette Konfiguration. Kein YAML. Keine Environment-Variablen, die durch drei Dateien gereicht werden. Keine Networks, die du erst definieren musst. Die Konfiguration ist lesbar, greifbar, debuggbar.

Wenn etwas schiefgeht, greifst du auf die Standard-FreeBSD-Tools zurück. ps, top, sockstat, dmesg — alles funktioniert wie gewohnt, weil es ein echtes System ist, kein Container-Abstraktionslayer.

Die ZFS-Verbindung: Instant-Cloning

Hier wird es spannend. FreeBSD und ZFS sind ein Traumpaar — und Jails profitieren davon massiv.

Stell dir vor, du willst eine neue Instanz deiner Web-Anwendung aufsetzen. Mit Docker: Image pullen, Container starten. Mit Jail und ZFS geht etwas viel Eleganters:

# Snapshot des Basis-Jails erstellen
zfs snapshot zroot/jails/base@clean

# Klonen — dauert Sekundenbruchteile, dank Copy-on-Write
zfs clone zroot/jails/base@clean zroot/jails/webapp2

# Jail konfigurieren und starten
# (Eintrag in /etc/jail.conf)
jail -c webapp2

Das war’s. Der Clone ist da. Sofort. Kein Download. Kein Layer-Aufbau. Kein Caching. ZFS nutzt Copy-on-Write, also belegt der Clone initially keinen zusätzlichen Speicherplatz. Erst wenn sich Dateien zwischen Clone und Original unterscheiden, wird Platz belegt.

Und das Beste: Du kannst das automatisieren. Ein kleines Skript, das einen ZFS-Snapshot nimmt, klont, die Jail-Konfiguration anpasst, und fertig. Kein CI/CD-Pipeline nötig, die ein Docker-Image baut und pusht. Du kannst es natürlich trotzdem tun — aber du musst nicht.

pkgbase: Sauberes Base-System-Management

FreeBSD bietet seit einiger Zeit pkgbase — Pakete für das Base-System. Das bedeutet, du kannst das FreeBSD-Base-System innerhalb eines Jails wie jedes andere Paket aktualisieren:

pkg install FreeBSD-base-default
pkg upgrade FreeBSD-base-default

Statt freebsd-update in jedem Jail laufen zu lassen oder das Base-System manuell zu bauen, kannst du Versionierte, reproduzierbare Base-System-Pakete nutzen. In Kombination mit ZFS-Snapshots bedeutet das: Du kannst ein Jail auf eine bestimmte Base-Version zurückrollen, ohne dass irgendwelche Overlay-Layer involviert sind.

Das ist reproduzierbar. Das ist transparent. Das ist genau das, was Docker mit seinen Layer-Caching verspricht, aber tatsächlich nur mühsam nachbaut.

Praktischer Vergleich: Eine Web-Anwendung deployen

Lass uns das konkret machen. Wir wollen eine typische Web-Anwendung deployen: Nginx als Reverse Proxy, eine App (sagen wir: eine Go-Binary), und PostgreSQL als Datenbank.

Mit Docker

  1. Dockerfile schreiben — Basis-Image wählen, Abhängigkeiten installieren, Binary hineinkopieren. 15-30 Zeilen.
  2. docker-compose.yml schreiben — Drei Services definieren. Netzwerk konfigurieren. Volumes für persistente Daten. Environment-Variablen. 40-60 Zeilen.
  3. Image bauendocker build -t meineapp .. Dauer: 30 Sekunden bis 10 Minuten, je nach Caching und Komplexität.
  4. Image pushen — Auf eine Registry, damit der Server es pullen kann. docker push meineapp:latest.
  5. Auf dem Server pullendocker pull meineapp:latest.
  6. Startendocker-compose up -d.
  7. Prüfendocker ps, docker logs, docker exec -it ...

Fehlerquellen:

  • Image-Layer-Caching führt zu veralteten Abhängigkeiten
  • Der Docker-Daemon muss laufen
  • Netzwerk zwischen Containern ist ein Bridge-Netzwerk mit eigenen Eigenheiten
  • Volumes werden vergessen oder falsch gemountet
  • Environment-Variablen müssen durchgereicht werden
  • Image-Grösse bläht auf, weil jeder Layer seinen eigenen Overhead hat

Mit FreeBSD-Jails

  1. ZFS-Dataset für das Jail erstellenzfs create zroot/jails/webapp
  2. Base-System installierenpkgbase oder bsdinstall oder aus einem Snapshot klonen.
  3. Jail konfigurieren — Eintrag in /etc/jail.conf. 10 Zeilen.
  4. Pakete installieren — Im Jail: pkg install nginx postgresql16-server. Oder du installierst deine Go-Binary direkt per scp oder pkg install.
  5. Services konfigurieren — Standard FreeBSD-Konfiguration. /etc/rc.conf im Jail, Nginx-Konfig, PostgreSQL-Konfig.
  6. Jail startenservice jail start webapp
  7. Prüfenjls, jexec webapp ps aux, Standard-Logs unter /var/log

Fehlerquellen:

  • Konfigurationsfehler (wie überall)
  • Aber: Kein Daemon, der abstürzen kann
  • Kein Overlay-Filesystem, das korrumpiert
  • Keine Layer, die sich unerwartet verhalten
  • Netzwerk ist echtes Netzwerk — was du konfigurierst, ist was du bekommst

Der Unterschied ist nicht nur die Anzahl der Schritte. Es ist die Art der Komplexität. Bei Docker ist die Komplexität in der Toolchain. Bei Jails ist die Komplexität im System — aber das System ist transparent, dokumentiert, und verhält sich wie erwartet, weil es ein echtes Betriebssystem ist, kein Abstraktionslayer.

Security: Isolation per Design vs. Isolation nachgerüstet

Dies ist der Punkt, der mich am meisten bewegt.

FreeBSD-Jails existieren seit dem Jahr 2000. Sie wurden von Anfang an als Isolationsmechanismus designt. Die Sicherheitsgarantien sind Teil des Kernel-Designs:

  • Ein Prozess in einem Jail kann nicht auf Prozesse ausserhalb zugreifen.
  • Ein Prozess in einem Jail kann nicht Kernel-Module laden.
  • Ein Prozess in einem Jail kann nicht Netzwerk-Interfaces ausser seinem eigenen sehen.
  • root in einem Jail ist nicht root auf dem Host.

Diese Garantien sind nicht optional. Sie sind nicht ein Config-Flag, das du setzen kannst — oder vergessen kannst. Sie sind die Default-Annahme des Systems.

Docker? Docker lief jahrelang mit Containern, die als root liefen. Die Standard-Konfiguration gab Containern volle Root-Rechte auf dem Host. User-Namespaces wurden erst 2016 eingeführt — und waren jahrelang experimentell. Seccomp-Profile kamen hinzu, aber die Standard-Profile waren lasch und komplexe Profile waren schwer zu schreiben. Capability-Dropping existiert, aber die meisten Container liefen (und laufen) mit zu vielen Capabilities.

Die Geschichte von Container-Security unter Linux ist eine Geschichte von Nachbesserungen. Jedes Jahr kamen neue Mechanismen hinzu: Namespaces, cgroups, Seccomp, AppArmor, SELinux, User-Namespaces, Rootless-Mode. Jeder einzelne Mechanismus ist sinnvoll. Aber zusammen ergeben sie ein Patchwork, das tiefes Expertenwissen erfordert, um es korrekt zu konfigurieren.

FreeBSD-Jails? Da gibt es nichts nachzurüsten. Die Isolation war 2000 da. Sie ist 2026 immer noch da. Und sie hat sich bewährt — in Produktion, in Hosting-Umgebungen, in Firmen, die seit Jahrzehnten Jails betreiben.

25 Jahre getestete Kernel-Isolation vs. ein Patchwork aus nachgerüsteten Linux-Mechanismen.

Ein konkretes Beispiel

Stell dir vor, ein Angreifer bekommt Shell-Zugriff in deinem Container.

Im Docker-Container (ohne User-Namespaces):

  • Der Angreifer ist root.
  • Er kann alle Prozesse im Container sehen.
  • Er kann Netzwerk-Verbindungen des Hosts potenziell sehen (je nach Konfiguration).
  • Er kann Capabilities ausnutzen, die der Container hat.
  • Escalation zum Host ist historisch wiederholt gelungen.

Im Jail:

  • Der Angreifer sieht nur Prozesse im Jail.
  • Er sieht nur das Netzwerk-Interface des Jails.
  • Selbst als root im Jail kann er nicht auf den Host zugreifen.
  • Escalation erfordert einen Kernel-Bug — und FreeBSD hat eine exzellente Security-Historie.

Der Unterschied ist architektonisch, nicht konfiguratorisch.

Performance: Direkter Zugriff vs. Layer-Stack

Performance ist nicht das wichtigste Argument für Jails — aber es ist ein schönes Nebenargument.

Ein Docker-Container läuft auf einem Overlay-Filesystem. Das bedeutet: Jeder Schreibzugriff geht durch einen Layer-Stack. OverlayFS (oder AUFS, oder Btrfs, oder Device Mapper — je nachdem, was du konfiguriert hast) muss bei jedem Dateizugriff prüfen, in welchem Layer die Datei liegt. Das kostet Zeit. Bei vielen kleinen Schreibzugriffen (Datenbanken, Logs) spürst du das.

Ein Jail läuft auf einem echten Dateisystem. ZFS, UFS — was immer du nutzt. Kein Overlay. Keine Layer-Auflösung. Direkter Zugriff. Punkt.

Dann der Daemon: Docker hat dockerd. Ein Prozess, der im Hintergrund läuft, Ressourcen verbraucht, und ein Angriffsziel ist. Jails haben keinen Daemon. Der Kernel macht die Isolation. Kein Prozess, der sterben kann. Kein Prozess, den du überwachen musst.

Und Layer-Caching? Docker macht viel Aufwand darum, Layer zwischen Images wiederzuverwenden. Das ist clever, aber es ist ein Workaround für ein Problem, das gar nicht existieren müsste. Mit ZFS und pkgbase hast du Copy-on-Write und geteilte Datasets. Gleicher Effekt, weniger Komplexität.

Die Zahlen sprechen für sich, auch wenn der Unterschied bei einfachen Workloads marginal ist:

MetrikDockerJail
Startup-Zeit0.5-3s0.1-0.5s
Dateisystem-OverheadOverlay-LayerNativ (ZFS/UFS)
Daemon-OverheadJa (dockerd)Nein
Netzwerk-OverheadBridge/NATNativ (direkt oder NAT)
Memory-OverheadContainer-RuntimeNur Kernel

Bei hunderten von Jails/Containern macht das einen messbaren Unterschied. Bei ein paar dutzend ist es vernachlässigbar — aber es ist trotzdem ein Unterschied, der auf architektonischer Eleganz beruht, nicht auf Micro-Optimierung.

Wann Docker Sinn macht — und wann Jails die bessere Wahl sind

Ich bin kein Dogmatiker. Docker hat seinen Platz. Lass uns ehrlich sein:

Docker ist die bessere Wahl, wenn:

  • Du Microservices deployst, die von Dritten kommen. Wenn jemand ein Docker-Image bereitstellt, ist es einfacher, das zu nutzen, als es in ein Jail zu portieren.
  • Du in einem Team arbeitest, das Docker kennt. Das ist vielleicht das wichtigste Argument. Docker ist die Lingua franca der DevOps-Welt. Neue Kollegen kennen Docker. Jails müssen sie erst lernen.
  • Du Kubernetes brauchst. K8s ist das Standard-Orchestrierungstool. Es funktioniert mit Docker (oder containerd). Es gibt kein Äquivalent für Jails — und das wird es wahrscheinlich auch nie geben.
  • Du Cloud-native arbeitest. AWS, GCP, Azure — sie alle bieten native Docker-Unterstützung. FreeBSD-Jails auf AWS? Machbar, aber du bist auf dich gestellt.
  • Du schnelle Prototypen brauchst. docker run -it ubuntu bash ist schneller als ein Jail aufzusetzen — es sei denn, du hast einen ZFS-Snapshot bereit.

Jails sind die bessere Wahl, wenn:

  • Du dein eigenes Hosting betreibst. Eigener Server, eigenes Rechenzentrum, eigene Infrastruktur. Hier hast du die volle Kontrolle und kannst Jails optimal nutzen.
  • Du langfristige Stabilität willst. FreeBSD und Jails sind seit Jahrzehnten stabil. Keine Breaking Changes im Isolations-Modell. Kein Daemon, der updated werden muss.
  • Du Security ernst nimmst. Kernel-level Isolation statt nachgerüsteter Linux-Mechanismen. Kein Daemon mit Root-Rechten.
  • Du Einfachheit schätzt. Weniger Moving Parts. Weniger, was kaputtgehen kann. Standard-Betriebssystem-Werkzeuge statt eines ganzen Ökosystems.
  • Du ZFS nutzt. Die Kombination aus Jails und ZFS ist mächtiger als Docker je sein kann — Instant-Cloning, Snapshots, Replication, Deduplizierung. Alles nativ, alles integriert.
  • Du Vollständige Kontrolle willst. Über das Betriebssystem, über die Isolation, über die Netzwerk-Konfiguration. Jails geben dir die volle Macht des Betriebssystems, nicht die Teilmenge, die Docker freigibt.

Die ehrliche Wahrheit ist: Die meisten kleinen bis mittleren Deployments brauchen kein Kubernetes. Sie brauchen kein Docker-Ökosystem. Sie brauchen Isolation, Reproduzierbarkeit und Einfachheit. Und genau das bieten Jails.

Die Philosophie: FreeBSD vertraut dem Admin, Docker vertraut dem Workflow

Hier wird es philosophisch — und das ist der Kern meines Arguments.

Docker vertraut dem Workflow. Docker sagt: „Wir machen es einfach, Container zu bauen, zu „verschiffen“ und zu orchestrieren. Du musst nicht verstehen, wie das Betriebssystem funktioniert. Du musst verstehen, wie Docker funktioniert.“ Und das funktioniert — solange du in Dockers Workflow bleibst. Wenn du etwas ausserhalb des Workflows brauchst, wird es kompliziert. Eigene Netzwerk-Konfiguration? Da gibt es ein Plugin. Eigene Storage-Lösung? Da gibt es einen Volume-Treiber. Eigenes Orchestrierung? Da gibt es… naja, Kubernetes.

FreeBSD vertraut dem Admin. FreeBSD sagt: „Hier ist ein mächtiges Betriebssystem mit 30 Jahren Erfahrung. Hier sind die Werkzeuge. Du weisst, was du tust. Mach dein Ding.“ Jails sind ein Werkzeug im Werkzeugkasten, nicht das gesamte Werkzeugkasten-Inventar. Du kannst sie mit ZFS kombinieren, mit pf konfigurieren, mit Ansible automatisieren, mit devfs feinabstimmen. Alles ist kombinierbar, weil alles Teil desselben Betriebssystems ist.

Das ist ein fundamentaler Unterschied in der Design-Philosophie:

  • Docker abstrahiert das Betriebssystem weg. Der Container ist die Einheit. Das Betriebssystem darunter ist ein Implementierungsdetail.
  • FreeBSD gibt dir das Betriebssystem als Plattform. Der Jail ist ein Feature des Betriebssystems, kein Ersatz dafür.

Beide Ansätze haben ihre Berechtigung.

Wenn du ein Linux-Admin bist, der Docker nutzt, kennst du das Gefühl: „Warum funktioniert dieser Container lokal, aber nicht in Produktion?“ Overlay-Filesystem-Unterschiede. Netzwerk-Konfiguration. Environment-Variablen. Volume-Mounts. Jede Schicht kann ein Problem sein.

Mit Jails? Wenn es im Jail funktioniert, funktioniert es. Weil das Jail ein echtes Betriebssystem ist. Keine Überraschungen.

Die Sache mit dem Ökosystem

Ein Argument, das oft gegen Jails vorgebracht wird: „Docker hat ein riesiges Ökosystem. Jails haben das nicht.“

Stimmt. Docker Hub hat Millionen von Images. Für Jails gibt es keine zentrale Registry.

Aber lass uns ehrlich sein: Wie viele dieser Millionen Images nutzt du wirklich? Und wie viele davon sind veraltet, unsicher, oder einfach schlechte Basis-Images?

In der Praxis brauchst du eine Handvoll gut gepflegter Basis-Images. Und die kannst du dir mit Jails leicht selbst bauen. Ein ZFS-Snapshot eines sauberen FreeBSD-Base-Systems, und du hast dein eigenes „Image“ — reproduzierbar, versioniert, effizient.

Ausserdem: Die Abhängigkeit von Docker Hub ist ein Risiko. Images verschwinden. Tags werden überschrieben. Die Registry kann ausfallen. Mit einem eigenen ZFS-basierten Jail-Setup bist du unabhängig.

Und was Automatisierung angeht: Tools wie Ansible, Salt, oder einfache Shell-Skripte arbeiten mit Jails genauso gut wie mit Docker. Vielleicht nicht so elegant wie ein docker-compose up, aber dafür transparent und nachvollziehbar.

Der praktische Betrieb: Jails im Alltag

Lass mich einen typischen Arbeitsablauf beschreiben, wie ich ihn auf meinen Servern nutze:

Neuen Service aufsetzen

# 1. ZFS-Dataset für das Jail erstellen
zfs create zroot/jails/myservice

# 2. Von einem sauberen Base-Snapshot klonen
zfs clone zroot/jails/base@clean zroot/jails/myservice

# 3. Jail-Konfiguration hinzufügen
cat >> /etc/jail.conf << 'EOF'
myservice {
    path = /jails/myservice;
    ip4.addr = 192.168.1.20;
    host.hostname = myservice.example.com;
    mount.devfs;
    exec.start = "/bin/sh /etc/rc";
    exec.stop = "/bin/sh /etc/rc.shutdown";
}
EOF

# 4. Jail starten
service jail start myservice

# 5. Pakete installieren
jexec myservice pkg install nginx

# 6. Konfigurieren und loslegen
jexec myservice sysrc nginx_enable=YES

Das dauert — mit einem guten Base-Snapshot — unter einer Minute. Und ich habe die volle Kontrolle über jeden Schritt.

Update eines Jails

# Snapshot vor dem Update (zur Sicherheit)
zfs snapshot zroot/jails/myservice@pre-update

# Update durchführen
jexec myservice pkg upgrade

# Wenn etwas schiefgeht: Rollback
zfs rollback zroot/jails/myservice@pre-update

Kein Image-Rebuild. Kein Cache-Invalidation. Snapshot, Update, fertig. Oder Rollback, wenn nötig.

Migration auf einen anderen Server

# ZFS-Dataset senden (inkrementell möglich!)
zfs send zroot/jails/myservice@latest | ssh newserver zfs recv zroot/jails/myservice

Ein Befehl. Das gesamte Jail — Dateisystem, Konfiguration, alles — wird auf den neuen Server übertragen. Inkrementelle Updates? zfs send -i mit Snapshots. Effizient, schnell, zuverlässig.

Vergleiche das mit docker save und docker load. Oder mit einer Registry. Oder mit docker-compose und Environment-Variablen, die du manuell übertragen musst. ZFS send/recv ist eleganter, weil es auf Dateisystem-Ebene arbeitet — und weil es von einem Werkzeug stammt, das seit 2005 in Produktion ist.

Was Docker besser macht (und warum das okay ist)

Ich will fair sein. Docker hat Dinge, die Jails nicht bieten:

  1. Portabilität. Ein Docker-Image läuft auf jedem Linux-System mit Docker. Ein Jail läuft nur auf FreeBSD. Wenn du heterogene Infrastruktur hast, ist Docker die bessere Wahl.
  2. Ökosystem. Docker Hub, Docker Compose, Docker Swarm, Kubernetes — das Ökosystem ist riesig und gut dokumentiert. Für Jails gibt es Bastille und pot, aber sie sind kein K8s.
  3. Entwickler-Workflow. docker build und docker push sind etabliert. CI/CD-Pipelines unterstützen Docker nativ. Jails erfordern mehr manuelle Arbeit in der Pipeline.
  4. Cloud-Integration. Jeder Cloud-Provider bietet native Container-Support. FreeBSD-Jails musst du selbst betreiben.

Aber — und das ist wichtig — diese Vorteile sind Ökosystem-Vorteile, keine technischen Vorteile. Docker ist populärer, nicht besser isoliert. Docker hat mehr Werkzeuge, nicht sicherere Isolation. Docker ist bequemer, nicht performanter.

Wenn du dich für Docker entscheidest, tust du das wegen des Ökosystems, nicht wegen der Technologie. Und das ist eine legitime Entscheidung — solange du dir bewusst bist, dass es eine Entscheidung für Bequemlichkeit und gegen Einfachheit ist.

Die Philosophie (nochmal, tiefer)

Ich möchte nochmal auf die Philosophie zurückkommen, weil sie mich nicht loslässt.

Die Container-Bewegung hat einen wichtigen Punkt gebracht: Prozesse sollten isoliert sein. Das ist richtig. Das ist gut. Das ist etwas, das FreeBSD seit dem Jahr 2000 weiss.

Aber die Container-Bewegung hat auch etwas mitgebracht, das weniger gut ist: Die Idee, dass das Betriebssystem ein Implementierungsdetail ist. Dass du Container brauchst, weil das Betriebssystem nicht gut genug ist. Dass du Docker brauchst, weil Linux nicht von sich aus isolieren kann.

Und hier ist die Ironie: Linux kann isolieren. Mit Namespaces, cgroups, Seccomp. Aber Linux hat sich entschieden, diese Mechanismen als Bausteine anzubieten, die du zusammensetzen musst — und das hat Docker übernommen. Docker ist der Wrapper, der die Bausteine zusammensteckt.

FreeBSD hat sich anders entschieden. FreeBSD hat die Isolation in den Kernel gebaut, als zusammenhängendes Konzept. Nicht als Bausteine. Sondern als Design. Und das Resultat ist einfacher, sicherer und leichter zu verstehen.

FreeBSD vertraut dem Admin. Der Admin weiss, was er tut. Er braucht keinen Daemon, der ihm die Isolation abnimmt. Er braucht einen Kernel, der Isolation bereitstellt, und Werkzeuge, die transparent sind.

Docker vertraut dem Workflow. Der Workflow weiss, was gut für dich ist. Du brauchst nicht zu verstehen, wie die Isolation funktioniert. Du musst nur docker run tippen.

Beide Philosophien haben ihren Platz. Aber wenn du ein Admin bist, der sein System versteht — und das bist du, wenn du diesen Artikel liest —, dann weisst du, welche Philosophie dir mehr gibt.

Fazit: Container-Infrastruktur, wenn man das Betriebssystem ernst nimmt

Container sind keine schlechte Idee. Prozessisolation ist essenziell. Aber die Art und Weise, wie Docker sie implementiert — mit einem Daemon, mit Layern, mit einer Registry, mit einem ganzen Ökosystem — ist nicht die einzige Art, Isolation zu erreichen. Und sie ist für viele Use-Cases nicht die beste.

FreeBSD-Jails bieten Isolation auf Kernel-Ebene, seit über 25 Jahren. Ohne Daemon. Ohne Registry. Ohne Layer. Ohne Komplexität. In Kombination mit ZFS bieten sie Instant-Cloning, atomare Updates, und effiziente Migration — alles mit Standard-Betriebssystem-Werkzeugen.

Wenn du dein Betriebssystem ernst nimmst — wenn du weisst, was unter der Haube passiert, wenn du Kontrolle über Einfachheit bevorzugst, wenn du Stabilität über Hype wählst —, dann sind Jails die bessere Wahl. Nicht immer. Nicht für jeden. Aber für die meisten, die ihre eigene Infrastruktur betreiben und wissen, was sie tun.

Docker hat die Container-Welt revolutioniert. Das bestreite ich nicht. Aber Revolution bedeutet nicht, dass das Alte obsolet ist. Manchmal bedeutet es nur, dass das Alte vergessen wurde.

Jails sind nicht vergessen. Sie sind gereift. Sie sind bewährt. Und sie warten darauf, von Leuten genutzt zu werden, die Einfachheit über Komplexität wählen.

Die Frage ist nicht: „Warum Jails statt Docker?“

Die Frage ist: „Warum Docker, wenn Jails alles können, was du brauchst — und weniger mitbringen, was du nicht brauchst?“

Digitale Souveränität: Warum On-Premise wieder relevant wird

Zehn Jahre lang war die Antwort auf fast jede IT-Frage dieselbe: Cloud. Neue Applikation? Cloud. Altes System migrieren? Cloud. Storage wächst? Cloud. Skalierung nötig? Cloud. Die Cloud war nicht nur eine Technologie — sie war eine Ideologie. „Cloud-first“ stand in den Strategiepapieren von Unternehmen, die nicht einmal verstanden hatten, was „first“ in diesem Kontext bedeutet.

Jetzt, zehn Jahre später, kommt die Ernüchterung. Nicht bei allen, aber bei vielen. Die Rechnungen sind da. Die Abhängigkeiten sind da. Die Fragen, die man hätte stellen sollen, bevor man migriert hat, sind immer noch da — nur dass sie jetzt teurer zu beantworten sind.

Einleitung

Die Migration in die Cloud war die dominierende IT-Strategie der letzten Dekade. Getrieben von Versprechen wie „unbegrenzter Skalierung“, „pay-as-you-go“ und „Zero Administration“ haben Unternehmen aller Größen Systeme, Daten und Prozesse in die Cloud verlagert — oft ohne die langfristigen Konsequenzen zu verstehen.

Heute beginnt eine Gegenbewegung. Nicht weil die Cloud gescheitert ist — sie hat ihre Vorteile —, sondern weil die Unternehmen, die in den letzten Jahren massiv in die Cloud gewandert sind, feststellen, dass die versprochene Einfachheit mit einem Preis kommt, der nicht nur finanziell ist.

Die Frage ist nicht mehr: „Cloud oder nicht?“ Die Frage ist: „Wofür Cloud, wofür On-Premise, und wie beides so kombinieren, dass die Souveränität über die eigenen Daten und Prozesse erhalten bleibt?“

Die Cloud-Revolution — und was sie wirklich verändert hat

Was die Cloud versprach

Die Argumente für die Cloud waren — und sind — attraktiv:

Skalierung. Mehr Last? Ein paar Klicks, und die Ressourcen sind da. Keine neue Hardware bestellen, kein Rack einbauen, kein Kabel ziehen. Die Cloud skaliert theoretisch unbegrenzt, und diese Skalierung ist innerhalb von Minuten verfügbar, nicht Wochen oder Monaten.

Geschwindigkeit. Eine neue Instanz starten, ein neues Deployment ausrollen, einen neuen Service aufsetzen — in der Cloud geht das in Minuten. On-Premise brauchte früher Tage oder Wochen für Hardware-Beschaffung und Einrichtung. In der Cloud ist alles sofort verfügbar.

Weniger Betriebsaufwand. Keine Server, die man warten muss. Keine Klimaanlage im Serverraum. Keine Hardware-Reparaturen am Freitagabend. Keine Ersatzteil-Lieferketten. Der Cloud-Provider kümmert sich um alles — Strom, Kühlung, Hardware, Netzwerk, physische Sicherheit.

Kapex vs. Opex. Statt hoher Investitionskosten (Capital Expenditure) für Hardware gibt es monatliche Betriebskosten (Operational Expenditure). Das ist für die Finanzabteilung attraktiv: planbare Kosten, keine Abschreibungen, keine Restwerte.

Managed Services. Datenbanken, Message Queues, Container-Orchestrierung, Authentication — alles als Service verfügbar. Kein Betrieb, keine Patches, keine Skalierungssorgen. Der Provider macht das.

Was die Cloud wirklich verändert hat

Die Cloud hat die Einstiegshürde massiv gesenkt. Das ist ihr größter Verdienst. Startups können heute innerhalb von Stunden eine Produktionsinfrastruktur aufbauen, die früher Wochen gedauert hätte. Kleine Unternehmen können auf Enterprise-Grade-Services zugreifen, ohne Enterprise-Grade-Personal zu brauchen.

Aber die Cloud hat auch die Wahrnehmung von IT-Kosten verzerrt. Die monatliche Rechnung fühlt sich anders an als eine einmalige Hardware-Investition — aber über drei bis fünf Jahre gerechnet ist sie oft teurer. Viel teurer. Und das ist nicht die einzige Überraschung.

Die Nachteile — die Rechnung kommt

Kostenentwicklung

Die Cloud ist billig, wenn man klein anfängt. Und sie wird teuer, wenn man wächst. Nicht linear teuer — exponentiell teuer.

Daten-Egress. Daten in die Cloud zu schicken ist kostenlos. Daten aus der Cloud herauszuholen kostet Geld. Das ist kein Zufall — es ist das Geschäftsmodell. AWS berechnet $0.09 pro GB für Daten-Transfer nach draußen. Bei einem Terabyte sind das $90. Bei zehn Terabyte $900. Und das ist nicht die einmalige Migration — das ist jede Replikation, jeder Backup-Restore, jeder Datenabgleich.

Storage-Kosten. S3-Storage kostet $0.023 pro GB und Monat (Standard-Tier). Das klingt wenig. Bei 50 TB sind das $1.150 pro Monat. Bei 500 TB — und das ist für mittelständische Unternehmen keine ungewöhnliche Größenordnung — sind es $11.500 pro Monat. $138.000 pro Jahr. Für Storage. Ohne Compute, ohne Netzwerk, ohne Managed Services.

Compute-Kosten. Eine m5.xlarge-Instanz bei AWS kostet ca. $0,192 pro Stunde. Das sind $1.682 pro Jahr. Eine vergleichbare Dedizierte-Server-Miete kostet ca. $200–400 pro Jahr. Faktor 4–8. Und bei Dediziert-Servern ist die Rechenleistung garantiert, nicht geteilt mit anderen Instanzen auf derselben Hardware.

Lizenz-Kosten. Microsoft-Lizenzen in der Cloud sind oft teurer als on-prem. Oracle-Lizenzen in der Cloud sind ein Albtraum. Red Hat Subscriptions in der Cloud kosten mehr als on-prem. Die Cloud macht Softwarelizenzen nicht billiger — sie macht sie teurer, weil die Cloud-Provider ihre Margen draufschlagen.

Der Faktor 3–10. Studien von 451 Research, IDC und mehreren Cloud-Financial-Management-Firmen zeigen konsistent: Über einen Zeitraum von 3–5 Jahren sind Cloud-Kosten für dauerhaft laufende Workloads 3- bis 10-mal höher als vergleichbare On-Premise-Kosten. Das gilt nicht für kurzlebige Workloads, nicht für Burst-Szenarien, nicht für Startups in der Wachstumsphase — aber für den typischen Dauerbetrieb mittelständischer und großer Unternehmen.

Vendor Lock-in

Die Cloud ist wie ein Hotel: Check-in ist einfach. Check-out ist das Problem.

Proprietäre Services. Wer AWS Lambda, DynamoDB, S3 Event Notifications, SQS, SNS und CloudFormation einsetzt, hat eine Architektur gebaut, die auf AWS funktioniert — und nur auf AWS. Die Migration weg davon ist nicht nur technisch aufwendig, sie ist organisatorisch eine Katastrophe, weil jede Komponente berührt werden muss.

Datenformate. Selbst wenn die Daten theoretisch portabel sind — SQL ist SQL, oder? —, sind die Unterschiede zwischen AWS Aurora, Google Cloud SQL und Azure Database für PostgreSQL substanziell genug, dass eine Migration kein einfacher Dump/Restore ist.

Operational Lock-in. Wer CloudFormation, Terraform-Provider-spezifische Module oder AWS CDK einsetzt, hat Infrastruktur-Code, der nicht portabel ist. Die IaC-Abstraktion, die eigentlich Unabhängigkeit schaffen sollte, ist selbst abhängig vom Provider.

Vertragsstrukturen. Reserved Instances, Savings Plans, Enterprise Agreements — die Vertragsstrukturen der Cloud-Provider sind darauf ausgelegt, Kunden langfristig zu binden. Der Rabatt für ein 3-Jahres-Commitment ist attraktiv, aber er bedeutet: Drei Jahre lang bezahlt man für Ressourcen, unabhängig davon, ob man sie noch braucht.

Datenhoheit

Wer seine Daten in der Cloud hat, hat sie nicht. Der Cloud-Provider hat sie. Und der Cloud-Provider hat eine Rechtsordnung, der er unterliegt.

Cloud Act. Der US-Cloud-Act von 2018 ermächtigt US-Behörden, Daten von US-Unternehmen auch dann einzufordern, wenn die Daten in einem Rechenzentrum außerhalb der USA liegen. AWS, Azure und Google sind US-Unternehmen. Das bedeutet: Daten, die bei diesen Providern liegen — egal ob in Frankfurt, Tokio oder Sydney — können von US-Behörden angefordert werden, ohne dass der Kunde davon erfährt.

GDPR. Die DSGVO verlangt, dass personenbezogene Daten in der EU verarbeitet werden oder ein angemessenes Schutzniveau besteht. Der EU-US Data Privacy Framework ist die aktuelle Lösung — aber er ist ein politisches Abkommen, kein technisches. Und er kann, wie sein Vorgänger (Privacy Shield), jederzeit für ungültig erklärt werden.

Datenzugriff durch Provider. Die AGB der großen Cloud-Provider erlauben ihnen Zugang zu Kunden-Daten in bestimmten Fällen — etwa bei Verdacht auf Missbrauch oder auf Anordnung eines Gerichts. Die Verschlüsselung der Daten ändert daran nichts, wenn der Provider die Schlüssel verwaltet.

Souveränität ist kein theoretisches Konzept. Für Unternehmen im öffentlichen Sektor, im Gesundheitswesen, in der Finanzindustrie und in kritischen Infrastrukturen ist Datenhoheit keine Frage der Präferenz, sondern der regulatorischen Pflicht. Wer Patientendaten, Finanzdaten oder Regierungsdaten in einer US-Cloud speichert, riskiert nicht nur Bußgelder — er riskiert den Entzug der Betriebserlaubnis.

Datenschutz

Datenschutz ist nicht dasselbe wie Datenhoheit. Datenhoheit fragt: Wer kann rechtlich auf meine Daten zugreifen? Datenschutz fragt: Wie schütze ich meine Daten vor unbefugtem Zugriff?

In der Cloud teilt man die Verantwortung mit dem Provider. Das „Shared Responsibility Model“ von AWS, Azure und Google ist klar definiert: Der Provider sichert die Infrastruktur, der Kunde sichert die Daten. Aber in der Praxis bedeutet das:

  • Der Provider hat physischen Zugriff auf die Hardware.
  • Der Provider kontrolliert das Hypervisor-Management.
  • Der Provider kann Memory-Dumps erstellen.
  • Der Provider hat Zugriff auf verschlüsselte Daten, wenn die Entschlüsselung in der Cloud stattfindet.

Das ist kein Misstrauen gegen die Provider. Es ist die Anerkennung einer Tatsache: Wer die Schlüssel nicht selbst verwaltet, hat keine volle Kontrolle über den Zugriff. Und „volle Kontrolle“ ist genau das, was Datenschutz in vielen Szenarien verlangt.

On-Premise ist nicht tot

Die Proklamation „On-Premise ist tot“ war die am häufigsten wiederholte Unwahrheit der letzten zehn Jahre. On-Premise war nie tot. On-Premise war nur nicht mehr sexy.

Was sich geändert hat

On-Premise bedeutet nicht mehr: Ein kalter Keller, ein Rack, ein überlasteter Administrator. Moderne On-Premise-Infrastruktur sieht anders aus:

Infrastructure as Code. Ansible, Terraform, Salt, Puppet — die gleichen Tools, die in der Cloud verwendet werden, funktionieren on-prem. Die Konfiguration ist versioniert, reproduzierbar, automatisiert. Der Unterschied zwischen Cloud und On-Premise ist nicht mehr die Automatisierung — es ist nur noch der Ort, wo die Hardware steht.

Virtualisierung ist gereift. Proxmox, bhyve, KVM — moderne Virtualisierungslösungen bieten Snapshots, Live-Migration, Resource-Pooling und Hochverfügbarkeit. Der Funktionsumfang ist mit Cloud-Virtualisierung vergleichbar, nur dass man die Hardware selbst kontrolliert.

ZFS. ZFS als Storage-Grundlage bietet Datenintegrität, Snapshots, inkrementelle Replikation, Kompression und Caching — alles, was man für robusten On-Premise-Storage braucht. ZFS macht den Unterschied zwischen „ein Filesystem“ und „ein Storage-Management-System“.

Container. Docker, Podman, Kubernetes on-prem — Container laufen nicht nur in der Cloud. Ein On-Premise-Kubernetes-Cluster mit Terraform-Provisioning und Ansible-Konfiguration ist kein Hexenwerk mehr.

Automatisches Patching. FreeBSD mit pkgbase, Ubuntu mit unattended-upgrades, Red Hat mit auto-updates — die Automatisierung von Security-Patches ist on-prem genauso möglich wie in der Cloud.

Stabilität

On-Premise-Infrastruktur ist stabil, wenn sie richtig gebaut ist. „Richtig gebaut“ heißt:

  • ZFS mit Redundanz. Mirror oder RAID-Z vdevs, reguläre Scrubs, Snapshots, Replikation auf einen zweiten Server.
  • CARP oder keepalived für Hochverfügbarkeit. Automatisches Failover bei Server-Ausfall.
  • Monitoring. Prometheus, Grafana, Alertmanager — die gleichen Tools wie in der Cloud.
  • Proaktive Wartung. ZFS-Scrubs wöchentlich, Smart-Monitoring für Disk-Failures, Firmware-Updates planvoll, nicht panisch.

Die Unterscheidung ist wichtig: Instabile On-Premise-Infrastruktur ist kein Argument gegen On-Premise. Es ist ein Argument gegen instabile Infrastruktur.

Sicherheit

On-Premise ist sicherer als die Cloud — wenn man die Security-Kontrolle nutzt, die man hat. In der Cloud gibt man physische Sicherheit und Netzwerk-Sicherheit an den Provider ab. On-Premise behält man beides:

  • Physische Kontrolle. Der Server steht im eigenen Rack. Kein fremder Administrator hat Zugriff. Kein Cloud-Provider-Mitarbeiter kann ein Image erstellen.
  • Netzwerk-Kontrolle. Die Firewall ist die eigene Firewall. Die Netzwerkstruktur ist die eigene Netzwerkstruktur. Es gibt keinen Shared-Tenant-Netzwerk-Pfad, über den ein anderer Cloud-Kunde Angriffe durchführen kann.
  • Verschlüsselung. Daten können on-prem verschlüsselt werden, mit eigenen Schlüsseln, eigener Verwaltung, eigenem KMS. Die Entschlüsselung findet auf der eigenen Hardware statt, nicht auf einem Server, der einem US-Konzern gehört.

Kosteneffizienz

Die Rechnung ist einfach, wenn man sie ehrlich macht:

  • Hardware-Anschaffung. Ein Server mit 256 GB RAM, 2x 1 TB NVMe und 4x 8 TB HDD kostet ca. 8.000–15.000 € — je nach Spezifikation. Geschrieben über 5 Jahre: 1.600–3.000 € pro Jahr.
  • Strom und Kühlung. Ca. 500–1.500 € pro Jahr pro Server, je nach Effizienz.
  • Netzwerk und Housing. Wenn man nicht selbst hostet: Colocation kostet ca. 100–300 € pro Monat pro HE. 1.200–3.600 € pro Jahr.
  • Personal. Das ist der größte Kostenfaktor — aber das Personal braucht man in der Cloud auch. Cloud-Infrastruktur managt sich nicht selbst.

Vergleich: Dieselbe Rechenleistung und denselben Storage in der Cloud kosten — konservativ geschätzt — 30.000–80.000 € pro Jahr. Bei wachsendem Storage-Volumen wird der Unterschied größer, nicht kleiner.

Der Break-Even liegt typischerweise bei 18–24 Monaten. Danach ist On-Premise günstiger. Und der Kostenvorteil wächst, weil die Hardware bezahlt ist, während die Cloud-Rechnung jeden Monat kommt.

Wann Cloud sinnvoll ist

Die Cloud ist nicht schlecht. Sie ist das falsche Default.

Cloud ist sinnvoll, wenn:

Burst-Workloads. Lastspitzen, die unvorhersehbar sind und kurzfristig viel Ressourcen brauchen. Black Friday, eine virale Kampagne, ein einmaliger Daten-Processing-Job. Die Cloud kann in Minuten skalieren und danach wieder schrumpfen. On-Premise muss die Hardware für den Worst Case vorhalten.

Prototyping und MVPs. Wenn man nicht weiß, ob ein Produkt funktioniert, ist die Cloud der richtige Ort. Keine Hardware-Investition, keine Verpflichtung. Wenn das Produkt funktioniert und die Last stabil wird, kann man migrieren.

Globale Verteilung. Wenn man Server in Singapur, São Paulo und Frankfurt braucht — in der nächsten Woche —, ist die Cloud die einzige Option. On-Premise braucht Zeit für Standortsuche, Hardware-Lieferung und Einrichtung.

Managed Services, die man selbst nicht betreiben will. Wenn man kein Elasticsearch-Expertise hat und nicht aufbauen will, dann ist AWS OpenSearch eine vernünftige Wahl. Wenn man kein Kafka-Cluster betreiben kann, dann ist Confluent Cloud eine Lösung. Der Schlüssel ist: Man wählt den Service bewusst, nicht als Default.

Kurzlebige Umgebungen. Test, Staging, CI/CD-Runner — Umgebungen, die man hochfährt, benutzt und wieder abschaltet. Die Cloud ist ideal für Ressourcen, die nicht 24/7 laufen müssen.

Wann On-Premise besser ist

On-Premise ist besser, wenn:

Dauerhafte Workloads. Workloads, die 24/7/365 laufen und deren Ressourcenbedarf vorhersehbar ist. Webserver, Datenbanken, Dateispeicher, interne Anwendungen — das ist das Kerngeschäft, und das gehört on-prem.

Große Datenmengen. Storage ist in der Cloud teuer. Bei 100+ TB wird die Rechnung absurd. On-Premise mit ZFS und großen Platten ist wirtschaftlich, und die Daten liegen dort, wo man sie kontrolliert.

Regulatorische Anforderungen. DSGVO, B3S, Kritis, Medizinprodukte-Verordnung — wenn der Gesetzgeber Datenhoheit verlangt, ist On-Premise keine Option, sondern eine Pflicht.

Langfristige Kosteneffizienz. Wenn man die Last für die nächsten 3–5 Jahre abschätzen kann, ist On-Premise günstiger. Deutlich günstiger.

Latenz-empfindliche Anwendungen. Die Netzwerk-Latenz zwischen Rechenzentrum und Nutzer ist on-prem minimiert. In der Cloud gibt es die Latenz zum nächsten Cloud-Region-Endpoint — und die ist für Echtzeit-Anwendungen nicht immer akzeptabel.

Daten, die nicht die Firma verlassen dürfen. Geheimnisse, Patente, Forschungsdaten, Kunden-Personas — es gibt Daten, die aus rechtlichen, ethischen oder strategischen Gründen nicht auf fremder Infrastruktur liegen dürfen.

Hybridmodelle — oft die beste Lösung

Die falsche Debatte ist „Cloud oder On-Premise“. Die richtige Debatte ist: „Was gehört wo hin?“

Das Prinzip der minimalen Cloud

Nutze die Cloud für das, was sie besser kann als On-Premise. Nutze On-Premise für alles andere. Das klingt banal, ist aber die Konsequenz einer ehrlichen Bewertung:

  • Stabile Kern-Workloads → On-Premise. Datenbanken, Dateispeicher, interne Anwendungen, Identity Management.
  • Burst- und Spitzenlast → Cloud. Zusätzliche Compute-Kapazität bei Lastspitzen, CI/CD-Runner, temporäre Testumgebungen.
  • Datenhoheit-kritische Daten → On-Premise. Alles, was regulatorisch oder strategisch geschützt werden muss.
  • Globale Services → Cloud. CDN, Edge-Computing, globale API-Endpunkte.
  • Managed Spezial-Services → Cloud. ML-Training, spezialisierte Datenbanken, Services, die man selbst nicht betreiben kann oder will.

Praktisches Hybrid-Setup

Ein konkretes Beispiel für ein mittelständisches Unternehmen:

On-Premise:

  • ZFS-Storage-Server mit 200 TB (Datenbanken, Dateispeicher, Backups)
  • Proxmox- oder bhyve-Cluster für interne Anwendungen
  • Git-Server (Gitea oder GitLab)
  • Identity Management (FreeIPA, Keycloak)
  • Monitoring (Prometheus, Grafana)
  • E-Mail-Server

Cloud:

  • CDN für die Website und statische Assets
  • Cloud-Runner für CI/CD (nur bei Bedarf)
  • Disaster Recovery: Replikation der kritischsten Daten in einen Cloud-Object-Store (verschlüsselt, mit eigenen Schlüsseln)
  • Burst-Compute für Lastspitzen (z.B. Quartalsende-Reporting)

Die monatliche Cloud-Rechnung für dieses Setup: vielleicht 500–2.000 €. Nicht 20.000 €. Nicht 50.000 €. Weil das Kerngeschäft on-prem läuft, und die Cloud nur das macht, was sie gut kann.

Die Rückkehr-Strategie

Für Unternehmen, die bereits massiv in der Cloud sind und die Kostenstruktur hinterfragen:

1. Inventur. Welche Workloads laufen in der Cloud? Welche davon laufen dauerhaft? Welche kosten am meisten?

2. Klassifikation. Welche Workloads sind Cloud-native (Lambda, DynamoDB, SQS)? Welche sind portabel (Docker-Container, Standard-Datenbanken, Webserver)?

3. Identifikation der Migrationskandidaten. Portable, dauerhafte Workloads mit hohem Daten-Volumen sind die besten Kandidaten für eine Rückkehr on-prem.

4. Pilot-Migration. Eine Workload auswählen, migrieren, Kosten vergleichen. Nicht alles auf einmal — iterativ vorgehen.

5. Optimierung. Nach der Migration: Cloud-Kosten für die verbleibenden Workloads optimieren. Reserved Instances, Spot-Instances, Right-Sizing.

Digitale Souveränität — mehr als ein Buzzword

Digitale Souveränität bedeutet: Die Fähigkeit, über die eigenen Daten, Prozesse und Infrastruktur selbst zu bestimmen. Nicht abhängig zu sein von einem einzelnen Provider, einem einzelnen Land, einer einzelnen Rechtsordnung.

Das ist kein nationalistisches Konzept. Es ist ein pragmatisches. Wer seine Infrastruktur nicht kontrolliert, kontrolliert sein Geschäft nicht. Wer seine Daten nicht kontrolliert, kontrolliert seine Zukunft nicht.

Die Cloud hat die Illusion erzeugt, dass Infrastruktur kein Problem mehr ist — man mietet sie ja einfach. Aber Infrastruktur war nie das Problem. Das Problem ist die Abhängigkeit. Und die Abhängigkeit ist in den letzten zehn Jahren größer geworden, nicht kleiner.

On-Premise ist die Antwort auf diese Abhängigkeit. Nicht als Absolutum — „alles on-prem“ ist genauso dogmatisch wie „alles Cloud“ —, sondern als bewusste Entscheidung: Was muss ich selbst kontrollieren? Was kann ich auslagern? Und wie stelle ich sicher, dass ich das Ausgelagerte bei Bedarf zurückholen kann?

Fazit

Die Cloud hat die IT-Landschaft verändert. Sie hat den Einstieg erleichtert, die Skalierung beschleunigt und die Betriebsmodelle transformiert. Aber sie hat auch Abhängigkeiten geschaffen, Kosten getrieben und Datenhoheit aufgeweicht.

On-Premise ist die Rückbesinnung auf das, was wirklich zählt: Kontrolle über die eigenen Daten, Kosteneffizienz für dauerhafte Workloads und Unabhängigkeit von einzelnen Providern.

Die beste Lösung ist Hybrid: Cloud für das, was die Cloud besser kann. On-Premise für alles andere. Und eine Architektur, die beides verbindet, ohne die Souveränität aufzugeben.

Die Unternehmen, die das verstehen, werden die nächsten zehn Jahre dominieren. Die anderen werden weiter monatliche Cloud-Rechnungen bezahlen — und sich fragen, warum ihre IT so teuer ist.

FreeBSD Wochenrückblick – 14. bis 20. April 2026

Eine Übersicht der wichtigsten Entwicklungen, Sicherheitsmeldungen und Diskussionen rund um FreeBSD in der vergangenen Woche.

Release Engineering: 15.1 nähert sich der Slush-Phase

Am 17. April begann die stable/15-Slush-Phase im Vorfeld von FreeBSD 15.1. Der Zeitplan, den Release Engineering Lead Colin Percival bereits im Januar veröffentlicht hat, sieht wie folgt aus:

MeilensteinDatum
Ports Quarterly Branch1. April 2026
stable/15 Slush17. April 2026
doc/ Tree Slush24. April 2026
releng/15.1 Branch1. Mai 2026
BETA11. Mai 2026
BETA28. Mai 2026
BETA315. Mai 2026
RC122. Mai 2026
RELEASE Build29. Mai 2026
RELEASE Ankündigung2. Juni 2026

Percival hatte bereits im Januar angemerkt, dass 15.1 angesichts der Erfahrungen mit 15.0 ein „relativ holpriges“ Minor Release werden könnte, insbesondere wegen weiterer pkgbase-Änderungen. Zeitgleich erreicht stable/13 Ende April sein End-of-Life – die wöchentlichen Snapshot-Builds für diesen Branch werden dann eingestellt.

Sicherheit: SA-26:08 – Kritischer Stack-Overflow in rpcsec_gss

Die wohl bemerkenswerteste sicherheitsrelevante Meldung der letzten Wochen betrifft FreeBSD Security Advisory SA-26:08, das einen Stack-Overflow in svc_rpc_gss_validate() beschreibt. Die Schwachstelle ermöglicht Remote Code Execution und betrifft alle unterstützten FreeBSD-Versionen. Patches sind verfügbar für 15.0-RELEASE-p5 und die 14.x-Serie.

Das besondere an diesem Advisory: Die Schwachstelle wurde von Nicholas Carlini mithilfe von Claude AI (Anthropic) entdeckt und exploitbar gemacht – ein frühes Beispiel dafür, wie KI-gestützte Sicherheitsforschung reale Kernel-Schwachstellen aufdeckt. Der Fix-Commit von Mark Johnston (143293c) behebt den Pufferüberlauf in der GSS-Validierungsroutine.

Q1-2026 Statusbericht veröffentlicht

Die FreeBSD Statusberichte für das erste Quartal 2026 sind nun online, darunter ein Update der Release Engineering Team, das die erfolgreiche Veröffentlichung von 14.4-RELEASE im März und die Planung für 15.1 dokumentiert.

Laptop-Projekt: Community-Testing aufgerufen

Die FreeBSD Foundation hat am 6. April einen Call for Testing für das Laptop Integration Testing Project veröffentlicht. Nach dem Year-One-Update im Februar wurde seit Januar an der Test-Infrastruktur gearbeitet. Nun können Community-Mitglieder ihre Laptops testen:

pkg install python hw-probe
git clone https://github.com/FreeBSDFoundation/freebsd-laptop-testing
cd freebsd-laptop-testing
make

Das Test-Tool erfasst automatisch Hardware-Funktionen und erstellt anonymisierte Berichte, die per Pull Request eingereicht werden. Die Ergebnisse fließen in eine öffentliche Kompatibilitätsmatrix unter freebsdfoundation.github.io/freebsd-laptop-testing.

OpenZFS: Native relatime-Eigenschaft

Am 1. April wurde in OpenZFS die native relatime-Eigenschaft implementiert (Commit 1685849 von @amotin). Relatime (relative atime) aktualisiert die Zugriffszeit einer Datei nur, wenn sie älter ist als die Änderungs- oder Statusänderungszeit. Das reduziert unnötige Schreibzugriffe erheblich – besonders auf SSDs und in Caches – und war bisher nur über Mount-Optionen konfigurierbar. Mit der neuen Eigenschaft kann relatime nun nativ pro Dataset gesetzt werden.

Ports: GNU-ld-Checks entfernt

Brooks Davis hat am 13. April einen umfangreichen Cleanup-Commit (d87609e) in die Ports eingebracht, der alle Überprüfungen entfernt, ob der Basis-Linker GNU ld ist oder nicht. Hintergrund: Seit FreeBSD den LLVM-Linker lld als Standard verwendet, sind diese Checks obsolet geworden. Der Commit betrifft Ports tree-weit zahlreiche Makefiles.

Mailinglisten

IPv6-Only-RA: Wechsel zu RFC 8925 vorgeschlagen

Pouria Mousavizadeh Tehrani hat auf freebsd-current einen Vorschlag eingereicht, die experimentelle Implementierung des IETF-Drafts DRAFT_IETF_6MAN_IPV6ONLY_FLAG zu entfernen und stattdessen RFC 8925 (IPv6-Only-Präferenz über DHCP-Option) zu übernehmen. Die Geschichte dahinter ist interessant: Bjoern Zeeb hatte ursprünglich die Idee, Netzwerke über ein RA-Flag als IPv6-Only zu markieren. Der Draft wurde jedoch verworfen, weil RAs trivial gefälscht werden können – ein Angreifer könnte IPv4-Netzwerke böswillig abschalten. Später reichte Google die gleiche Idee als DHCP-Option ein, was zu RFC 8925 wurde. Pouria bittet um Feedback zur Entfernung der Draft-spezifischen Codepfade aus Kernel und Userland.

Kqueue-Panic: knlist-Assertionen nachgerüstet

Auf freebsd-current wurde ein Kernel-Panic gemeldet: „knote was already on knlist“ nach dem Build main-n284826. Kyle Evans (kevans91) hat daraufhin Assertionen in knlist_add() und knlist_remove_kq() nachgerüstet (Commit 306c904), um solche Fehlerzustände früher und zuverlässiger zu erkennen. Der zugehörige Bugreport (Bug 293382) beschreibt Deadlocks und Abstürze rund um closefp_impl – ein Hinweis darauf, dass das Problem mit dem Schließen von File Descriptoren und der kqueue-Registrierung zusammenhängt.

Infrastructure as Code: Warum Handarbeit auf Servern gefährlich ist

Jeder Systemadministrator kennt den Moment: Man meldet sich auf einem Server an, führt ein paar Befehle aus, ändert eine Konfigurationsdatei, installiert ein Paket. Alles funktioniert. Ein paar Wochen später steht man vor demselben Problem — nur auf einem anderen Server. Und man kann sich nicht mehr erinnern, welche Befehle man ausgeführt hat. Der Server ist ein Schneemann: Er sieht aus wie die anderen, aber unter der Oberfläche ist alles anders.

Infrastructure as Code (IaC) ist die Antwort auf dieses Problem. Und wer als Softwareentwickler und Administrator — wie ich — beide Welten kennt, weiß, dass IaC nicht nur ein Trend ist, sondern eine Notwendigkeit.

Das Problem mit manuellen Servern

Manuelle Administration skaliert nicht. Das ist keine Meinungsfrage, sondern Mathematik. Wenn jeder Server ein Unikat ist, dann ist jeder Server ein Risiko. Wenn ein Server ausfällt und niemand weiß, wie er konfiguriert war, dann ist der Wiederherstellungsprozess ein Glücksspiel.

Die typischen Symptome sind vertraut:

  • Konfigurationsdrift. Server, die identisch sein sollten, unterscheiden sich in subtilen — und manchmal kritischen — Details.
  • Wissensmonopole. Nur eine Person weiß, wie ein bestimmter Server konfiguriert ist. Wenn diese Person krank wird oder geht, ist das Wissen weg.
  • Nicht-reproduzierbare Zustände. Ein Server funktioniert, aber niemand kann erklären, warum. Oder schlimmer: Niemand kann ihn neu aufsetzen.
  • Angst vor Änderungen. Weil niemand weiß, was passieren wird, wenn man etwas ändert, ändert man nichts. Bis man es muss. Und dann ist es zu spät.

Was Infrastructure as Code bedeutet

IaC ist nicht einfach „Skripte schreiben“. Es ist ein Paradigmenwechsel in der Art und Weise, wie wir über Infrastruktur denken.

Deklarativ statt imperativ. Statt zu beschreiben wie ein Server konfiguriert werden soll („installiere nginx, kopiere die Konfiguration, starte den Dienst“), beschreibt man was der Zustand sein soll („nginx muss installiert sein, die Konfiguration muss diesen Inhalt haben, der Dienst muss laufen“). Der IaC-Workflow kümmert sich um das Wie.

Versioniert. Jede Änderung an der Infrastruktur ist in Git committet. Man kann sehen, wer was wann geändert hat. Man kann zu einem früheren Zustand zurückkehren. Man kann Änderungen über Code-Reviews prüfen lassen.

Reproduzierbar. Wenn ein Server ausfällt, kann er aus der IaC-Definition komplett neu aufgesetzt werden. Wenn ein neuer Server benötigt wird, kann er in Minuten statt Stunden erstellt werden.

Testbar. Bevor eine Änderung auf Produktion geht, kann sie in einer Testumgebung validiert werden. Syntaxfehler, fehlende Abhängigkeiten, inkompatible Konfigurationen — alles wird erkannt, bevor es Schaden anrichtet.

Die Werkzeuge

Die Wahl des Werkzeugs hängt vom Kontext ab. Hier eine Übersicht der etablierten Optionen:

Ansible

Das probably bekannteste IaC-Werkzeug. Ansible ist agentenlos (arbeitet über SSH), verwendet YAML für die Konfiguration und hat eine flache Lernkurve. Für FreeBSD-Administratoren ist es attraktiv, weil es native Module für ZFS, Jails, pkg und andere FreeBSD-Spezifika hat.

- name: ZFS-Dataset für Backup erstellen
  community.general.zfs:
    name: tank/backup
    state: present
    extra_zfs_properties:
      compression: zstd
      atime: off
      mountpoint: /backup

Der Nachteil: Ansible ist langsam bei großen Infrastrukturen und die YAML-Syntax wird bei komplexen Logiken unübersichtlich.

Terraform / OpenTofu

Für Cloud-Infrastrukturen ist Terraform (oder der Open-Source-Fork OpenTofu) der De-facto-Standard. Es verwaltet die Infrastruktur als Ressourcen — Instanzen, Netzwerke, Sicherheitsgruppen, Speicher — und hält den Zustand in einer State-Datei.

resource "aws_instance" "freebsd" {
  ami           = "ami-0xfreebsd15"
  instance_type = "t3.medium"

  tags = {
    Name = "freebsd-prod"
  }
}

Pulumi

Pulumi geht einen anderen Weg: Statt YAML oder HCL verwendet man echte Programmiersprachen — Python, TypeScript, Go. Das erlaubt echte Logik, Schleifen, Bedingungen und Typsicherheit.

import pulumi
import pulumi_command as command

server = command.remote.Command("freebsd-setup",
    connection=command.remote.ConnectionArgs(
        host="10.0.0.1",
        user="root",
    ),
    create="pkg install -y nginx",
)

Für FreeBSD: Besonderheiten

FreeBSD bringt eigene Werkzeuge mit, die in der IaC-Welt eine Sonderrolle einnehmen:

  • Jails sind leichtgewichtige Container, die sich hervorragend mit Ansible oder Shell-Skripten verwalten lassen.
  • ZFS bietet programmierbare Snapshots und Replikation, die sich in IaC-Workflows integrieren lassen.
  • pkgbase (seit FreeBSD 15.0) macht das Basissystem selbst paketierbar und damit IaC-kompatibel.

Der Pfad zur Einführung

IaC lässt sich nicht über Nacht einführen. Aber man kann schrittweise vorgehen:

  1. Bestandsaufnahme. Welche Server gibt es? Welche Konfigurationen? Was ist dokumentiert, was nicht?
  2. Ersten Server codifizieren. Den einfachsten Server nehmen und seine Konfiguration in Ansible (oder ein anderes Werkzeug) übertragen. Das dient als Lernprojekt und als Template.
  3. Neue Server nur noch via IaC. Jeder neue Server wird ausschließlich über Code konfiguriert. Keine manuellen Änderungen mehr.
  4. Bestehende Server migrieren. Nach und nach die manuelle Konfiguration durch IaC-Definitionen ersetzen. Das ist der langwierigste Teil.
  5. CI/CD für Infrastruktur. Änderungen an der IaC-Definition werden automatisch in Testumgebungen deployed, bevor sie auf Produktion gehen.

Die Kultur ändert sich mit

IaC ist nicht nur ein technischer Wechsel, sondern ein kultureller. Plötzlich sind Konfigurationsänderungen sichtbar. Jeder kann sie sehen, kommentieren, zurückrollen. Das ist ungewohnt — besonders für Administratoren.

Aber es ist der richtige Weg. In einer Welt, in der Sicherheitseinheiten täglich nachweisen müssen, welche Konfiguration auf welchem Server zu welchem Zeitpunkt aktiv war, ist manuelle Administration ein Risiko, das man sich nicht mehr leisten kann.

Und für den einzelnen Administrator ist IaC eine Erleichterung: Man muss sich nicht mehr erinnern, was man auf welchem Server gemacht hat. Es steht alles im Git-Repository. Wenn man nicht weiß, wie ein Server konfiguriert ist — man schaut nach. Immer. Zuverlässig. Ohne Ausnahme.

FreeBSD-Wochenrückblick: 6.–13. April 2026

Die Kalenderwoche 15 bringt Bewegung in mehrere Baustellen: Der 15.1-Zeitplan ist offiziell, das Laptop-Projekt ruft zum Community-Test auf, OpenZFS bekommt endlich eine native relatime-Property, und auf freebsd-current wird hitzig über IPv6-only-RA-Flags und einen knote-Panic diskutiert.

FreeBSD 15.1: Zeitplan veröffentlicht, Code Slush am 17. April

Am 3. April verschickten die Release Engineers die offizielle Zeitplan-Erinnerung für FreeBSD 15.1. Die wichtigsten Termine:

MeilensteinGeplant
Code Slush beginnt17. April 2026
releng/15.1-Branch1. Mai
BETA11. Mai
RC122. Mai
RELEASE2. Juni

Der Code Slush startet also noch diese Woche: Ab dem 17. April sollten keine neuen Features mehr in den stable/15-Branch eingefügt werden. Commits sind weiterhin möglich, aber der Fokus verlagert sich auf Stabilität und Bugfixes.

Die Release Notes-Seite existiert bereits und listet die geplanten Neuerungen: KDE-Plasma-6-Installer-Option, verbesserte Realtek-WiFi-Unterstützung (RTW88/RTW89), aktualisierte Grafiktreiber und erweiterte Power-Management-Features.

Was das heißt: Wer noch Änderungen für 15.1 einbringen will, hat noch wenige Tage. Danach geht es in die Beta-Phase.

Laptop-Integration-Testing-Projekt: Aufruf an die Community

Die FreeBSD Foundation hat ein neues Community-Test-Programm ins Leben gerufen: das Laptop Integration Testing Project. LWN berichtete am 6. April darüber.

Die Idee: Die Foundation hat begrenzten Zugang zu Test-Hardware und will die Community einbinden. Freiwillige können FreeBSD auf ihrem Laptop testen und Ergebnisse über ein GitHub-Repository einreichen — ohne sich um Umgebungssetup, Formatierung oder Repo-Details kümmern zu müssen.

Besonders wertvoll: Nicht nur automatisierte Hardware-Erkennung, sondern auch manuelle Kommentare zur persönlichen Erfahrung mit FreeBSD auf dem jeweiligen Gerät. Die Ergebnisse werden in einer öffentlichen Kompatibilitäts-Matrix dargestellt.

Was das heißt: Endlich ein strukturierter Weg, Laptop-Kompatibilität zu dokumentieren. Wer FreeBSD auf einem Laptop nutzt, sollte das Repository besuchen und Ergebnisse einreichen — jeder Eintrag zählt.

Repository: github.com/FreeBSDFoundation/freebsd-laptop-testing

OpenZFS: Native relatime-Property für FreeBSD

Alexander Motin (amotin) hat am 1. April einen lang erwarteten Commit in OpenZFS gemerged: relatime als native ZFS-Property auf FreeBSD.

Bisher mussten FreeBSD-Nutzer, die relatime (relative Access-Time-Updates — atime wird nur geschrieben, wenn sie älter als mtime/ctime ist oder älter als 24 Stunden) nutzen wollten, auf den Mount-Option-Workaround zurückgreifen. Mit dem neuen Commit wird relatime zu einer echten ZFS-Dataset-Eigenschaft, die sich per zfs set relatime=on pool/dataset setzen lässt.

Die Implementierung folgt der Linux-Kernel-Logik: atime wird nur aktualisiert, wenn mindestens eine der Bedingungen erfüllt ist:

  • atime < mtime
  • atime < ctime
  • atime älter als 24 Stunden

Was das heißt: Weniger unnötige ZFS-Writes bei Lesezugriffen, besonders auf SSDs und Laptops. Wer atime=on braucht (z.B. für Maildir oder Backup-Tools), kann jetzt relatime=on setzen und bekommt das Beste aus beiden Welten.

Mailinglisten: IPv6-only-RA-Flag soll weichen

Pouria Mousavizadeh Tehrani hat am 2. April auf freebsd-current einen Vorschlag zur Diskussion gestellt: Die Entfernung der IPv6-only-RA-Draft-Implementierung zugunsten von RFC 8925 (DHCP-basierter Ansatz).

Hintergrund: Bjoern Zeeb hatte eine IPv6-only-Flag-Implementierung als IETF-Draft eingereicht, die auch im FreeBSD-Kernel und Userland vorhanden ist (standardmäßig nicht kompiliert, hinter DRAFT_IETF_6MAN_IPV6ONLY_FLAG). Das Draft wurde jedoch vom IETF aufgegeben, weil RA-Flags trivial fälschbar sind und für Malicious-Disabling von IPv4-Netzwerken missbraucht werden könnten. RFC 8925 verwendet stattdessen eine DHCP-Option, die in der Praxis durch DHCP Snooping besser geschützt ist.

Pouria bittet um Zustimmung, die Draft-spezifischen Codepfade zu entfernen und auf RFC 8925 zu migrieren. Bjoern ist cc’d, und die Diskussion läuft.

Was das heißt: Wer die experimentelle IPv6-only-RA-Flag nutzt, sollte auf RFC 8925 umsteigen. Die Code-Bereinigung ist ein guter Schritt — weniger tote Pfade im Kernel.

Mailinglisten: knote-Panic und etcupdate-Verlangsamung

Zwei aktuelle Probleme auf freebsd-current:

knote-Panic: Nach Commit d9d7b5948649 (main-n284826) tritt bei einigen Nutzern ein Panic auf: "knote ... was already on knlist...". Konstantin Belousov und Kyle Evans arbeiten an der Diagnose. Der Bug (Bugzilla #293382) betrifft closefp_impl und kann zu Deadlocks und Kernel-Crashes führen. Betroffen sind -CURRENT-Nutzer nach dem 2. April.

etcupdate doppelt so langsam: Bob Prohaska berichtet, dass etcupdate auf armv7 (Raspberry Pi 2) mittlerweile doppelt so lange dauert wie früher. Die Diskussion mit Dimitry Andric und Mark Millard legt nahe, dass die Ursache in der pkgbase-Umstellung und der veränderten Dateistruktur liegt — etcupdate muss mehr Dateien prozessieren.

Was das heißt: -CURRENT-Nutzer sollten den knote-Bug im Blick behalten. Auf armv7-Systemen lohnt es sich, etcupdate-Alternativen wie mergemaster zu evaluieren, bis das Problem behoben ist.

Ports: Chromium 146 und Security-Updates

Die Ports-Collection hat in dieser Woche mehrere Updates erhalten:

  • Chromium 146.0.7680.177 (1. April, René Nagy) — aktuelles Major-Release
  • Zuvor: Chromium 146.0.7680.164 mit VuXML-Eintrag für Sicherheitslücken in Versionen < 146.0.7680.164
  • Chromium 30. März: Revert eines Upstream-Commits, der das Datei-Dialog-Verhalten auf FreeBSD kaputtgemacht hatte

Die kontinuierlichen Chromium-Updates zeigen, dass die FreeBSD-Ports-Maintainer aktiv sind — aber auch, dass Upstream-Commits regelmäßig FreeBSD-spezifische Regressionen verursachen.

Neuer Committer: Kenneth Raplee

Am 4. April wurde Kenneth Raplee (kenrap@FreeBSD.org) als neuer Ports-Committer angekündigt. Willkommen im Projekt!

Ausblick auf die kommende Woche

  • 17. April: Code Slush für 15.1 beginnt — letzte Chance für Feature-Commits
  • Der knote-Bug in -CURRENT braucht einen Fix
  • Die IPv6-only-RA-Diskussion könnte zu einem Commit führen
  • Das Laptop-Testing-Projekt hofft auf erste Community-Ergebnisse

Syncoid: ZFS-Replikation ohne Umwege

Wer ZFS nutzt, kennt das Gefühl: Man hat Snapshots, man hat zfs send und zfs recv, und theoretisch ist alles möglich. Praktisch steht man dann vor einer Pipe aus drei Befehlen, fragt sich, ob --verbose vor oder hinter -R gehört, und stellt fest, dass der inkrementelle Sendevorgang um Mitternacht abgebrochen hat, weil irgendein Snapshot auf der Zielseite fehlte.

Genau hier setzt Syncoid an.

Was ist Syncoid?

Syncoid ist Teil des Sanoid-Projekts von Jim Salter und beschreibt sich selbst schlicht als Replikationstool für ZFS. Das klingt bescheidener, als es ist. Tatsächlich löst Syncoid genau die Probleme, die jeden treffen, der ernsthaft ZFS-Daten zwischen Maschinen bewegen will:

  • Es findet selbst heraus, welcher Snapshot der letzte gemeinsame ist.
  • Es erzeugt bei Bedarf einen neuen Snapshot auf der Quelle.
  • Es überträgt inkrementell — nur die Differenz.
  • Es funktioniert lokal und remote, als Push und als Pull.
  • Es macht das alles mit einem einzigen Befehl.

Wer schon einmal versucht hat, eine ZFS-Replikation mit reinen Shell-Mitteln fehlerresistent aufzuziehen, weiß, dass das keine Kleinigkeit ist. Syncoid nimmt genau diesen Aufwand weg, ohne dabei die Kontrolle zu verlieren.

Die Grundlage: ZFS send und recv

Um zu verstehen, was Syncoid leistet, hilft ein Blick auf das, was es vereinfacht. ZFS bringt mit zfs send und zfs recv bereits ein mächtiges Werkzeug für die Replikation mit. Das Prinzip ist einfach: Ein Snapshot wird serialisiert und auf der anderen Seite wieder eingespielt. Inkrementell geht das auch — man sendet nur die Differenz zwischen zwei Snapshots.

In der Praxis sieht das dann so aus:

zfs send -R data/images/vm@syncoid_2026-04-07:12:00:00 | ssh remotehost "zfs recv backup/images/vm"

Das funktioniert. Bis es nicht mehr funktioniert. Weil ein Snapshot auf der Zielseite gelöscht wurde. Weil die SSH-Verbindung abbricht. Weil man vergessen hat, -I statt -i zu verwenden. Weil die Quellseite keine Snapshots hat, die die Zielseite erwartet.

Syncoid kümmert sich um all diese Fälle. Und das ist der eigentliche Mehrwert: nicht dass es zfs send aufruft — das kann jeder —, sondern dass es die Fehlerfälle abfängt, die im Alltag regelmäßig auftreten.

Loslegen: Einfacher geht es nicht

Die grundlegende Syntax ist so simpel, dass man sie sich kaum merken muss, weil sie offensichtlich ist:

syncoid data/images/vm backup/images/vm

Das repliziert den Dataset data/images/vm nach backup/images/vm — lokal, auf derselben Maschine. Beim ersten Lauf wird alles übertragen, bei jedem weiteren nur die Differenz.

Remote geht es genauso, nur mit dem üblichen SSH-Präfix:

syncoid data/images/vm root@remotehost:backup/images/vm

Das ist Push-Replikation: Die lokale Maschine sendet zum Remote. Pull geht auch:

syncoid root@remotehost:data/images/vm backup/images/vm

Hier zieht die lokale Maschine die Daten vom Remote. Der Unterschied mag marginal wirken, ist aber in der Praxis relevant: Pull bedeutet, dass die Backup-Maschine die Kontrolle hat und keinen SSH-Zugang zur Produktionsmaschine benötigt.

Rekursiv geht es mit -r:

syncoid -r rpool remotehost:tank/backup/rpool

Damit werden alle Child-Datasets unter rpool mit übertragen. Für ein vollständiges Backup ist das genau das, was man braucht.

Ohne Root: ZFS-Rechte delegieren

Einer der häufigsten Fehler bei ZFS-Backups ist, sie als root laufen zu lassen. Es funktioniert, aber es bedeutet, dass man root-SSH-Zugang zwischen Maschinen erlaubt. Das ist ein Sicherheitsrisiko, das sich vermeiden lässt.

Syncoid unterstützt den Betrieb ohne Root über --no-privilege-elevation. Dafür müssen auf beiden Seiten die entsprechenden ZFS-Berechtigungen delegiert werden:

Auf der Quellmaschine:

zfs allow -u syncuser send,hold,mount,snapshot,destroy rpool

Auf der Zielmaschine:

zfs allow -u syncuser compression,mountpoint,create,mount,receive,rollback,destroy tank/backup/rpool

Und dann:

syncoid --no-privilege-elevation -r rpool syncuser@remotehost:tank/backup/rpool

Das ist mehr Aufwand bei der Einrichtung, aber es ist der richtige Weg. Kein root-SSH, keine unnötigen Privilegien. Wenn man mit --use-hold arbeitet, kommt noch die release-Berechtigung dazu. Wer --create-bookmark nutzt, braucht bookmark auf der Quellseite.

Die Optionen, die man tatsächlich braucht

Syncoid hat eine überschaubare, aber nützliche Anzahl an Optionen. Die wichtigsten:

--compress: Kompression während der Übertragung. Unterstützt werden gzip, pigz-fast, pigz-slow, zstd-fast, zstd-slow, lz4, xz, lzo (Standard) und none. Wer über ein LAN synchronisiert, kann none wählen; über WAN ist zstd-fast eine gute Wahl.

--no-sync-snap: Standardmäßig erzeugt Syncoid bei jedem Lauf einen eigenen Snapshot. Wer das nicht möchte — etwa weil Sanoid die Snapshot-Verwaltung übernimmt oder weil man in ein Multi-Target-Setup repliziert —, der schaltet das mit --no-sync-snap ab. Verhindert die Anhäufung von Syncoid-Snapshots auf der Zielseite.

--create-bookmark: Setzt auf der Quelle ein Lesezeichen für den letzten erfolgreich replizierten Snapshot. Das ist besonders nützlich bei unregelmäßiger Replikation: Wenn der letzte gemeinsame Snapshot auf der Quelle bereits gelöscht wurde, kann das Bookmark den Zugriff auf den benötigten Punkt trotzdem ermöglichen. Funktioniert nur zusammen mit --no-sync-snap.

--use-hold: Setzt einen Hold auf den neuesten Snapshot auf Quell- und Zielseite und entfernt ihn erst nach dem nächsten erfolgreichen Lauf. Das verhindert, dass ein Snapshot gelöscht wird, bevor er repliziert wurde. Bei Multi-Target-Setups (A→B, A→C) kann man mit --identifier unterschiedliche Holds pro Ziel setzen.

--no-stream: Statt -I (alle Zwischensnapshots) wird -i (nur der neueste Snapshot) verwendet. Spart Bandbreite, wenn man die Zwischenschritte nicht braucht.

--exclude-datasets=REGEX: Schließt bestimmte Datasets von der Replikation aus. Kann mehrfach angegeben werden.

--source-bwlimit und --target-bwlimit: Bandbreitenlimitierung, falls mbuffer nicht verfügbar ist. Nützlich, wenn man die Übertragung nicht die ganze Leitung blockieren lassen möchte.

Snapshots und Pruning

Ein wichtiger Punkt: Syncoid ist agnostisch gegenüber der Snapshot-Verwaltung. Es löscht keine Snapshots auf der Zielseite, nur weil sie auf der Quelle gelöscht wurden. Das ist kein Fehler, sondern ein Feature — es schützt vor Datenverlust.

Für das Aufräumen alter Snapshots auf der Zielseite empfiehlt sich Sanoid mit einer Konfiguration wie dieser:

[backup/images/vm]
autoprune = yes
autosnap = no
frequently = 0
hourly = 36
daily = 30
monthly = 6
yearly = 0

autosnap = no, weil die Snapshots von Syncoid kommen und nicht von Sanoid erzeugt werden sollen. autoprune = yes, um alte Snapshots nach den definierten Regeln aufzuräumen. Das lässt sich mit Templates auch für viele Datasets gleichzeitig konfigurieren.

Oder, kürzer, mit einem Template:

[template_backup]
autoprune = yes
autosnap = no
hourly = 36
daily = 30
monthly = 6

[backup/images]
use_template = backup
recursive = yes

Die Kombination aus Syncoid für die Replikation und Sanoid für das Pruning ist das, was die meisten produktiven Setups verwenden. Und sie funktioniert genau deshalb gut, weil beide Werkzeuge ihre Zuständigkeit klar abgrenzen.

Praktisches Setup: Ein vollständiges Beispiel

Angenommen, man hat einen Server prod mit dem Pool zdata und einen Backup-Server backup mit dem Pool tank. Ziel: Tägliches inkrementelles Backup aller Datasets.

1. Sanoid auf prod einrichten (für die Snapshot-Erstellung):

/etc/sanoid/sanoid.conf

[zdata]
use_template = production

[template_production]
frequently = 0
hourly = 36
daily = 30
monthly = 3
yearly = 0
autosnap = yes
autoprune = yes

2. Cron-Job auf backup (Pull-Replikation):

0 2 * * * syncoid --no-sync-snap --compress=zstd-fast -r syncuser@prod:zdata tank/backup/zdata

3. Sanoid auf backup (für das Pruning):

[tank/backup/zdata]
use_template = backup

[template_backup]
autoprune = yes
autosnap = no
hourly = 36
daily = 30
monthly = 6
yearly = 0

Das ist im Grunde das komplette Setup. Drei Konfigurationsschritte, ein Cron-Job, und man hat eine robuste, inkrementelle ZFS-Replikation, die im Hintergrund läuft, ohne dass man sich darum kümmern muss.

Was man beachten sollte

Ein paar Dinge, die in der Dokumentation eher am Rande stehen, aber im Alltag relevant werden:

SSH-Konfiguration: Syncoid baut für jeden Lauf eine neue SSH-Verbindung auf. Bei häufiger Replikation lohnt sich ein Connection Multiplexing in der ~/.ssh/config:

Host backupserver
  HostName 192.168.1.50
  User syncuser
  ControlMaster auto
  ControlPath ~/.ssh/sockets/%r@%h-%p
  ControlPersist 600

Das spart den Verbindungsaufbau bei jedem Lauf.

mbuffer: Wenn auf beiden Seiten mbuffer verfügbar ist, nutzt Syncoid es automatisch. Das kann die Übertragungsrate deutlich verbessern, weil es die Pipeline puffert und verhindert, dass zfs send auf zfs recv warten muss.

Erstlauf dauert: Der erste Syncoid-Lauf überträgt den kompletten Dataset. Bei mehreren Terabyte bedeutet das: Zeit einplanen. Alle folgenden Läufe sind inkrementell und entsprechend schneller.

Kein Konfigurationsfile: Im Gegensatz zu Sanoid hat Syncoid keine Konfigurationsdatei. Alles wird über Kommandozeilen-Flags gesteuert. Das ist konsistent, bedeutet aber auch, dass man bei komplexeren Setups die Aufrufe entsprechend dokumentieren sollte.

Warum Syncoid und nicht rsync?

Die Frage ist naheliegend. rsync ist etabliert, gut dokumentiert und funktioniert auf jedem System. Aber rsync kennt ZFS nicht. Es kann nicht inkrementell auf Snapshot-Ebene arbeiten, es kann keine Block-Differenzierung nutzen, und es kann nicht garantieren, dass der Zielzustand konsistent ist.

ZFS-Snapshots sind atomar. Ein Snapshot repräsentiert den exakten Zustand eines Datasets zu einem bestimmten Zeitpunkt. Wenn man den repliziert, erhält man auf der Zielseite exakt diesen Zustand — nicht einen Zustand, bei dem einige Dateien schon aus dem Snapshot stammen und andere gerade im Flux sind.

Das ist kein akademischer Unterschied. Wer schon einmal ein Datenbank-Backup mit rsync gemacht hat und feststellen musste, dass die Dateien während der Übertragung verändert wurden, weiß, wovon die Rede ist.

Fazit

Syncoid ist eines dieser Werkzeuge, die man sich früher wünscht. Es nimmt einen wiederkehrenden, fehleranfälligen Prozess — ZFS-Replikation per Hand — und macht ihn zu einem einzelnen Befehl, der funktioniert. Nicht weil er Magie einsetzt, sondern weil er die Randfälle abdeckt, die man selbst immer vergisst: fehlende Snapshots, abgebrochene Verbindungen, falsche Flags.

Wer ZFS einsetzt und nicht bereits ein etabliertes Replikations-Setup hat, sollte Syncoid ausprobieren. Die Einstiegshürde ist minimal, der Nutzen ist sofort spürbar, und falls man doch mehr Kontrolle braucht: Die Optionen sind da, man muss sie nur nutzen.

Und wer Sanoid für die Snapshot-Verwaltung ohnehin schon im Einsatz hat — der hat Syncoid bereits installiert. Es ist Teil desselben Pakets. Man muss es nur nutzen.

Quellen

FreeBSD Änderungen der letzten Woche – 4. April 2026

Übersicht

Diese Woche gab es wichtige Security Updates und interessante Entwicklungen im FreeBSD-Ökosystem. Hier sind die Highlights der letzten 7 Tage.

Wichtige Security Advisories

FreeBSD-SA-26:09.pf – PF Firewall Regelproblem

Datum: 26. März 2026
Betroffen: FreeBSD 14.x, 15.0
Schweregrad: Hoch

Problem: Die pf Firewall ignoriert bestimmte Regeln stillschweigend, was zu unbeabsichtigten Netzwerkzugriffen führen kann.

Lösung:

  • Patches für stable und release branches verfügbar
  • Upgrade via pkg upgrade oder freebsd-update
  • Workaround: Regeln mit Tables oder Labels umschreiben

CVE: CVE-2026-4652

FreeBSD-SA-26:07.nvmf – NVMe over Fabrics Problem

Datum: 25. März 2026
Betroffen: FreeBSD 15.0
Schweregrad: Mittel

Problem: Sicherheitslücke im NVMe over Fabrics Subsystem.

Behoben:

    1. März 2026 01:29 UTC (stable/15)
    1. März 2026 01:11 UTC (releng/15.0)

FreeBSD 14.4-RELEASE – Aktueller Status

FreeBSD 14.4 wurde am 10. März 2026 veröffentlicht und ist die fünfte Version des stable/14 Branch. Wichtige Neuerungen:

Hauptfeatures

  • OpenSSH 10.0p2 mit hybridem Post-Quantum-Algorithmus mlkem768x25519-sha256
  • OpenZFS 2.2.9 mit verbesserter Performance und Stabilität
  • Bessere cloud-init und nuageinit Kompatibilität
  • Neues p9fs(4) für Dateisystem-Sharing zwischen Host und bhyve-Gästen
  • Verbesserte Manpages und Dokumentationswerkzeuge

Support Zeitraum

FreeBSD 14.4 wird bis zum 31. Dezember 2026 unterstützt.

Ports und Packages Updates

pkgsrc-2026Q1 Branch

Der neue Quarterly Branch für pkgsrc wurde am 27. März angekündigt:

  • Aktualisierte Software-Pakete
  • Sicherheitsupdates
  • Verbesserte Abhängigkeitsauflösung

Wichtige Package-Updates

  • OpenSSL 3.5: Mehrere Security-Fixes
  • PostgreSQL 17: Performance-Verbesserungen
  • Python 3.12: Neue Features und Optimierungen
  • pkg 2.6.2_1: Verbesserte Package-Verwaltung

Entwicklung und Community

Google Summer of Code 2026

FreeBSD und NetBSD wurden für Google Summer of Code 2026 ausgewählt. Studenten können an verschiedenen Projekten arbeiten:

  • Kernel-Entwicklung
  • Tooling-Verbesserungen
  • Dokumentation

Release Schedule Änderungen

FreeBSD hat den Release-Zyklus angepasst:

  • Quarterly Releases: Alle 3 Monate
  • Biennial Releases: Alle 2 Jahre (Langzeit-Support)
  • Ziel: Bessere Sicherheit und einfachere Wartung

Systemadministration

Wichtige Befehle diese Woche

# PF Fix anwenden
freebsd-update fetch
freebsd-update install

# Oder via pkg
pkg upgrade

# ZFS Performance Monitoring
zpool iostat -v 1
zfs get all tank

Monitoring Empfehlungen

  • PF Rules überprüfen: pfctl -s rules
  • NVMe Status: nvmecontrol devlist
  • Security Updates: Regelmäßig freebsd-update ausführen

Sicherheitshinweise

BSI Warnungen

Das Bundesamt für Sicherheit in der Informationstechnik (BSI) hat Updates zu folgenden FreeBSD-Sicherheitslücken veröffentlicht:

  • Lokale Schwachstellen in Jail-Implementierung
  • PF Firewall Regelumgehung
  • NVMe over Fabrics Probleme

Internationale Warnungen

  • Canadian Centre for Cyber Security: AV26-179 Advisory
  • DFN-CERT-2026-0689: Zwei lokale Schwachstellen

Ausblick nächste Woche

  • Weitere Updates für FreeBSD 15.0
  • Mögliche neue Security Advisories
  • Vorbereitungen für Google Summer of Code
  • Weitere Anpassungen am Release Schedule

Ressourcen

  • FreeBSD Security Advisories: https://www.freebsd.org/security/advisories/
  • FreeBSD Mailing Lists: https://lists.freebsd.org/
  • BSDSec Security Announcements: https://bsdsec.net/
  • FreeBSD Release Notes: https://www.freebsd.org/releases/14.4R/relnotes/

Ausführlicher Vergleich der BSD-Familie: FreeBSD, OpenBSD, NetBSD und DragonFlyBSD

Inhaltsverzeichnis

  1. Einleitung und Geschichte
  2. Philosophie, Entwicklungsmodell und Lizenzierung
  3. Typische Einsatzszenarien – Wo welches BSD am besten passt
  4. Kernarchitektur im Detail
  1. Derivate, Spezialdistributionen und Ökosystem
  2. Pro‑ und Contra‑Tabellen – Schnellvergleich
  3. Entscheidungshilfe – Welches BSD ist das Richtige für mein Projekt?
  4. Zukünftige Entwicklungen und Roadmaps
  5. Quellen, weiterführende Literatur und Community‑Links

Einleitung und Geschichte

Die BSD‑Familie hat ihre Wurzeln in der Berkeley Software Distribution (BSD), die 1977 von der University of California, Berkeley, als Weiterentwicklung des frühen UNIX‑Systems veröffentlicht wurde. Die ersten öffentlichen BSD‑Versionen (1.0 – 4.3) legten das Fundament für den heute bekannten TCP/IP‑Protokoll‑Stack, der damals noch ein Forschungsexperiment war, heute aber das Rückgrat des Internets bildet.

Im Laufe der 1990er‑Jahre spaltete sich das Projekt in mehrere unabhängige Richtungen:

  • FreeBSD (gegründet 1993) fokussierte sich schnell auf Performance, Stabilität und eine umfangreiche Ports‑Sammlung für Drittsoftware.
  • OpenBSD (ab 1995) verfolgte das Ziel, ein so sicher wie möglich zu sein. Der Name selbst stammt von der Kombination aus „Open“ und „BSD“ und betont Transparenz.
  • NetBSD (1993) wählte den Pfad der Portabilität – das berühmte Motto „runs on anything“ stammt von NetBSD und spiegelt die Unterstützung von über 50 Prozessorarchitekturen wider.
  • DragonFlyBSD (2003) entstand aus einem Fork von FreeBSD 4.8, weil einige Entwickler mit der Entwicklungsgeschwindigkeit und den SMP‑Architekturen unzufrieden waren. Das Ergebnis: ein System, das stark auf Multi‑Core‑Skalierung und ein eigenes Dateisystem HAMMER2 setzt.

Diese unterschiedlichen Wurzeln bestimmen bis heute die Design‑Entscheidungen, das Community‑Verhalten und die Einsatzbereiche der einzelnen Betriebssysteme.

Philosophie, Entwicklungsmodell und Lizenzierung

ProjektZielsetzungEntwicklungsmodellLizenzierung
FreeBSDHoch‑performante Server‑ und Desktop‑PlattformZentralisiertes Kernteam, Commit‑Access über Core‑Team; offene Ports‑Tree-Pflege durch freiwillige MaintainerBSD‑Lizenz (2‑Clause) + CDDL für ZFS (Kompatibilitäts‑Ausnahme)
OpenBSDSicherheit über alles, Code‑Qualität, AuditsKleine, sehr konservative Entwicklergemeinschaft; Ein‑Person‑Commit‑Policy; jede Änderung wird auditiertBSD‑Lizenz (ähnlich der 2‑Clause); kein CDDL, alles rein Open‑Source
NetBSDPortabilität, Sauberkeit des Codes, Unterstützung exotischer HWDezentralisiert, Git‑basiertes Repository; pkgsrc (Quellpaket‑System) wird separat gepflegtBSD‑Lizenz (2‑Clause) – keine zusätzlichen Einschränkungen
DragonFlyBSDSkalierbare SMP‑Leistung, moderne DateisystemeKleines, fokussiertes Kernteam, schnelle Release‑Zyklen (alle 6‑8 Wochen)BSD‑Lizenz (2‑Clause)

Die Lizenzierung ist ein wichtiger Faktor für Unternehmen. FreeBSD enthält den CDDL‑Teil für ZFS, was in manchen Unternehmens‑Compliance‑Szenarien zu Diskussionen führt. OpenBSD, NetBSD und DragonFlyBSD verwenden ausschließlich die klassische BSD‑Lizenz, was ihre Nutzung in proprietären Projekten vereinfacht.

Typische Einsatzszenarien – Wo welches BSD am besten passt

Web‑ und Datenbank‑Server

FreeBSD ist dank ZFS‑Integration, Jails und einer ausgereiften TCP‑Stack‑Optimierung (z. B. TCP‑Fast‑Open, RACK‑Algorithmus) die erste Wahl für große Web‑Farmen. Unternehmen wie Netflix, Yahoo! und GitHub betreiben Teile ihrer Infrastruktur auf FreeBSD. OpenBSD wird eher für sicherheitskritische Front‑Ends eingesetzt, wo die Angriffsfläche minimal sein soll – beispielsweise als Reverse‑Proxy mit pf und httpd.

NetBSD wird selten in klassischen Web‑Umgebungen eingesetzt, findet aber in Embedded‑Gateways (Router, IoT‑Edge‑Devices) Verwendung, weil es auf ARM‑ und MIPS‑Boards läuft. DragonFlyBSD ist besonders attraktiv für Rechenzentren, die hohe Kernzahlen nutzen – das HAMMER2‑Dateisystem bietet native Deduplizierung, was Speicher‑Kosten senkt.

Firewall‑ und Router‑Appliance

pf wurde ursprünglich von OpenBSD entwickelt und später nach FreeBSD portiert. Heute ist pfSense (FreeBSD) und OPNsense (FreeBSD) die führenden Open‑Source‑Firewalls – sie bauen auf pf auf, bieten eine Web‑UI, Plugins für VPN, Captive‑Portal und IDS/IPS. OpenBSD selbst kann dank pf und spamd ebenfalls als reine Firewall dienen, wird aber seltener als eigenständige Appliance eingesetzt, weil es kein integriertes Web‑Frontend hat.

Embedded / IoT

NetBSD ist das klar dominante BSD‑Projekt für Embedded‑Systeme: Es läuft auf Raspberry Pi, BeagleBoard, MIPS‑Router, PowerPC‑Systemen und sogar auf Spielkonsolen. Die Clean‑room‑Entwicklung sorgt für stabile, deterministische Builds, die in der Industrie geschätzt werden. FreeBSD hat ebenfalls ARM‑Support, aber das Footprint ist größer, weshalb es primär in NAS‑Geräten (z. B. TrueNAS) verwendet wird.

Desktop / Workstation

FreeBSD selbst ist nicht primär für Desktop‑Nutzer gedacht, aber Projekte wie GhostBSD und MidnightBSD bieten fertig vorkonfigurierte Desktop‑Umgebungen (GNOME/KDE) mit ein‑Klick‑Installern. NetBSDs NomadBSD ist ein Live‑USB‑System, das persistent bleiben kann. DragonFlyBSD nutzt ebenfalls einen Desktop‑Installer, ist aber stärker auf Server‑Anwendungen ausgerichtet.

Storage‑Appliances und NAS

ZFS‑Integration macht FreeBSD zum bevorzugten Kernel für TrueNAS CORE (ehemals FreeNAS). Dort werden Snapshots, Replikation und RAID‑Z professionell verwaltet. DragonFlyBSD bietet HAMMER2, das ebenfalls Copy‑on‑Write, Snapshots und Deduplizierung unterstützt – ideal für Backup‑Server, die große Datenmengen deduplizieren wollen.

Kernarchitektur im Detail

Dateisysteme und Speicherverwaltung

  1. FreeBSD – ZFS
  • ZFS ist ein Copy‑on‑Write‑Dateisystem, das Datenintegrität durch Checksummen gewährleistet. Es unterstützt Kompression, Deduplizierung, scrubbing und end‑to‑end‑Encryption. In FreeBSD ist ZFS seit Version 9.0 integral und kann als Root‑Dateisystem verwendet werden. Das Zpool‑Modell erlaubt das Kombinieren unterschiedlicher physischer Laufwerke zu einem logischen Speicher‑Pool.
  • Lizenz: ZFS stammt aus dem CDDL‑Open‑Source‑Projekt von Sun/Oracle, das mit der BSD‑Lizenz nicht kompatibel ist – deshalb existiert eine separate Lizenz‑Ausnahme in FreeBSD.
  1. OpenBSD – FFS + Soft‑crypto
  • Das Fast File System (FFS), auch als UFS bekannt, ist das traditionelle BSD‑Dateisystem. OpenBSD hat keine native ZFS‑Unterstützung, jedoch gibt es experimentelle Ports. Für Verschlüsselung nutzt OpenBSD soft‑crypto, ein Kernel‑Framework, das Block‑Device‑Verschlüsselung auf Ebene des Dateisystems ermöglicht (z. B. bioctl -c C für GELI‑Verschlüsselung).
  1. NetBSD – WAPBL und FFS
  • NetBSD verwendet ebenfalls FFS. Das WAPBL (Write‑Ahead‑Physical‑Logging) ist ein leichtgewichtiges Journal, das nur Metadaten‑Updates protokolliert, wodurch ein gutes Gleichgewicht zwischen Performance und Datenintegrität entsteht.
  1. DragonFlyBSD – HAMMER2
  • HAMMER2 ist ein eigens entwickeltes Dateisystem, das Copy‑on‑Write, Snapshots, Deduplizierung und Cluster‑Level‑Mirroring (via hammer2 cluster) unterstützt. Es ist hoch skalierbar und besonders gut für Systeme mit vielen CPU‑Kernen und großen Datenmengen geeignet. Im Vergleich zu ZFS fehlt jedoch die breite Dritt‑Tool‑Unterstützung (z. B. zpool‑Utility).

Netzwerk‑Stack und Sicherheitsfeatures

  • FreeBSD: Der Netzwerk‑Stack ist für hohe Durchsatzraten optimiert (TCP‑Fast‑Open, RACK‑Congestion‑Control). ipfw ist das traditionelle Firewall‑Framework, aber seit FreeBSD 12 gibt es auch pf, das aus OpenBSD stammt. Das bpf-Subsystem (Berkeley Packet Filter) ermöglicht sehr effizientes Packet‑Capturing, das in Intrusion‑Detection‑Systemen genutzt wird.
  • OpenBSD: Der pf‑Firewall‑Engine ist das Herzstück. OpenBSD legt extremen Wert auf Code‑Reviews, Memory‑Safety (z. B. ProPolice, Stack‑Canaries) und Standard‑Hardenings (z. B. sysctl‑Defaults, disable_ipv6, login.conf). OpenBSD ist das Referenzsystem für PF, OpenSSH und LibreSSL, die in vielen anderen Projekten wiederverwendet werden.
  • NetBSD: Unterstützt sowohl ipfilter, ipfw als auch pf (via Port). Der Netzwerk‑Stack ist sehr portabel – das macht NetBSD attraktiv für kleine Router‑Boards.
  • DragonFlyBSD: Hat ebenfalls pf integriert, nutzt aber zusätzlich das Vimage/-Vkernel‑Framework für leichte Isolation von Netzwerk‑Namespaces. Der Netzwerk‑Stack ist nicht ganz so umfangreich wie bei FreeBSD, dafür aber sehr sauber implementiert.

Virtualisierung, Container und Isolationstechniken

SystemContainer‑LösungHypervisorBesonderheiten
FreeBSDJails – OS‑Level‑Container mit eigenen IP‑Stacks, Dateisystem‑Views und Ressourcengrenzen (via rctl).bhyve – moderner Hypervisor, unterstützt VirtIO‑Devices, UEFI‑Boot und KVM‑Kompatibilität.runjail ermöglicht Docker‑Kompatibilität; vmm-Modul für KVM‑Beschleunigung.
OpenBSDKeines (kein jails‑Äquivalent)vmm – leichtgewichtiger Hypervisor, unterstützt KVM‑Kompatibilität.Fokus liegt auf Sicherheit, daher kein Container‑Framework eingebaut.
NetBSDKeines (kein jails‑Äquivalent)Xen, bhyve, hyper‑v (via hv‑Modul).Sehr breite Unterstützung, jedoch weniger gebündelte Tools.
DragonFlyBSDVkernel – leichtgewichtige, eigenständige Kernel‑Instanz für Isolation (ähnlich zu jails aber mit weniger Overhead).Vkernel ist ideal für Micro‑VMs und Container‑ähnliche Workloads.

Durch die Kombination aus Jails (FreeBSD) und pf (OpenBSD) können Administratoren sehr feinkörnige Sicherheits‑ und Isolation‑Modelle bauen, die sowohl Performance als auch Härtung liefern.

Derivate, Spezialdistributionen und Ökosystem

DerivatBasis‑BSDZielgruppeBesondere Merkmale
GhostBSDFreeBSDDesktop‑Nutzer (GNOME/KDE)Ein‑Klick‑Installer, automatische ZFS‑Root‑Einrichtung, verschlüsselte Benutzer‑Home.
MidnightBSDFreeBSDDesktop & Server‑Einsteigermidnightbsd-install, grafischer Installer, eigene Paketverwaltung (pkgsrc‑basiert).
TrueNAS COREFreeBSDNAS‑ApplianceVollwertige ZFS‑Verwaltung, Web‑UI, VM‑Support, Replikation, Lizenz: CDDL (ZFS) + BSD.
pfSenseFreeBSDFirewall / RouterUmfangreiche Plugins (OpenVPN, IPsec, Captive‑Portal), Web‑UI, kommerzielle Support‑Optionen.
OPNsenseFreeBSDModerne Firewall‑ApplianceModerne Angular‑UI, IDS/IPS (Suricata), Let’s Encrypt‑Integration, regelmäßige Security‑Updates.
NomadBSDNetBSDLive‑USB + Persistent StorageEinfaches Live‑System, persistente Änderungen, kleine Image‑Größe.
OpenBSD‑based ToolsOpenBSDSicherheitstoolsOpenSSH, OpenBGPD, OpenNTPD, LibreSSL, häufig in anderen Distributionen eingebettet.
DragonFlyBSD‑BobDragonFlyBSDServer‑SkalierungMinimalistisches System, fokussiert auf HAMMER2‑Performance, geringer Overhead.

Durch das breite Derivat‑Ökosystem kann ein Unternehmen das für den jeweiligen Anwendungsfall passende Betriebssystem wählen, ohne tief in die Grund‑BSD‑Distribution einsteigen zu müssen.

Pro‑ und Contra‑Tabellen – Schnellvergleich

FreeBSD

ProContra
Riesige Ports‑Datenbank (≈30 k Pakete)Größerer Footprint – weniger geeignet für ressourcenarme Embedded‑Geräte
Native ZFS‑Integration (Snapshots, Dedupl., Verschlüsselung)Lizenz‑Komplexität (BSD + CDDL) kann in Unternehmen zu Compliance‑Fragen führen
Jails – leichte OS‑Container + Ressourcen‑LimitsJails bieten nicht die gleiche Flexibilität wie Docker‑Container (z. B. keine Overlay‑FS)
Sehr gute Netzwerk‑Performance, pf und ipfw verfügbarTeilweise veraltete Netzwerk‑Features im Vergleich zu Linux‑eigenen Technologien

OpenBSD

ProContra
Höchste Sicherheit (Code‑Audits, securebydefault, minimaler Attack‑Surface)Eingeschränkte Treiberunterstützung, besonders bei neuer Hardware
pf‑Firewall‑Engine, die als Referenz giltKein nativer ZFS‑Support (experimentell)
Kleine, kohärente Code‑Basis – einfach zu auditierenKleine Ports‑Sammlung, selteneres Software‑Portfolio
Integrierte Sicherheits‑Tools (OpenSSH, LibreSSL, OpenBGPD)Fokus auf Sicherheit kann zu Lasten von Performance‑Optimierungen führen

NetBSD

ProContra
Laufzeit auf über 50 Architekturen – ideal für Embedded & ForschungsprojekteKleinere Community, weniger kommerzielle Unterstützung
WAPBL‑Journal für geringes Overhead‑LoggingKein nativer ZFS (nur via Ports)
Saubere, modulare Kernel‑Architektur (leicht zu patchen)Fehlende vorgefertigte Server‑Features (z. B. Jails, pf als Standard)
Starke pkgsrc‑Paketverwaltung – plattformübergreifendDokumentation teils lückenhaft, besonders für Anfänger

DragonFlyBSD

ProContra
HAMMER2 – modernes Copy‑on‑Write‑Dateisystem mit Dedupl. und Snapshots
Vkernel – leichtgewichtige Isolation, ideal für Micro‑VMs
Fokus auf SMP‑Skalierung – gut für Server mit vielen Kernen
Schnelle Release‑Zyklen, aktive Entwicklung
Kleinere Community, weniger kommerzielle Unterstützung
HAMMER2 ist weniger verbreitet als ZFS – geringere Tool‑Unterstützung

Entscheidungshilfe – Welches BSD ist das Richtige für mein Projekt?

AnforderungEmpfohlenes BSDBegründung
Maximale Sicherheit (Firewall, Kryptographie, Audits)OpenBSDpf‑Engine, LibreSSL, OpenSSH‑Audits, securebydefault‑Einstellungen
Enterprise‑Storage (ZFS, Snapshots, Replikation)FreeBSD (bzw. TrueNAS CORE)Native ZFS‑Integration, ausgereifte Verwaltungstools, breite Community
Breite Hardware‑Unterstützung (IoT, ARM, MIPS, SPARC)NetBSDUnterstützt über 50 Architekturen, Clean‑room‑Entwicklung, geringes Footprint
Skalierbare SMP‑Server (viele Kerne, Dedupl.)DragonFlyBSDHAMMER2‑Dedupl., Vkernel‑Isolation, exzellente SMP‑Performance
Desktop‑Erlebnis (Desktop‑Environment, Plug‑and‑Play)GhostBSD (FreeBSD) oder MidnightBSDFertige Installer, vorinstallierte GNOME/KDE, einfacher Paket‑Manager
Firewall‑AppliancepfSense / OPNsense (beide FreeBSD‑basiert)Web‑UI, umfangreiche Plugin‑Bibliothek, kommerzieller Support
NAS / Speicher‑ApplianceTrueNAS CORE (FreeBSD)ZFS‑Management, Web‑Interface, Replikation, VM‑Support
Entwicklung / ForschungNetBSDPortabilität, pkgsrc für plattformübergreifende Pakete

Berücksichtigen Sie zusätzlich Community‑Aktivität, Verfügbarkeit von Paketen (Ports vs. pkg), Lizenz‑Konformität und Unterstützungsoptionen (Mailing‑Liste, Issue‑Tracker, kommerzielle Anbieter).

Zukünftige Entwicklungen und Roadmaps

  • FreeBSD 15.x – Weiterentwicklung des ZFS‑Stacks (z. B. ZFS 2.2 mit Verbesserungen bei Scrubbing und Compression), Unterstützung von GPU‑Pass‑Through für bhyve, engere Integration in Kubernetes via csi‑freebsd.
  • OpenBSD 7.9 – Verbesserungen am pf‑Engine (z. B. stateful‑inspection Optimierungen), Einführung von Trusted Execution Environments (TEE), erweiterte Hardware‑Root‑of‑Trust‑Mechanismen.
  • NetBSD 10 – Fokus auf RISC‑V‑Unterstützung (neue Toolchains, Device‑Tree‑Support), pkgsrc‑Erweiterungen für Container‑Orchestrierung (Docker‑Kompatibilität), Modernisierung der Netz‑Stack‑Bibliotheken.
  • DragonFlyBSD 6 – Finalisierung und Stabilisierung von HAMMER2, neue Vkernel‑Features (z. B. Namespace‑Isolation, cgroups‑ähnliche Ressourcen‑Limits), Integration von ZFS‑Ports für Hybrid‑Lösungen.
  • Derivate: TrueNAS SCALE (Debian‑basiert) entsteht als Konkurrenz zum FreeBSD‑basierten CORE, während pfSense 2.8 führt eBPF‑Unterstützung ein, um modernere Packet‑Processing‑Pipelines zu ermöglichen.

Quellen, weiterführende Literatur und Community‑Links

  • FreeBSD Project – Offizielle Dokumentation: https://www.freebsd.org/docs/
  • OpenBSD Project – Ziele & Sicherheit: https://www.openbsd.org/faq/faq4.html
  • NetBSD Project – Plattform‑Übersicht: https://www.netbsd.org/ports/
  • DragonFlyBSD – HAMMER2‑Dokumentation: https://www.dragonflybsd.org/docs/hammer2/
  • pfSense – Dokumentation & Release‑Notes: https://docs.pfsense.org/
  • OPNsense – Features & Roadmap: https://opnsense.org/
  • TrueNAS – ZFS‑Management: https://www.truenas.com/
  • GhostBSD – Desktop‑Projekt: https://ghostbsd.org/
  • MidnightBSD – Release‑Notes: https://midnightbsd.org/
  • NomadBSD – Live‑USB System: https://nomadbsd.org/
  • NetBSD – WAPBL & FFS: https://netbsd.org/docs/technical/
  • OpenBSD – pf‑Manpage: https://man.openbsd.org/pf.conf
  • FreeBSD – Jails‑Handbuch: https://docs.freebsd.org/en/books/handbook/jails/
  • DragonFlyBSD – Vkernel‑Übersicht: https://www.dragonflybsd.org/docs/vkernel/

FreeBSD in den letzten sieben Tagen: Zwischen 14.4-Realität, ZFS-Sorgen und kleinen pkg-Ideen

Wer bei FreeBSD auf den großen Trommelwirbel wartet, wartet oft lange. Das ist einer der Punkte, die ich an dem System gleichzeitig schätze und gelegentlich unerquicklich finde. Schätze, weil man nicht jeden zweiten Tag mit irgendeinem Marketingfeuerwerk belästigt wird. Unerquicklich, weil man sich die wirklich interessanten Entwicklungen oft aus Mailinglisten, Release Notes und Nebensätzen zusammensuchen muss.

Wenn man auf die letzten sieben Tage blickt, dann ergibt sich im Kern ein recht typisches Bild für FreeBSD: Nach außen ist es vergleichsweise ruhig, unter der Oberfläche wird aber an genau den Stellen diskutiert, an denen Betriebssysteme im Alltag entweder angenehm oder unerquicklich werden. Performance beim Bauen von Software, Stabilität und Speicherverhalten von ZFS sowie die Frage, wie sich pkg im PKGBASE-Umfeld sinnvoller bedienen lässt.

FreeBSD 14.4 ist weiterhin das beherrschende Thema

Die wichtigste offizielle Nachricht im betrachteten Zeitraum bleibt letztlich die Veröffentlichung von FreeBSD 14.4-RELEASE am 10. März. Das fällt zwar knapp aus dem Sieben-Tage-Fenster heraus, prägt aber die Diskussionen dieser Woche deutlich. Und das ist auch kein Wunder.

Zu den wichtigen Punkten von 14.4 gehören unter anderem:

  • OpenSSH 10.0p2
  • standardmäßig der hybride Post-Quantum-Algorithmus mlkem768x25519-sha256
  • OpenZFS 2.2.9
  • bessere cloud-init-/nuageinit-Kompatibilität
  • ein neues p9fs(4) für Dateisystem-Sharing zwischen Host und bhyve-Gästen
  • Verbesserungen bei den Manpages und deren Werkzeugen

Das ist insgesamt ein ordentliches Release. Keine Revolution, aber genau diese Sorte Version, die für FreeBSD eigentlich typisch ist: evolutionär, pragmatisch, mit Fokus auf sinnvolle Pflege statt auf Show.

Erwähnenswert ist auch die Widmung der Version an Ken Smith, der Ende letzten Jahres verstorben ist und als Release-Engineering-Leiter über viele Jahre hinweg eine wichtige Rolle bei FreeBSD gespielt hat. Solche Hinweise gehen in technischen Veröffentlichungen gerne unter, sind aber durchaus bedeutend, weil sie zeigen, dass hinter der ganzen Sache eben doch Menschen stehen und nicht nur Code.

Erste Rückmeldungen nach 14.4: Build-Zeiten sorgen für Unmut

Interessanter als die reine Release-Ankündigung waren in dieser Woche die Rückmeldungen aus der Praxis. Auf der Mailingliste wurde ein Fall beschrieben, bei dem sich nach dem Upgrade von 14.3 auf 14.4 die Build-Zeiten mit poudriere teils drastisch erhöht haben. Konkret war von teils doppelt so langen Zeiten die Rede.

Das ist kein kleines Detail. Für Leute, die Ports bauen, Pakete pflegen oder generell viel lokal kompilieren, ist das kein Schönheitsfehler, sondern schlicht Alltagsschmerz. Wenn ein Full Build plötzlich nicht mehr einen Tag, sondern zwei braucht, dann ist das keine Randnotiz mehr.

In der Diskussion wurde darauf verwiesen, dass hier vermutlich ein bereits bekanntes Performance-Problem hineinspielt und dass es dafür inzwischen einen Schalter gibt, um das frühere Verhalten wiederherzustellen. Das ist zunächst einmal die gute Nachricht. Die weniger gute Nachricht ist aber, dass solche Dinge überhaupt erst einmal wieder in der Praxis auffallen müssen und man sich die Informationen aus Threads und Commit-Hinweisen zusammensuchen darf.

Das ist bei FreeBSD leider nicht ganz unüblich: Die Technik ist oft solide, die Kommunikation darüber mitunter weniger komfortabel, als sie sein könnte.

ZFS bleibt hervorragend – und manchmal unerquicklich

Wirklich interessant wurde es bei einer Diskussion zu ZFS-Deadlocks und Memory-Accounting-Problemen auf NFS-Servern. Beschrieben wurde dort ein Verhalten, bei dem Maschinen trotz sehr viel freiem RAM unter Speicherdruck geraten, anfangen zu swapen und im schlimmsten Fall sogar im OOM-Kontext landen. Das ist schon deshalb unerquicklich, weil gerade große Speicher- und Storage-Systeme unter FreeBSD häufig genau mit dem Versprechen betrieben werden, dass ZFS dort besonders gut aufgehoben sei.

Der geschilderte Fall betraf Systeme mit sehr viel RAM, bei denen ARC-Speicher zwar als evictable erschien, das System aber dennoch in einen problematischen Zustand lief. Dazu kamen Hinweise auf blockierte Prozesse und Wartezustände rund um ARC- und dbuf-Mechanismen. Das ist natürlich erst einmal ein Einzelfall aus einer Mailingliste und keine allgemeingültige Aussage über alle 14.x-Installationen. Aber es ist genau die Sorte Signal, bei der Administratoren hellhörig werden sollten.

Denn solche Probleme sind im Alltag nicht deswegen unangenehm, weil sie spektakulär sind, sondern weil sie sich oft lange als „komisches Verhalten“ tarnen. Ein bisschen Swap hier, etwas Last dort, ein paar hängende Prozesse, und plötzlich steht ein System, das laut oberflächlicher Kennzahlen eigentlich gar nicht in Schwierigkeiten sein dürfte.

FreeBSD hat im Storage-Bereich nach wie vor sehr gute Argumente. Aber wenn solche Berichte auftauchen, dann sollte man sie ernst nehmen. Nicht hysterisch, aber ernsthaft.

Kleine pkg-Diskussion, aber durchaus mit praktischer Relevanz

Weniger dramatisch, aber praktisch nicht uninteressant war eine Diskussion um pkg und den Umgang mit PKGBASE. Konkret ging es um den Wunsch, Upgrades für Drittanbieter-Pakete und Base-System sauberer voneinander zu trennen.

Vorgeschlagen wurden zusätzliche Aliase wie:

  • pkg upgrade-packages
  • pkg upgrade-base

Die Idee dahinter ist simpel und vernünftig: Man möchte im Alltag nicht immer alles in einen Topf werfen, sondern bewusst entscheiden können, ob gerade nur Ports-Pakete oder nur das Base-System angefasst werden sollen.

Das ist nun keine Nachricht, bei der irgendjemand in Begeisterung ausbrechen müsste. Aber es ist ein gutes Beispiel dafür, wie sich FreeBSD verändert: oft in kleinen, unaufgeregten, aber alltagstauglichen Schritten. Gerade solche Verbesserungen machen am Ende häufig mehr Unterschied als irgendein groß angekündigtes Großprojekt.

Zugleich zeigt die Diskussion aber auch ein typisches Problem: Benennung und Verständlichkeit sind eben nicht nebensächlich. Wenn man „packages“ sagt, obwohl technisch betrachtet am Ende alles Pakete sind, dann ist die Verwirrung fast schon eingebaut. Das ist kein Drama, aber auch kein Detail, das man völlig ignorieren sollte.

Was bleibt also von dieser Woche?

Wenn man die letzten sieben Tage rund um FreeBSD zusammenfasst, dann ergibt sich aus meiner Sicht vor allem dieses Bild:

FreeBSD wirkt nach außen oft ruhig, fast schon zu ruhig. Unter dieser ruhigen Oberfläche zeigen sich aber genau die Themen, die für Anwender und Administratoren wirklich relevant sind:

  • Wie gut läuft ein frisches Release im Alltag?
  • Gibt es Performance-Regressions?
  • Ist ZFS unter realer Last so stabil, wie man es erwartet?
  • Werden Werkzeuge wie pkg im täglichen Betrieb besser bedienbar?

Das ist am Ende vielleicht auch das eigentlich Sympathische an FreeBSD. Die interessanten Nachrichten sind dort selten bloß „Neu! Größer! Schneller!“. Oft sind es eher Hinweise darauf, wo die Praxis gegen die Theorie arbeitet. Und genau dort entscheidet sich, ob ein System auf Dauer Vertrauen verdient.

14.4-RELEASE ist ohne Frage die wichtigste jüngere Entwicklung. Die anschließenden Diskussionen zu Build-Performance und ZFS zeigen aber auch, dass ein Release eben nicht mit der Veröffentlichung fertig ist. Es beginnt dann erst die Phase, in der sich herausstellt, wie gut die Dinge außerhalb von Release Notes und Ankündigungen wirklich funktionieren.

Und genau diese Phase war in den letzten sieben Tagen die eigentlich interessante.

Quellen

  • FreeBSD News Flash: https://www.freebsd.org/news/newsflash/
  • FreeBSD News RSS Feed: https://www.freebsd.org/news/feed.xml
  • FreeBSD 14.4-RELEASE Announcement: https://lists.freebsd.org/archives/freebsd-announce/2026-March/000228.html
  • FreeBSD-announce Archiv März 2026: https://lists.freebsd.org/archives/freebsd-announce/2026-March/date.html
  • Thread: „Huge build times increase after updating from 14.3 to 14.4“: https://lists.freebsd.org/archives/freebsd-stable/2026-March/003900.html
  • Antwort von Olivier Certner zum bekannten Performance-Problem: https://lists.freebsd.org/archives/freebsd-stable/2026-March/003901.html
  • Nachfrage von Philip Paeps zu den Package-Buildern: https://lists.freebsd.org/archives/freebsd-stable/2026-March/003907.html
  • Thread: „ZFS deadlocks/memory accounting issues“: https://lists.freebsd.org/archives/freebsd-stable/2026-March/003910.html
  • Antwort von Alan Somers im ZFS-Thread: https://lists.freebsd.org/archives/freebsd-stable/2026-March/003911.html
  • Thread/Proposal zu pkg-Aliases: https://lists.freebsd.org/archives/freebsd-stable/2026-March/003942.html
  • Rückfrage zur Benennung der pkg-Aliases: https://lists.freebsd.org/archives/freebsd-stable/2026-March/003944.html
  • FreeBSD-stable Archiv März 2026: https://lists.freebsd.org/archives/freebsd-stable/2026-March/date.html