Nachträglich Pakete in resflash-OpenBSD hinzufügen

WICHTIG: Dieser Beitrag ist in seiner Entwurffassung veröffentlicht und dient vorrangig als Unterstützung bei der autonomen Lösungssuche durch den Leser. Der Beitrag erfüllt nicht die üblichen Qualitätsstandards dieses Blogs und erfordert damit ein tieferes Verständnis der Zusammenhänge. Falsch angewendete Befehle können zu unerwünschten Problemen wie Datenverlust führen oder gar irreparable Defekte verursachen.

System in “Rohzustand” versetzen

  1. Paket suchen (pkg_info -Q <name>)
  2. Prozesse finden die Mountpunkte belegen
    for dir in /etc /var ; do find $dir -exec sh -c ' fuser $0 ' {} \; 2>&1 | sed -n 's#\(.*: ..*\)#\1#p' ; done
  3. Gefundene Prozesse beenden – Beispiel:
    rcctl ls started | grep -v sshd | xargs rcctl stop
  4. /etc und /var aushängen
    umount /etc /var (evtl mit -f)
  5. Root-Pfad temporär schreibbar machen
    mount -o rw /

Nachträglich Pakete installieren

Anstatt hier die installurl-Datei zu schreiben, kann auch PKG_PATH gesetzt werden. Allerdings ist dann die Syntax eine andere.

Benötigt man Software für eine ältere OpenBSD-Version, wird man vielleicht auf einem Spiegelserver in der Liste auf https://www.openbsd.org/ftp.html fündig.

Beispielsweise stellte https://ftp.halifax.rwth-aachen.de/pub/OpenBSD noch am 16.11.2022 Pakete für OpenBSD 6.9 bereit. http://mirror.junda.nl/pub/OpenBSD/ hielt noch am 30.05.2024 Pakete für Version 7.2 bereit.

  1. Mirror als Installationsquelle angeben
    echo https://cdn.openbsd.org/pub/OpenBSD > /etc/installurl
  2. Nameserver setzen
    echo nameserver 9.9.9.9 > /etc/resolv.conf
  3. Neues Paket hinzufügen
    pkg_add vim--no_x11
  4. [optional] Alle bereits installierten Paketen aktualisieren
    pkg_add -u
  5. Ursprünglichen Konfigurationszustand wiederherstellen
    rm /etc/installurl /etc/resolv.conf

Wichtig: Fügt pkg_add einen neuen Benutzer hinzu, muss auch /cfg/etc/master.passwd entsprechend aktualisiert werden.
Gleiches gilt für /cfg/etc/passwd, fern diese existiert:

mount /cfg
for f in master.passwd passwd ; do
        sdiff /cfg/etc/$f /etc/$f -o /tmp/$f 
        cat /tmp/$f > /cfg/etc/$f 
done
umount /cfg

System neu starten

Um resflash-konformen Betrieb wieder aufzunehmen:

reboot