#!/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 " >&2; exit 64 ;; esac