Drücke "Enter", um den Text zu überspringen.

12.08.2024: Erfahrungsbericht Umzug von Raspberry Pi 3 auf den Raspberry Pi 5

Letztens musste ich von meinem Raspberry Pi 3 auf einen Raspberry Pi 5 umziehen. Grund dafür war, dass der Raspberry 3 zu wenig RAM hat und meine Anwendung, die ich auf dem Raspberry laufen hatte, nicht mehr lief. Also klickte ich mich ein wenig durch das Internet, um zu erfahren, wie aufwendig der Umzug wohl werden würde. Ich war ein wenig entmutigt, denn die meisten Quellen erzählten mir, dass ich Debian 12 (Bookworm) wohl komplett neu installieren müsste, ein manuelles Upgrade wurde nicht empfohlen. Ich hatte aber Lust auf ein manuelles Upgrade und erinnerte mich an einen Befehl, mit dem ich die Paketquellen einfach umstellen konnte. Da ich mich nicht mehr genau an den Befehl erinnerte, musste natürlich wieder Google helfen.

Ausgangspunkt ist das 64 Bit Image vom Raspberry PI OS mit Debian 11, welches schon ein paar Monate auf dem Pi werkelte. Dieses hatte bereits mit rpi-update einen neueren Kernel erhalten und nun musste es also noch auf Debian 12 gebracht werden. Doch bevor das passierte, brachte ich mit einem

sudo apt update && sudo apt dist-upgrade

das System auf den aktuellen Stand.

Danach änderte ich mit folgendem Befehl die Paketquellen von Bullseye auf Bookworm:

sudo sed -i'.bak' 's/bullseye/bookworm/g' /etc/apt/sources.list

Das ist der Befehl, den ich vage in Erinnerung hatte und gefunden haben ich diesen in folgenden Blog-Artikel: Update Debian 11 auf 12 Bookworm.

Dieser Befehl wäre ausreichend, wenn ich keine zusätzlichen Paketquellen zu meinem Debian 11 hinzugefügt hätte. Da ich allerdings gerne mit meinem System experimentiere, weswegen ich auch noch weitere Paketquellen hinzugefügt habe, brauche ich noch einen zweiten Befehl, der auch diese Paketquellen anpasst:

sudo sed -i'.bak' 's/bullseye/bookworm/g' /etc/apt/sources.list.d/*

Danach öffnete ich mit:

sudo nano /etc/apt/sources.list

noch einmal die Datei, welche die Hauptpaketquellen enthält und ergänzte die einzelnen Zeilen mit non-free-firmware. Das ganze sah dann so aus:

deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
# Uncomment deb-src lines below then 'apt-get update' to enable 'apt-get source'
#deb-src http://deb.debian.org/debian bookworm main contrib non-free
#deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free
#deb-src http://deb.debian.org/debian bookworm-updates main contrib non-free

Nachdem ich das erledigt hatte, konnte ich mit

sudo apt update && sudo apt dist-upgrade

den Upgrade-Prozess starten. Dieser lief dann einige Zeit, immerhin mussten viele neue Pakete heruntergeladen und installiert werden.

Mein Raspberry läuft hier als Server, sodass ich nur über SSH darauf zugreife und ich keine Desktop-Umgebung starte. Ich erwähne das, weil ich nicht weiß, ob es damit genauso einfach funktioniert. Wenn wer diesen Artikel nutzt, um ebenfalls auf einen RPi5 umzuziehen und dort dann auch die Desktop-Umgebung nutzt, darf gerne einmal in den Kommentaren erzählen, ob das problemlos funktioniert.

Nachdem das Upgrade durchgelaufen war, startete ich den Raspberry neu und schaute, ob noch alles läuft. Es gab einige Programme, die dann in einem anderen Ordner lagen, weswegen hier eventuell eigene Scripte angepasst werden müssten. Bei mir war es der DDClient, um die DYNDNS-Einträge erneuern zu lassen. Mit dem Befehl which ddclient lässt sich hier der neue Pfad leicht herausfinden, um die eigenen Scripte anzupassen. Das gilt für andere Programme natürlich ebenso.

Nachdem alles lief, musste ich noch überlegen, wie ich den Kernel, der für den RPi5 optimiert wurde, ins System bekomme. Die Lösung war dann am Ende verdammt einfach. Ich beschreibe hier jetzt den Weg, wie ich es gemacht hätte, wenn ich die Lösung sofort gewusst hätte. Ich habe am Ende ein wenig länger gebraucht, um die Lösung zu finden, aber es ist am Ende genau die Lösung, die ich genutzt habe. Der Unterschied war nur, dass ich den Raspberry an dieser Stelle schon ausgeschaltet hatte und den Kernel dann von meinem Rechner aus in das /boot/-Verzeichnis kopiert habe.

Hätte ich es in der Konsole auf dem Raspberry direkt erledigt, wäre ich mit:

cd /boot/

in den boot-Ordner gewechselt und hätte hier mit

sudo wget https://github.com/raspberrypi/firmware/raw/master/boot/kernel_2712.img

dann das optimierten Kernel-IMG „kernel_2712.img“ abgelegt. Das ist der optimierte Kernel für den Raspberry Pi 5, den ich natürlich auch benutzen wollte. Mit einem:

sudo rpi-update

installierte ich dann noch den aktuellsten Kernel, beziehungsweise prüfte ich, ob der aktuellste Kernel installiert war und damit waren die Vorbereitungen abgeschlossen. Den github-Link solltet ihr, wenn ihr ihn verwenden wollt, noch einmal prüfen. Der könnte sich mit der Zeit natürlich verändern.

Ihr könnt übrigens schon auf den RPi5 wechseln, bevor ihr den optimierten Kernel installiert. Solange im /boot/-Verzeichnis das „kernel8.img“ vorhanden ist, startet der RPi5. Ich habe das getestet und den optimierten Kernel erst danach installiert. Was ich damit sagen will, an dieser Stelle ist der Umzug fertig und ihr könnt die Festplatte an den RPi5 anstecken und die neue Hardware genießen.

Bevor ihr das macht, könntet ihr aber noch die boot-Partition von 256 auf 512 MB erweitern. Es ist aber nicht unbedingt notwendig, wird vom rpi-update-Prozess aber so vorgeschlagen. Je nachdem, wie groß eure/r Festplatte/SSD/USB-Stick ist, dauert es eine Weile, denn ihr müsst die andere Partition ja verkleinern und verschieben, um dann die boot-Partition vergrößern zu können.

Und da gleich noch ein zweiter Tipp: Gparted wollte bei mir die FAT32-Partition – in diesem Format ist die boot-Partition formatiert – nicht vergrößern. Die einfache Lösung ist, den Inhalt der boot-Partition kurz auf einen anderen Datenträger zu verschieben, die komplette boot-Partition (nur diese) dann neu in FAT32 zu formatieren und dann den Inhalt wieder reinkopieren. Ihr könnt es aber auch lassen und einfach die „kernel7.img“ und die kernel7l.img“-Dateien aus der boot-Partition löschen. Dann habt ihr auch nur 80 MB an Daten dort liegen.

Ergänzung: Die boot-Partition wird in der Datei /etc/fstab jetzt als /boot/firmware eingebunden. Ich habe das bisher noch nicht angepasst und das System läuft derzeit ohne Probleme. Es könnte aber sein, dass es bei zukünftigen Aktualisierungen deswegen zu Fehlermeldungen kommt. Also behaltet das im Hinterkopf.

Update: Ich habe jetzt die fstab angepasst. Das System läuft weiterhin problemlos. Es ist aber wohl für alle wichtig, die auf normalen Wege ihren Kernel und somit die Firmware aktualisieren und nicht über rpi-update.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinterlässt eine betroffene Person einen Kommentar in dem auf dieser Internetseite veröffentlichten Blog, werden neben den von der betroffenen Person hinterlassenen Kommentaren auch Angaben zum Zeitpunkt der Kommentareingabe sowie zu dem von der betroffenen Person gewählten Nutzernamen (Pseudonym) gespeichert und veröffentlicht. Ferner wird die vom Internet-Service-Provider (ISP) der betroffenen Person vergebene IP-Adresse mitprotokolliert. Diese Speicherung der IP-Adresse erfolgt aus Sicherheitsgründen und für den Fall, dass die betroffene Person durch einen abgegebenen Kommentar die Rechte Dritter verletzt oder rechtswidrige Inhalte postet. Die Speicherung dieser personenbezogenen Daten erfolgt daher im eigenen Interesse des für die Verarbeitung Verantwortlichen, damit sich dieser im Falle einer Rechtsverletzung gegebenenfalls exkulpieren könnte. Es erfolgt keine Weitergabe dieser erhobenen personenbezogenen Daten an Dritte, sofern eine solche Weitergabe nicht gesetzlich vorgeschrieben ist oder der Rechtsverteidigung des für die Verarbeitung Verantwortlichen dient.