Wir sind gerade gestartet. Website und Service werden noch verfeinert – wir bitten schon jetzt um Entschuldigung für mögliche Ungenauigkeiten und Unebenheiten. Ist Ihnen ein Fehler aufgefallen oder funktioniert etwas nicht wie erwartet? Schreiben Sie uns – wir beheben es schnell.

← Alle Projekte
DE
Mehr als TAKT

zbm-openwrt-clevis

Eine Boot-Umgebung auf Basis von OpenWrt, gebaut als ein einziges UKI, die einen nativ verschlüsselten ZFS-Root mit clevis und dem TPM entsperrt und dann das Linux-Zielsystem über eine Donor-Laufzeitumgebung von ZFSBootMenu startet.

  • OpenWrt
  • ZFS
  • TPM 2.0
  • Clevis
Status
Getaggte Releases 0.90–0.95. Die Boot-Kette ist in einem QEMU-Labor mit OVMF und swtpm validiert und bootet Ubuntu von verschlüsseltem ZFS.
Lizenz
Nicht angegeben: Das Repository enthält keine Lizenzdatei.
Plattformen
x86-64-UEFI-Rechner mit TPM 2.0 und rEFInd; OpenWrt 25.12 im UKI.

Welches Problem es löst

ZFSBootMenu startet verschlüsseltes ZFS gut, erwartet aber, dass ein Mensch den Schlüssel eintippt. Für einen entfernten Server oder eine unbeaufsichtigte Maschine reicht das nicht: Der Operator kann nicht erkennen, ob die Eingabeaufforderung zu der Boot-Umgebung gehört, der er zuvor vertraut hat. Hier wird der Schlüssel nur so lange automatisch freigegeben, wie die TPM-Messungen dem Zustand entsprechen, den der Operator beim letzten Reseal freigegeben hat. Andernfalls stoppt der automatische Boot, der Operator wird benachrichtigt, und ein passwortgeschütztes OpenWrt-System wartet auf eine manuelle Entscheidung.

Wichtigste Funktionen

  • Automatisches Entsperren, über clevis an TPM-PCRs gebunden; die validierte Richtlinie clevis.pcr_ids=1,4,5,7,9 deckt auch die Kernel-Befehlszeile ab, die rEFInd übergibt.
  • Rückfall auf ein vollständiges OpenWrt-System mit Login per Passwort oder SSH-Schlüssel statt einer Shell ohne Passwort; root ist im Basis-Image gesperrt.
  • Manuelles Entsperren und Reseal für einen neuen gemessenen Zustand über die Konsole oder SSH, auch über WLAN oder mit zwei WAN-Uplinks.
  • Drei Speicherorte für das versiegelte JWE: ZFS-Properties, EFI-Variablen oder eine Datei auf einer VFAT-Partition.
  • Updates von Kernel und initramfs des Zielsystems erfordern kein neues manuelles Entsperren: Sie liegen im verschlüsselten Pool, außerhalb der gemessenen Umgebung.
  • Optionale Telegram-Nachricht, wenn das automatische Entsperren fehlschlägt; Werkzeuge zur Reparatur von Festplatten und Netzwerk im Image.

So funktioniert es

rEFInd lädt ein einziges OpenWrt-UKI und übergibt ihm die Richtlinie auf der Kernel-Befehlszeile. Beim Booten startet zbm-auto-boot den Befehl zbm-start; der load-key-Hook lässt clevis den Schlüssel wiederherstellen und übergibt ihn an die Donor-Laufzeitumgebung von ZFSBootMenu, die Kernel und initramfs des Zielsystems vom verschlüsselten Root liest und mit kexec startet. Automatischer und manueller Einstieg nutzen denselben Weg und teilen sich eine Sperre. Der Pool wird schreibgeschützt importiert, mit Ausnahme eines kurzen Schreibvorgangs, wenn ein Reseal sein Ergebnis in ZFS-Properties speichert.

UEFI → rEFInd → OpenWrt UKI → zbm-auto-boot → zbm-start
     → load-key hook / clevis → ZFSBootMenu → kexec → Ubuntu (ZFS)

Voraussetzungen

  • Ein Zielsystem auf einem ZFS-Root mit nativer Verschlüsselung und einem Schlüssel aus einer Datei (keylocation=file://…).
  • UEFI, rEFInd als Bootmanager und ein TPM 2.0; die Richtlinie steht in der options-Zeile von rEFInd.
  • Build-Host: der OpenWrt-ImageBuilder-Ablauf aus dem Repository, ukify, refind und die üblichen Build-Werkzeuge.
  • Labor: qemu-system-x86_64, OVMF und swtpm; validiertes Ziel ist Ubuntu auf verschlüsseltem ZFS.

Diese Seite fasst README und Dokumentation des Repositorys mit Stand Oktober 2026 zusammen. Maßgeblich ist das Repository selbst.