Da ich einiges an Zeit in meine auf dem Raspberry Pi 4 laufende Nextcloud investiert habe, wäre es schade, für das aktuelle Raspberry Pi OS 12, alles noch einmal aufsetzen und konfigurieren zu müssen. Obwohl die Entwickler des Betriebssystems von einem Upgrade generell abraten, habe ich mich auf die Suche nach einer guten und funktionierenden Anleitung gemacht und bin auf den vielversprechenden Artikel „Raspberry Pi OS – Update von Bullseye (11) auf Bookworm (12)“ von Sascha Syring gestoßen.
Um das Ganze ausgiebig zu testen, habe ich das Upgrade zuerst auf einem Raspberry Pi 4 durchgeführt, auf dem ein Mumble-Server läuft, den unsere Community produktiv zum Erfahrungsaustausch nutzt. Nachdem dies alles problemlos funktioniert hat, habe ich mich an meinen Nextcloud-RasPi gewagt. Was es weiter zu beachten gab, darauf gehe ich am Ende des Artikels noch ein.
Systemupgrade
Bevor es los geht muss das System auf den aktuellsten Stand unter Raspberry Pi OS 11 Bullseye gebracht werden. Hierzu führt man Folgendes aus:
1 |
sudo apt update && sudo apt upgrade && sudo apt dist-upgrade |
Paketquellen
Danach werden die Paketquellen auf das neue System Bookworm angepasst. Hierzu öffnet man die /etc/apt/sources.list
1 |
sudo nano /etc/apt/sources.list |
und kommentiert alle aktiven Quellen, indem man vor jede aktive Zeile eine Raute „#“ setzt. Danach fügt man die drei Zeilen
1 2 3 |
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 |
am Anfang ein und speichert die Datei mit Ctr + o ab und verlässt dann den Editor mit Ctr + x.
Das Gleiche Spiel wiederholt man mit den zusätzlichen Paketquellen.
1 |
sudo nano /etc/apt/sources.list.d/raspi.list |
Hier wird nun folgende Zeile an den Anfang gesetzt:
1 |
deb http://archive.raspberrypi.org/debian/ bookworm main |
Die Datei wird mit Ctr + o gespeichert und der Editor mit Ctr + x verlassen. Ist dies geschehen, können die Paketquellen neu eingelesen werden.
1 |
sudo apt update |
Bootpartition
Nun kommt der kniffligste Teil. Die Bootpartition muss an die neuen Gegebenheiten angepasst werden. Dazu wird die alte Boot-Partition ausgehängt.
1 |
sudo umount /boot |
Dann wird das neue Verzeichnis /boot/firmware erstellt.
1 |
sudo mkdir /boot/firmware |
Jetzt bearbeitet man die Partitionstabelle:
1 |
sudo nano /etc/fstab |
Hier wird der Eintrag der Bootpartition entsprechend eingetragen. Bei mir sieht das so aus:
Die Datei wird wieder mit Ctr + o gespeichert und der Editor mit Ctr + x verlassen. Damit die Änderungen wirksam werden, wird systemd neu geladen
1 |
sudo systemctl daemon-reload |
und die neue Boot-Partition gemountet.
1 |
sudo mount /boot/firmware |
Bootloader und Kernel
Im Nachgang werden die aktuelle Firmware und der aktuelle Kernel für das Raspberry Pi OS 12 (Bookworm) installiert
1 |
sudo apt install raspi-firmware linux-image-rpi-v8 |
und der alte Bootloader und Linux-Kernel entfernt.
1 |
sudo apt remove raspberrypi-kernel raspberrypi-bootloader |
Ist dies geschehen, müssen die Paketquellen nochmalig mit
1 |
sudo apt update |
eingelesen werden.
Upgrade
Nun kann das eigentlich Upgrade durchgeführt werden. Hierbei stoppt der Vorgang bei den wichtigsten Konfigurationsdateien. Diese werden in der Regel alle beibehalten.
1 |
sudo apt full-upgrade |
System aufräumen
Nun wird das System noch aufgeräumt.
1 2 |
sudo apt autoremove sudo apt clean |
Neustart
Nach dem Neustart
1 |
sudo reboot now |
sollte nun das aktuelle Raspberry Pi OS 12 laufen. Das installierte Betriebssystem lässt man sich mit
1 |
cat /etc/os-release |
anzeigen.
1 2 3 4 5 6 7 8 9 |
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)" NAME="Debian GNU/Linux" VERSION_ID="12" VERSION="12 (bookworm)" VERSION_CODENAME=bookworm ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" |
Mit
1 |
uname -a |
kann man nun den aktuellen Kernel checken. Meine Ausgabe sieht wie folgt aus:
1 |
Linux nextcloud 6.6.20+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.20-1+rpt1 (2024-03-07) aarch64 GNU/Linux |
(„nextcloud“ in dieser Zeile ist der Hostname)
Abschließend sei darauf hingewiesen, dass das Upgrade einige Gefahren in sich birgt. Bitte vorher unbedingt an ein Backup denken, was im Bedarfsfall wieder eingespielt werden kann!
Noch zu erwähnen
Eingangs des Artikels hatte ich erwähnt, dass es Weiteres zu beachten gibt. Durch das Upgrade wurden die Einstellungen des Dienstes zu meinem Turn-Server zurück gesetzt. Ein funktionierender Turn-Server ist wichtig, um reibungslosen Verlauf in Videokonferenzen zu ermöglichen.
Wer also wie ich eine Nextcloud auf dem Raspberry Pi installiert hat und bisher meinen Anleitungen gefolgt ist, muss den zeitverzögerten Start des Turnservers, wie im Artikel „coTurn zeitverzögert auf Raspberry Pi starten“ beschrieben, wieder neu konfigurieren. Dazu editiert man die Datei /lib/systemd/system/coturn.service:
1 |
sudo nano /lib/systemd/system/coturn.service |
Nun fügt man den folgenden Eintrag unter [Service] ein und speichert die Änderung mit Ctlr + o.
1 |
ExecStartPre=/bin/sleep 30 |
Den Editor verlässt man dann wieder mit Ctrl + x. Durch den Eintrag wird nun eine Verzögerung von 30 Sekunden erzwungen. Mit
1 |
sudo service coturn restart |
wird der Turnserver zeitverzögert neu gestartet. jetzt arbeitet coTURN nach dem nächsten Reboot des Raspberry Pi wie gewünscht.
Viel Erfolg!
Hallo Frank und alle,
die Anpassung des Startverhaltens von coturn mit „ExecStartPre=/bin/sleep 30“ kann auch so erfolgen, dass sie ein Paket-Update des Turn-Servers und selbst ein dist-upgrade übersteht, da die Anpassung in /etc vorgenommen wird.
systemd hat dazu das Konzept der Drop-in Files entwickelt: eine Config-Datei wird im passenden Verzeichnis innerhalb /etc/systemd/ platziert und enthält nur die Direktiven, welche im ursprünglichen Unit-File ergänzt oder überschrieben werden sollen. Für deinen Anwendungsfall wäre das Vorgehen:
sudo systemctl edit coturn.service
Dann öffnet sich ein Editor-Fenster, welches im obersten Abschnitt ungefähr so aussieht:
——————————————————————————-
### Editing /etc/systemd/system/coturn.service.d/override.conf
### Anything between here and the comment below will become the new contents of the file
[Service]
ExecStartPre=/bin/sleep 30
### Lines below this comment will be discarded
### /lib/systemd/system/coturn.service
——————————————————————————-
Ich habe die zusätzliche Zeile „ExecStartPre=/bin/sleep 30“ schon eingefügt.
Die Datei im Editor wird wie üblich gespeichert und der Editor wird geschlossen.
Das eigentlich notwendige Kommando „sudo systemctl daemon-reload“ wird bei dieser Vorgehensweise im Hintergrund ausgeführt.
Beim nächsten Start von coturn.service wird nun die Pause von 30 Sekunden eingelegt.
Hallo Matthias,
danke für den wertvollen Hinweis. Das ist natürlich die perfekte Lösung, um coTURN zeitversetzt so zu starten, dass der Turn-Server die Konfiguration auch nach einem Upgrade noch behält.
[…] lösen. Leider überstand aber dieser Eingriff kein Systemupgrade. Durch einen sehr hilfreichen Kommentar von Matthias, kann ich nun eine bessere Lösung […]