xinionos/wurzel/usr/local/sbin/xinionos-wurzeln
Thomas Reitz d9ed1bc2ff XinionOS als eigenes Erzeugnis herausgeloest
Die Geraeteschicht — Abbild, zwei Wurzeln, Selbstprueflauf, Ruecksprung —
verlaesst die Ablage der ersten Appliance und wird ein eigenes Erzeugnis
mit eigenem Takt und eigenem Nachweis.

Drei Gruende, nach Gewicht: Der Cyber Resilience Act verpflichtet fuer das
gesamte Produkt einschliesslich der Betriebssystemschicht — vier gewachsene
Basissysteme waeren vier Stuecklisten und vier Schwachstellenprozesse, eine
gemeinsame Basis ist ein Dossier. Der Ruecksprung wird nur einmal richtig
gebaut, weil er nur geprueft wird wenn ihn jemand braucht. Und eine
abgegrenzte Aufgabe laesst sich ausschreiben, was unmittelbar auf das
groesste benannte Risiko des Hauses einzahlt.

Der Einwand der Vertraeglichkeitsmatrix wird durch den Nutzlast-Vertrag
entkraeftet statt weggeredet: Die Nutzlast liegt in der Wurzel und wird mit
ihr getauscht. Eine Fassung, ein Rueckweg, keine Matrix.

Das OS kennt kein Produkt — Regel 1. Alle Namen sind entkoppelt, die
Statusseite ist auf die Standardbibliothek umgestellt, weil jede
Abhaengigkeit im Grund-OS eine Verpflichtung ueber die Produktlebensdauer
ist.

Nichts davon ist gelaufen. Der Inhalt gilt als Bauplan.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 08:02:55 +02:00

31 lines
1.2 KiB
Bash
Executable file

#!/bin/sh
# Sagt, welche der beiden Wurzeln gerade laeuft und welche die andere ist.
#
# Alles im Fassungswechsel haengt an dieser Auskunft: Ein Update schreibt immer in die
# INAKTIVE Wurzel. Wer sich hier irrt, ueberschreibt die laufende Fassung — und damit den
# Rueckweg, den das ganze Verfahren verspricht.
#
# Aufruf:
# xinionos-wurzeln aktiv -> a | b
# xinionos-wurzeln andere -> b | a
# xinionos-wurzeln geraet a -> /dev/disk/by-label/wurzel-a
set -eu
aktive_wurzel() {
# Die Wahrheit steht im eingehaengten Wurzeldateisystem, nicht in einer Merkdatei:
# eine Merkdatei kann nach einem Ruecksprung falsch sein, das Dateisystem nie.
quelle=$(findmnt -n -o SOURCE / | sed 's/\[.*\]//')
kennung=$(blkid -o value -s LABEL "$quelle" 2>/dev/null || echo "")
case "$kennung" in
wurzel-a) echo a ;;
wurzel-b) echo b ;;
*) echo "Wurzel nicht erkennbar: $quelle (Bezeichner '$kennung')" >&2; exit 1 ;;
esac
}
case "${1:-}" in
aktiv) aktive_wurzel ;;
andere) [ "$(aktive_wurzel)" = a ] && echo b || echo a ;;
geraet) echo "/dev/disk/by-label/wurzel-${2:?Wurzel a oder b angeben}" ;;
*) echo "Aufruf: $0 aktiv|andere|geraet <a|b>" >&2; exit 64 ;;
esac