Upgrade einer Raspberry - wie macht Ihr das?

  • Ein Produktivsystem bei mir muss mal wieder upgraded werden: Von Buster auf Bullseye.

    Dazu habe ich Bullseye auf einer weiteren Raspin installiert und installiere und ziehe nun nach und nach alle Anwendungen hoch: influxdb, grafana, proftpd, nfs-server, node-red und you name it.

    Mit hilft dabei mir die aktuell installierten Pakete mit apt list --installed anzusehen und auf dem neuen System dann entsprechend nachzuziehen. Dann muessen die ganzen Konfigurationen nachgezogen werden. Tools in /usr/local bin und /usr/locall/sbin werden kopiert. Ist aufwaendig - aber auf der anderen Seite wird man somit Altlasten los.

    Mich wuerde mal interessieren wie Ihr Eure Systeme aktuell haltet. Oder seid Ihr ein Anhaenger von "never touch an running system" ? Ich nicht - und jeder andere kann sich ein Weiterlesen dieses Threads sparen :shy:

    :no_sad: ... Kein raspiBackup - kein Mitleid ... :no_sad:

    Mein Raspberry Garten

    3 * RPi1B, 2 * RPi3B, 2 * RPi4B, 1 * CM4, 1 * RPi5

  • Ich lasse den alten Rechner noch eine Weile in Betrieb und installiere so nach und nach die Programme auf den neuen Rechner.

    So kann ich die Konfigurationen noch einmal nachsehen.

    Daten kopiere ich meistens über mc und die Shell-Verbindung auf den neuen Rechner.

    Es gibt einige wichtige Programme, die ich immer wieder installiere, andere nur wenn der Bedarf dazu da ist.

    Allerdings habe ich hier den Vorteil, das ich hier per HDMI-Umschalter relativ schnell mal den Rechner wechseln kann.

    Oder ich rufe sie über ssh (ssh -X user@IpAdresse) auf und vergleiche dann direkt die Konfigurationen.

    SD-Karten kommen bei Abschaltung in eine beschriftete Box.

    Wenn ich die nach einem Jahr nicht angepackt habe werden sie wieder verwendet.

    MfG

    Jürgen

  • Mein letztes Upgrade auf Debian Bookworm war auf meinem Server (x86_64). Bis ich den Nginx wieder laufen hatte, dauerte da so ca. eine Stunde. Problem war hausgemacht.

    Debian-Upgrades sind immer recht angenehm. Ich hatte in meinem Leben noch keinen Server, den ich aufgrund eines OS-Upgrades neu installiert habe. Beim RPi hätte ich aber meine Bedenken, das jemanden anderen zu empfehlen.

  • Meine letztes Upgrade war auch von Bullseye(arm64) auf Bookworm(amd64).

    Scripte und Konfigurationen konnte ich zum größten Teil übernehmen, alles andere habe ich dann neu gemacht.

    Ist dann auch eine andere Hausnummer. Aber den alten RPi4B lasse ich noch in Betrieb.

    MfG

    Jürgen

  • Ich mache mir fast immer Notizen bei der Installation und Einrichtung von Projekten, also was alles dazu wie installiert wird und welche Konfigurationen etc. angepasst werden müssen. Wenn die Installation mehr als ein Paket benötigt, dann erstelle ich aus den Notizen ein Bash-Installationsskript in dem auch gleich die Konfigurationsdateien angepasst weden.

    Ein gewisses Restrisiko bleibt bei einem Releasewechsel eh immer, egal ob manuell installiert oder Konfigurationen rüber zieht oder z.B. diese Kasperei erst auf PulseAudio als Soundserver zu setzen, dann wurde Alsa verwendet und aktuell wieder PulseAudio eingepflanzt. :wallbash:

  • Im Wesentlichen mache ich es auch wie Jürgen Böhm . Nur brauche ich keinen Monitor da alle meine Raspis headless laufen. Und nachdem dann Step by Step alles wieder zum Laufen gebracht wurde wird noch einmal ein raspiBackup Snapshot vom alten System gezogen, das neue System bekommt die korrekte statische IP wie auch den Hostnamen und dann wird die SD Karte gewechselt und somit das neue Release aktiviert. Wenn noch irgendwelche Dinge nachtraeglich fehlen existiert der Snapshot um Daten oder Konfigurationen zu holen.

    :no_sad: ... Kein raspiBackup - kein Mitleid ... :no_sad:

    Mein Raspberry Garten

    3 * RPi1B, 2 * RPi3B, 2 * RPi4B, 1 * CM4, 1 * RPi5

  • Als echter Linux-Dauernoob mache ich mir bei allen Installationen immer Notizen, wie ich es gemacht habe, mit welchen bash-Befehlen im Terminalfenster etc. Dies schreibe ich mir tatsächlich so auf, wie ich es später in der Doku für meine öffentlichen Projekte auf github niederschreibe (z.B. Anleitung Raspiblaster, Kapitel 3 und Kapitel 4).

    Bei einem Release-Update (buster-->bullseye) erstelle ich grundsätzlich eine neue SD-Karte mit dem aktuellen OS und ziehe dann die Installation gemäß meiner Notizen durch. Wenn's uferlos wird, wie z.B. bei meinem yamuplay (mittlerweile leider veraltet wegen omxplayer), erstelle ich auch bash-Skripte (yamuplay-setup.sh) für die notwendigen Installationsschritte.

    Bei fremden, mitunter chaotischen Projekten (z.B. Phoniebox) konnte ich mich schließlich zu never touch a running system durchringen. :)

    Und grundsätzlich mache ich von meinen Projekten eine dd-Sicherung mit piShrink, um sie jederzeit wieder (Achtung: Unwort!) schnell in Betrieb nehmen zu können. Denn: Kein Backup, kein Mitleid!

  • Ich setze in der Regel neu auf, auf einer frischen SD-Karte, damit ich notfalls sehr einfach wieder das alte System starten kann und um Konfigurationen nachschauen zu können. Ich habe auch Notizen für die Installation und Konfiguration diverser Software, die ich dann durchgehe. Neben dem wiederherstellen der alten Konfiguration, schaue ich auch was die neuen Softwareversionen an neuen/geänderten Einstellungsmöglichkeiten haben.

    On some systems, in particular, Digital's Edusystems 20, 25, and 50, strings are limited to 6 characters. Several strings may, of course, be combined in an array to permit longer than 6-letter words to be used.”
    — David H. Ahl, 101 BASIC Computer Games, DEC, 1975

  • Ich mache das, soweit es geht, per Script. Das Verzeichnis mit dem Script und anderen Dateien kopiere ich nach dem Aufspielen des Images auf die /boot Partition, stecke die SD Karte in den Raspberry, einschalten und der Rest läuft dann größtenteils automatisch. Im Script habe ich dann noch Kommentare oder gebe Hinweise auf den Bildschirm aus. Nach bestimmten Befehlsgruppen bootet der Raspberry, sofern erforderlich, neu und setzt die Installation eigenständig fort.

    Das geht natürlich nicht wenn zwanghaft interaktive Eingaben notwendig sind oder die erforderlichen Dateien nicht auf die /boot Partition passen, wobei Letzteres auch kein Problem wäre. Wenig Handarbeit, richtige Reihenfolge, alles protokolliert, editierbar und nichts vergessen. Das Script zu erstellen macht anfangs etwas Arbeit was sich aber später bezahlt macht. Was per Script nicht geht wird zwischendurch oder am Ende von Hand gemacht.

  • Das eigentliche Script ist kein Hexenwerk. Ich hatte es satt ständig die gleichen Befehle einzutippen und habe mir daher das Script gebastelt. Es funktioniert bei mir und damit sind mein Anforderungen erfüllt. Da kann man sicher vieles anders oder besser machen, mir reicht es. Also:

    Ich denke, das Script ist ziemlich selbsterklärend. Man kann es erstmalig von Hand starten oder auch automatisch s.u.. In step1 setze ich die ganzen raspi-config Einstellungen und schreibe in die .bashrc den Scriptaufruf mit einer Pause um ggf. auf das Netzwerk zu warten. Durch den Start aus der .bashrc kann ich den Installationsverlauf auf dem Bildschrim verfolgen, einen Ablauf im Hintergrund wollte ich zwecks eventueller Fehlerekennung nicht.

    Das boot_behaviour B2 muß zweimal gesetzt werden sonst muß man sich immer wieder anmelden. Im step2 mache ich z.B. das Systemupdate, im step3 die lokalen Parametrierung für das Netzwerk usw. Im letzten Schritt entferne ich den Scriptaufruf und die automatische Anmeldung.

    Mir war das aber noch immer zuviel Handarbeit. Die neueren Images bieten ja eine autostart Funktion, die man in der /boot/cmdline.txt parametriern kann. Man kann dort auch schon Netzwerkparameter setzen, wodurch der Raspberry bereits direkt nach dem Aufspielen des Images erreichbar ist. Beispiel:

    Code
     console=serial0,115200 console=tty1 root=PARTUUID=4c4e106f-02 rootfstype=ext4 fsck.repair=yes rootwait quiet init=/usr/lib/raspberrypi-sys-mods/firstboot systemd.run=/boot/firstrun.sh ip=10.0.2.5::10.0.0.20:255.255.255.0:rpi:eth0:off

    Es wird also direkt nach dem Installationsreboot das Script firstrun.sh gestartet, außerdem ist der Raspberry nach dem nächsten Boot unter og. IP Adresse per Telnet erreichbar. Die Zeile wird dann in dem o.g. step5 ebenfalls entfernt.

    Die firstrun.sh hat folgenden Inhalt

    Bash
    #!/bin/bash
    sudo mv /boot/setup.sh /home/pi
    sudo chown -R pi:pi /home/pi
    cd /home/pi
    ./setup.sh

    Außerdem braucht man noch die Dateien ssh und userconf, die man ebenfalls in das /boot Verzeichnis kopiert.

    Ich kopiere also diese 5 Dateien auf die /boot Partition stecke das Netzteil ein und schaue bei der Installation zu. Ein Eingriff ist jedoch nötig, man muß sich einmalig Anmelden, das habe ich nicht unterbinden können. Aber das geht auch per Telnet.

    Bei der cmdline.txt muß man noch auf die PARTUUID achten. Das muß die aus dem jeweiligem Originalimage sein und ist anscheinend von Image zu Image unterschiedlich. Sofern keine Tastatureingaben notwendig sind läuft die Installation komplett durch.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!