Zwischen den Jahren ist eine gute Zeit, um die eigene IT fit zu machen und ein paar liegengebliebene Upgrades nachzuholen. In meinem Fall waren das die RaspberryPis, die noch mit Debian 9 a.k.a. Stretch liefen. Der Support dafür ist im Juni 2022 ausgelaufen, also war es höchste Zeit.

Wie vor jedem Upgrade ist ein Backup Pflicht. Das geht am Mac mit ein paar CLI-Tools flott. Zuerst suchen wir über diskutil die passende SD-Karte. Die sieht, ja nach Größe, ungefähr so aus:

Um davon ein (komprimiertes) Image zu ziehen, bietet sich dd an. Viele Posts, die man dazu im Netz findet, machen aber zwei Fehler: sie verwenden disk statt rdisk und geben keine Puffergröße mit an, so dass die ineffiziente Voreinstellung von 512 Bytes greift. Ich verwende daher folgende Variante:

$ sudo dd if=/dev/rdisk4 bs=128k | gzip -f > raspberry_20221228.img

Um rauszufinden, wie schnell es vorwärts geht, kann man Ctrl+t drücken und enthält dann einen Zwischenstand.

Stretch auf Buster (9 -> 10)

Nachdem das Backup erfolgreich abgeschlossen ist, wird es Zeit für das erste Upgrade, von Stretch (Debian 9) auf Buster (Debian 10). Dazu stellen wir zuerst sicher, dass wir auf mit Stretch auf dem neuesten Stand sind:

# apt update
# apt dist-upgrade

Jetzt können wir die Paketquellen (in /etc/apt) auf die nächste Version (Debian 10 a.k.a. Buster) umbiegen. Dazu ersetzen wir in den Dateien /etc/apt/sources.list und /etc/apt/sources.list.d/raspi.list einfach das Wort “stretch” durch “buster”. Es sollte danach ungefähr so aussehen:

# cat /etc/apt/sources.list
deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
# cat /etc/apt/sources.list.d/raspi.list
deb http://archive.raspberrypi.org/debian/ buster main ui
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspberrypi.org/debian/ stretch main ui

Um das Upgrade zu beschleunigen, empfiehlt es sich, das Paket apt-listchanges zu entfernen:

# apt remove apt-listchanges

Jetzt geht’s an’s Eingemachte: Mit apt holen wir uns zunächst die neuen Paketinformationen und führen dann ein Upgrade durch. Ich empfehle, dass Ganze in einer screen-Session zu machen, falls die Netzwerkverbindung unerwartet abreißt.

# screen
# apt update
# apt dist-upgrade

Nach dem, hoffentlich erfolgreichen, dist-upgrade fehlt nur noch ein Reboot, um das erste Upgrade abzuschließen.

Empfohlen sind im Nachgang noch zwei Schritte: autoremove um nicht mehr benötigte Pakete zu löschen und autoclean um die Paketdateien, die für nun nicht mehr benötigt werden, zu löschen.
Mit autoremove sollte man allerdings vorsichtig sein. Auf meinem System hat es bspw. rsync deinstalliert, was ich schon gerne hätte.

# apt autoremove
# apt autoclean

Buster zu Bullseye (10 -> 11)

In der zweiten Runde sind die Schritte ähnlich. Wir das Wort buster mit bullseye in den Dateien unter /etc/apt/ und dann kann es auch schon losgehen:

# apt update

Hier tauchte allerdings schon der erste Fehler auf:

W: Skipping acquire of configured file 'ui/binary-armhf/Packages' as repository 'http://archive.raspberrypi.org/debian bullseye InRelease' doesn't have the component 'ui' (component misspelt in sources.list?)

Dieser lässt sich einfach lösen, indem man das Wort ui aus der Datei /etc/apt/sources.list.d/raspi.list löscht. Dann geht es weiter:

# apt dist-upgrade

Bevor es an den Reboot geht, gibt es noch ein wichtiges Detail zu beachten. Mit Bullseye ändert sich der Name des Ethernet-Interfaces. Hieß es bisher schlicht eth0, so enthält der neue Name die MAC-Adresse.

Hat euer Pi bspw. die MAC-Adresse a1:b2:c3:d4:e5:f6, so heißt wird aus eth0 mit Bullseye enxa1b2c3d4e5f6, also der Präfix enx plus MAC-Adresse ohne Doppelpunkte.

Diesen neuen Namen musste ich neben /etc/network/interfaces auch in /etc/ddclient.conf eintragen, damit auch dieser Dienst weiterhin, wie vor der Änderung funktioniert.

Wie das Buster-Upgrade, schließen wir auch dieses Upgrade mit einem kurzen, optionalen Aufräumen ab:

# apt autoremove
# apt autoclean

Fertig ist die Laube!