Dienstag, 2. Mai 2023

HowTo - live backup und restore einer virtuellen Maschine mit libvirt

Einleitung

Das Management User Interface libvirt steuert QEMU welches auf KVM aufsetzt. Die Basis für dieses Backup/Restore bildet die Verkettung von Diskimages.

Da hier und in der restlichen Dokumentation nichts über ein restore zu finden ist und das backup bekanntlich erst nach einem restore erfolgreich sein kann - habe ich ein kurzes HowTo geschrieben.

Donnerstag, 26. Januar 2023

Raspberry konservieren

Es gibt verschiedene Überlegungen warum man einen Raspberry mit "Schreibschutz" ausstatten sollte. Meine war: Hat man Geräte im Einsatz die eventuell rau behandelt werden und eigentlich keine Daten produzieren, kann man doch auch jeden Schreibvorgang verhindern. 

Geht das überhaupt und ist das auch für den Administrator praxistauglich ? Das Raspberry OS hat sogar (fast) alles vorbereitet: Stichwort Overlay Filesystem.

Mittwoch, 18. Januar 2023

ssh Zugang für fhem über Script einrichten

Ich mache einige Dinge aus dem Docker Container heraus über ssh auf dem Docker Host, anstatt den Container zu sehr zu verbiegen. (Artikel andocken).

Dafür habe ich mal ein Script gebastelt und ein paar Aufruf Varianten ausgearbeitet. Damit sollte mit wenigen Handgriffen die Einrichtung des ssh public key Zuganges innerhalb FHEM auf einen anderen Host gelingen. 

Das Script hat nur wenige Zeilen es werden beliebig Hostnamen oder IP Adressen als Argumente übergeben. 

  1. Die eventuell vorhandenen Einträge in known_host werden gelöscht und neu eintragen.
  2. Es wird überprüft ob bereits ein ssh Key vorhanden ist, falls nicht wird ein Neuer erzeugt.
  3. Der public key wird zur möglichen Weiterverarbeitung (in authorized_keys) ausgegeben.

Ich zeige den Aufruf 

  • als komplettes Here Doc, als lokales Script oder Script vom GitHub, 
  • als anderer User,
  • oder direkt im Docker Container.

Das eigentliche Ziel: der public key von User fhem auf dem HostA wird dem User userB auf HostB gegeben damit User fhem sich als userB ohne Passworteingabe an HostB anmelden / Befehle ausführen kann.

Man beachte in allen Beispielen die unterschiedliche Verwendung der Shell Optionen -c und -s!

Mittwoch, 11. Januar 2023

SD Card Image anpassen

Man hat ein Image einer großen SD Card gemacht und will dieses Image auf eine kleinere SD Card speichern. Wie kann man das Image an den eigentlichen Platzbedarf anpassen ohne den Inhalt der SD Card zu verlieren? Ich habe sogar ein paar Einzeiler im Netz gefunden, aber die haben alle nicht funktioniert. Ich habe mit Hilfe dieses Artikels ein paar Schritte entwickelt die hoffentlich leicht nachzuvollziehen und eindeutig sind.

Zunächst ganz vereinfacht ein paar Grundlagen

  • Eine gesteckte SD Card stellt ein Blockdevice dar, ein Image davon kann auch als Blockdevice eingebunden werden. Ein Blockdevice enthält Partitionen, eine Partion enthält ein Filesystem.
  • Gespeichert wird in Sektoren (Sectorsize 512 Byte), die Sektoren werden in Blöcken zu 4096 Byte (bzw. 4K Blocksize) organisiert. 
  • Die typischen Zahlenangaben für das Filesystem sind Blöcke, für die Partition sind es Sektoren. Eine 16GB SD Card hat 3.906.250 Blöcke und 31.250.000 Sektoren.
  • Die Angabe GB basiert auf 1000³, die Angabe GiB basiert auf  1024³ (2^30). 16GB -> 14,9 GiB

Die gesamte Arbeit erfordert im wesentlichen root Kontext (sudo su). Ich erarbeite hier Einzeiler und kein komplettes Script, ich habe Ausgabezeilen eingefügt damit man die Abläufe verfolgen kann. 

Ich empfehle jede Zeile einzeln auszuführen! Tipp: Meine Codeblöcke sind editierbar: eigene Pfad- und Dateinamen reinschreiben und direkt copy & paste.

Donnerstag, 29. Dezember 2022

OpenWrt - sysupgrade ohne Bedenken

Es gibt ein (für mich) neues Feature bei OpenWrt: Attended SysUpgrade

Das vereinfacht den Vorgang ein neues Image einzuspielen erheblich, man hat quasi keine Nacharbeit mehr! 

Nachdem ich mich mal wieder mit hotplug und opkg-extras beschäftigt habe, entdeckte ich in dem Wiki Artikel ganz zum Schluss den entsprechenden Hinweis. 

Damit braucht man jetzt nur noch zwei Dinge beim sysupgrade: 

  1. eine angepasstes Backup Archiv Configuration
    • Pfade bzw. Dateien eintragen und mit "Open list" prüfen ob alle wichtigen Dateien im Archiv enthalten sind.
    • Obwohl das sysUpgrade genau diese Dateien von sich aus behält (Keep Settings...), sollte man immer ein Archiv separat erzeugen und herunterladen!
  2. Das installierte luci-app-attendedsysupgrade Package.

Im Menü System einfach Attended Sysupgrade auswählen, der Rest ist selbsterklärend. Im Reiter Configuration kann man den Advanced Mode einschalten. Damit kann man die Pakete verifizieren und eventuell noch etwas ändern. Man kann auch ein angepasstes Image der bereits installierten Version herunterladen. 

Hinweis: Am Ende bleibt irgendwie die UI hängen, man kann diese schließen und sich nach dem Neustart neu verbinden.

Ich habe z.B. um folgende Dateien/Pfade ergänzt:

/etc/wireguard/
/etc/adblock/ad*list
/root/speedtest
/root/.config

Hatte man hotplug-extras installiert, kann man die installierten Scripts wieder entfernen (auch oben in der Liste):

rm /etc/hotplug.d/iface/90-online
rm /etc/hotplug.d/online/10-sleep
rm /etc/hotplug.d/online/50-opkg-restore

Fehlt noch was?

Samstag, 15. Oktober 2022

iSCSI - ganz minimalistisch

Ich war überrascht wie einfach das funktioniert. Es gibt da eine Menge erklärender Seiten im Web, die zeigen aber auch ziemlich viel verwirrende Vielfalt. Ich habe mit einem debian System und einer Windows Maschine mal ein Target und einen Initiator miteinander verbunden.

Ich habe hier ein paar Artikel verlinkt, beim einarbeiten sind mir in diesen leider ein paar Fehler im Code aufgefallen. Also Vorsicht mit Copy&Paste aus den verlinkten Artikeln!

Montag, 10. Oktober 2022

WSL und Docker Desktop - Neuigkeiten

Mit Windows 11 Build 22000 habe ich mal die Neuigkeiten bei der Installation von Windows-Subsystem für Linux und die Installation von Docker Desktop getestet. Die sind am Ende relativ umfangreich - gemessen an meinen früheren Versuchen.