Die Architektur

Nichts besitzen, was man erben kann.

smaragd ist eine Schicht, kein Fork. Die Basis wird nie neu gebaut, nie gepatcht, nie ersetzt. Eigene Software entsteht nur dort, wo ein Nutzer den Unterschied merkt. Alles hier beschreibt den umgesetzten Stand vom September 2026 — was geplant, aber nicht gebaut ist, steht auf der Vision.

Das Schichtenbild

Vier Schichten, eine Frage

Wo die Grenze verläuft, entscheidet ein einziger Prüfsatz: Würde ein Nutzer merken, dass dieses Teil unverändert von openSUSE kommt? Wenn nein: erben. Wenn ja: selbst bauen.

Der NutzerAnwendungen von Flathub · Container · die eigenen Dateien
gehört dir
smaragd-appsEinstellungsmodule · smaragd-ui · smaragd-core · libsmaragd-* · Ersteinrichtung · Berichtswerkzeug · Umzugshelfer
wir, ganz
Die smaragd-Schichtsmaragd-release · Standardwerte · Branding · Bootwächter · Updater · Patterns · Ergänzungsliste
wir, dünn
openSUSE SlowrollKernel · systemd · Qt6 · KF6 · Plasma · libzypp · rund 1 800 Pakete
geerbt, nie neu gebaut

Warum die Schicht dünn ist

Jedes eigene Paket ist ein Abonnement: CVE-Wache, Neubau, ein E2E-Szenario, ein Handbuchkapitel, zwei Sprachen — für immer. Und jedes eigene Paket baut gegen die Bibliotheken der Basis. Je mehr wir besitzen, desto teurer wird ein Basiswechsel, nicht billiger. Flexibilität entsteht durch wenig Code an der Grenze.

Die Zerfallsregel

Fällt smaragd weg, bleibt ein funktionierendes openSUSE zurück. Kein Paket von smaragd darf so tief sitzen, dass sein Ausbleiben das System bricht. Die Basis-Repositories bleiben aktiv, ergänzt statt ersetzt. Und der Rückweg wird bei jedem Release maschinell bewiesen.

Die Startkette

Kein einziges signiertes Programm wird angefasst

Was in dieser Kette uns gehört: Konfiguration, Themes, zwei kleine systemd-Dienste. Das ist der einzige Grund, warum Secure Boot überlebt — und warum ein NVIDIA-Treiber nur als signiertes Kernelmodul kommen darf.

  1. Firmware, UEFI mit Secure BootMisst in PCR 7. Der TPM versiegelt den Festplattenschlüssel nur dagegen — plus eine PIN.
    Gerät
  2. shimVon Microsoft signiert, trägt die Vertrauenskette. Wird niemals neu gebaut.
    signiert
  3. GRUBDas Programm ist SUSE-signiert und bleibt unberührt. Unser Teil: /etc/grub.d/ und das Theme — der Rettungsbildschirm (M3) und der Bootzähler (M2).
    Theme + Konfiguration
  4. Kernel und initrdSUSE-signiert. PCR 4, 8, 9 und 11 werden bewusst nicht verwendet: Sie messen Kernel und initrd, und ein automatischer Rückfall würde die Platte nicht mehr entsperren.
    signiert
  5. systemdsystem-update.target spielt Updates ein, ohne Desktop und ohne offene Dateien (M1). smaragd-bootwaechter zählt Starts und setzt zurück, sobald der Anmeldebildschirm steht (M2).
    zwei Dienste
  6. SDDMDas Programm geerbt, das Theme unseres. Immer Urgestein.
    Theme
  7. PlasmaGeerbt. Standardwerte aus smaragd-defaults-desktop, Farbschemata Kalkstein und Urgestein, Wallpapers, Launcher-Symbol.
    Theme + Standardwerte

Bewiesen, nicht behauptet: Secure Boot mit Negativkontrolle

Am 28. August 2026 startete smaragd 2026.11 Build 7.1 unter QEMU mit einem OVMF, das nur die Microsoft-Schlüssel kennt: shim wurde akzeptiert, das ganze ISO bootete bis zum grafischen Ziel. Dieselbe Firmware wies das SUSE-signierte grub.efi aus demselben ISO ab, wenn es ohne shim geladen wurde — Access Denied — und lehnte zufällige Bytes ab. Ein Test, der aus dem falschen Grund grün ist, ist schlimmer als kein Test, weil man ihm glaubt.

Klassisch, aber wie ein Gerät

Sechs Mechanismen statt Atomarität

smaragd ist ein klassisches System mit zypper, snapper und RPM — weil ein Werkzeug zum Fehlersuchen nie einen Neustart kosten darf. Die Lücke, die ein atomares System gratis schließt, schließen diese sechs Mechanismen.

M0 Der Werkzeugkasten ist immer schon da gebaut

Eine namentliche Liste von Diagnosewerkzeugen — strace, tcpdump, smartctl, htop, git und einige Dutzend mehr — ist im Abbild garantiert und vom Umfangsbudget ausgenommen. Der Torwächter bricht den Bau, wenn ein Eintrag verschwindet. Wer einen Fehler sucht, findet sein Werkzeug vor. Es gibt nichts nachzuinstallieren, also auch nichts, wofür man neu starten müsste.

M1 Updates werden nicht im laufenden Betrieb eingespielt gebaut, im Prüfstand offen

Etwas Neues installieren geht immer sofort, live, ohne Neustart. Nur das Aktualisieren vorhandener Pakete wartet auf den Neustart, den es ohnehin bräuchte, und läuft dann in einer minimalen Umgebung: kein Desktop, keine laufenden Programme, keine offenen Dateien. Ein Zustand, nie ein halber. Der Browser als Flatpak wartet nicht. smaragd-updater: täglicher Timer, nur am Netzteil, genau eine Polkit-Aktion.

M2 Bootfehler werden erkannt und automatisch zurückgenommen gebaut, im Prüfstand offen

Ein Zähler unter /boot zählt Starts; erreicht das System den Anmeldebildschirm, wird er gelöscht. Zweimal nicht erreicht, und GRUB startet den letzten funktionierenden Snapshot. /home liegt auf einem eigenen Subvolume und wird nie berührt — deshalb darf der Rückfall überhaupt automatisch sein. Gemessen: der Zähler zählt und löscht, jeder Start merkt sich den Rückfall-Snapshot. Noch nicht gemessen: dass GRUB nach zwei Fehlstarts wirklich vorwählt — das ist Szenario 4 im Prüfstand, und bis es läuft, ist das Verhalten am Bootloader eine Behauptung.

M3 Der Rettungsbildschirm statt des GRUB-Menüs ausgeliefert seit 1. September

Statt openSUSE Slowroll, with Linux 6.11.4-1-default (Snapshot #247) steht dort: smaragd starten · Letzten funktionierenden Stand starten · Frühere Stände … · Etwas reparieren. Reine Konfiguration und reines Theme, kein Patch. Der Rettungseintrag erscheint nur, wenn es einen Stand gibt, zu dem man zurück kann.

M4 Anwendungen sind Flatpaks, das System ist RPM Phase 3

Eine Flatpak-Installation im Benutzerbereich fragt nie nach einem Passwort, weil sie keine Systemrechte braucht. Discover bevorzugt Flatpak für Anwendungen; distrobox ist für Werkstattarbeit dabei. Das hält das Umfangsbudget und die Angriffsfläche klein.

M5 Fremdquellen sind eingehegt Phase 2

Alle Quellen, die smaragd anbietet, kommen über die Ergänzungsliste, sind vendor-gepinnt und werden mitgetestet. Fügt jemand von Hand eine Quelle hinzu, gibt es eine einmalige Warnung in normaler Sprache — und einen Eintrag im Verlauf, damit später jemand die Ursache findet.

M6 Zurück zum Standard Phase 5

Die einzige echte Schwäche des klassischen Wegs: Ein System vergisst nie, was man zum Fehlersuchen installiert hat. Die Wiederaufbau-Liste berechnet, worin das Gerät vom Standard abweicht, und bietet es zum Entfernen an — mit einer Begründungsspalte, die sagt, warum wireshark vor drei Monaten dazukam. Nichts wird automatisch entfernt. Entscheiden darf nur der Mensch.

Pakete und Repositories

Was auf dem Build Service liegt

Gegen die Basis wird gebaut, aber nur die eigenen Pakete existieren: ein Repository-Pfad statt eines Projekt-Links. Zehn Quellpakete und zwei Abbilder, Stand 10. September 2026.

existiert

home:sm0x:smaragd:desktop

smaragd-release · patterns-smaragd · smaragd-branding · smaragd-defaults-desktop · smaragd-agama-product · smaragd-agama-branding · smaragd-bootnames · smaragd-bootwaechter · smaragd-updater · libsmaragd-supplements

Kein Erbe, deshalb billig. Sechs Theme-RPMs aus einer Quelle, per zypper auf jedem Tumbleweed installierbar.

existiert

home:sm0x:smaragd:images

Das Live-Abbild aus einer KIWI-Beschreibung und das Installationsmedium als Link auf den Agama-Installer — 39 Zeilen dazu, 5 weg, ein viertes Produktprofil neben openSUSE, Leap und SLE.

Aktuell: Build 8.2 vom 9. September 2026, 890 MB, Prüfsumme und Signatur geprüft.

Zeichnung

smaragd:testing · :release · :patched

Das Aggregat dessen, was gebaut ist; das Aggregat, auf das Nutzergeräte zeigen — erst nach grünem Prüfstand und menschlicher Freigabe; und das einzige Projekt mit Link auf die Basis, das leer startet. Jedes Paket darin wäre eine ADR und eine Schuld.

Der Namensraum smaragd: wird vor dem ersten öffentlichen ISO beantragt. Nichts hängt am Namen — Pfade und Vendor-Lock werden aus product.yaml erzeugt.

Eine Paketliste, drei Leser

image/packagelists/{minimal,desktop,toolbox}.list
     │
     │  packaging/patterns/generate.py
     ├──→ patterns-smaragd.spec   ← was ein Gerät installiert
     ├──→ image/smaragd.kiwi      nennt NUR die Patterns
     └──→ der Basiswächter        meldet wöchentlich, wenn
                                  ein Paket aus der Basis fällt

Die Unantastbaren

Diese Pakete werden niemals neu gebaut, gepatcht oder ersetzt. Der Torwächter bricht den Bau, wenn eines davon in einem smaragd-Projekt auftaucht:

shim  grub2-*-efi  kernel-*  *-kmp-*  dracut  mkinitrd
glibc  gcc-libs  systemd  dbus
Qt6*  KF6*  plasma*  mozilla-nss  openssl*  gnutls

Zwei Gründe: Signaturkette (oben) und Bauzeit (unten — ein glibc-Neubau zieht tausende Pakete nach sich). Erlaubt bleiben Konfiguration, Themes, ein danebenliegendes Paket, das eine Datei ablegt, und *-branding-smaragd mit Provides und Conflicts.

Wo Zustand liegt

Jede Einstellung hat genau einen Schreiber

Die wichtigste Tabelle der ganzen Architektur — weil YaST genau daran gestorben ist: Zwei Stellen schreiben dieselbe Datei, und die letzte gewinnt.

WasSchreibtWohin
Unsere Standardwertedas Paket smaragd-defaults-desktop/etc/xdg/* — gehört uns
Desktop-Einstellungen des NutzersPlasma, der Nutzer~/.config/* — gehört dem Nutzer
Aktive ErgänzungenErgänzungs-Oberfläche → zypperPaketzustand, /etc/zypp/repos.d/
Fingerabdrückefprintd/var/lib/fprint/ — nie in einer Sicherung
Wiederherstellungsschlüsselder Nutzer, beim Verschlüsselnausgedruckt oder in der Cloud — nie nur auf dem Gerät
Passwörter und SchlüsselAnwendungenKWallet, per PAM entsperrt
Verlaufsmaragd-core/var/lib/smaragd/history.db
Wiederaufbau-Listedie Sicherung, bei jedem Laufmit der Sicherung, wenige Kilobyte — sie ist die Wiederherstellung

Kein Einstellungsmodul schreibt Systemzustand direkt. Alles läuft über smaragd-core — das ist der Mechanismus gegen das YaST-Problem.

Die Freigabekette

Der Automat baut, die Maschine prüft, der Mensch nimmt ab

Der Product Owner liest keinen Code. Das ist keine Lücke, für die man sich entschuldigt — es ist eine Konstruktionsbedingung. Also verschiebt sich die Prüfung vom Diff auf das Verhalten.

läuft

Tor 1–3 und 6: der Torwächter

Bau mit Warnungen als Fehler, Lizenzköpfe, Geheimnis-Scanner, kein literaler Farbwert, kein unantastbares Paket, keine Handänderung in erzeugten Verzeichnissen, Werkzeugkasten vollständig, Kontrast nach WCAG AA. 38 Prüfungen, bei jedem Push, in einem Container, der dem Runner gleicht — seit dem 10. September 2026 auch dort grün.

einmal von Hand

Tor 4: der Prüfagent

Ein zweiter Lauf, getrennter Kontext, anderer Auftrag: „Finde, was hier schiefgehen kann.“ Er kennt die Begründung des Autors nicht. Am 9. September fand er in einer eigenen Sitzung, dass eine Vorprüfung etwas verlangte, das kein openSUSE erfüllt — und die Suite war grün, weil ihre Attrappe es zurückgab.

Phase 2

Tor 5: der Prüfstand

Sechs Kernszenarien auf einem eigenen Dauerläufer: Secure Boot, Installation mit TPM, Offline-Update, künstlicher Bootfehler mit Rückfall, Flatpak ohne Passwort, smaragd-verlassen. Rauchtest je PR, volle Suite je Merge, Kettentest wöchentlich, Dauerlauf monatlich.

Was der Mensch am Sonntag tut

Eigenschaften lesen — ist die Liste richtig und vollständig? Rechte-Diff ansehen — wird irgendwo mehr erlaubt als vorher? Ampeln ansehen. Prüferbericht lesen. Das ISO selbst benutzen. Abnehmen. Keiner dieser Schritte verlangt Programmierkenntnis, und die beiden, die tatsächlich Fehler finden, sind der erste und der fünfte. Am 1. September 2026 fand er zwei Defekte in zwanzig Minuten, indem er auf ein Bootmenü sah — der gesamte Torwächter hatte sie nicht.

Was absichtlich fehlt

Jedes Nein hat eine Nummer

Jede dieser Entscheidungen steht in einer ADR mit Begründung und Rücknahmebedingung. Ein Einwand, der nur im Gespräch fällt, ist in sechs Monaten weg.

Kein eigener Anmeldedienst

Verknüpfen gegen die eigene Cloud ja, Anmeldedienst sein nein. Die einzige Entscheidung, die sich nicht billig zurücknehmen ließe.

Kein eigenes Konfigurationsprogramm

Die KDE-Systemeinstellungen sind der Ort. YaST, Cockpit und Myrlyn sind nicht im Abbild.

Keine Spins, kein ARM64

Ein ISO, ein Desktop, eine Zusammenstellung. Nur x86_64 — die Geräte, die von Windows 10 fallen, sind ausnahmslos x86_64.

Kein Wiki, keine Telemetrie

Ein Wiki veraltet unabhängig vom Produkt. Und gezählt wird höchstens ein Bit in der Repository-Anfrage, nie ein Profil.

Kein eigener Symbolsatz

Breeze als Grundlage, eigene Symbole nur für das, was es dort nicht gibt.

Kein Virenscanner im Dauerbetrieb auf schwachen Geräten

clamd hält rund 1,4 GB im Speicher. Unter 8 GB RAM ist der Wächter aus — mit einem ehrlichen Satz daneben.

Keine Patches an der Basis

smaragd:patched startet leer. Ein Patch kostet ein E2E-Szenario und eine Konfliktprüfung pro Woche, für immer.

Kein Upload-Dienst für Fehlerberichte

Er würde uns zum Verarbeiter fremder personenbezogener Daten machen. Das Diagnosepaket bleibt auf dem Gerät.