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>
31 lines
1.2 KiB
Bash
Executable file
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
|