{"id":686,"date":"2022-12-28T22:05:28","date_gmt":"2022-12-28T21:05:28","guid":{"rendered":"https:\/\/www.steve-meier.de\/?p=686"},"modified":"2022-12-28T22:05:28","modified_gmt":"2022-12-28T21:05:28","slug":"raspberry-pi-upgrade-9-10-11","status":"publish","type":"post","link":"https:\/\/www.steve-meier.de\/?p=686","title":{"rendered":"Raspberry Pi Upgrade: 9 -> 10 -> 11"},"content":{"rendered":"\n<p>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\u00fcr ist im Juni 2022 ausgelaufen, also war es h\u00f6chste Zeit.<\/p>\n\n\n\n<p>Wie vor jedem Upgrade ist ein Backup Pflicht. Das geht am Mac mit ein paar CLI-Tools flott. Zuerst suchen wir \u00fcber <code>diskutil<\/code> die passende SD-Karte. Die sieht, ja nach Gr\u00f6\u00dfe, ungef\u00e4hr so aus:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.steve-meier.de\/wp-content\/uploads\/2022\/12\/Bildschirmfoto-2022-12-28-um-17.52.09.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"185\" src=\"https:\/\/www.steve-meier.de\/wp-content\/uploads\/2022\/12\/Bildschirmfoto-2022-12-28-um-17.52.09-1024x185.png\" alt=\"\" class=\"wp-image-687\" srcset=\"https:\/\/www.steve-meier.de\/wp-content\/uploads\/2022\/12\/Bildschirmfoto-2022-12-28-um-17.52.09-1024x185.png 1024w, https:\/\/www.steve-meier.de\/wp-content\/uploads\/2022\/12\/Bildschirmfoto-2022-12-28-um-17.52.09-300x54.png 300w, https:\/\/www.steve-meier.de\/wp-content\/uploads\/2022\/12\/Bildschirmfoto-2022-12-28-um-17.52.09-768x139.png 768w, https:\/\/www.steve-meier.de\/wp-content\/uploads\/2022\/12\/Bildschirmfoto-2022-12-28-um-17.52.09-688x124.png 688w, https:\/\/www.steve-meier.de\/wp-content\/uploads\/2022\/12\/Bildschirmfoto-2022-12-28-um-17.52.09.png 1274w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>Um davon ein (komprimiertes) Image zu ziehen, bietet sich <code>dd<\/code> an. Viele Posts, die man dazu im Netz findet, machen aber zwei Fehler: sie verwenden <code>disk<\/code> statt <code>rdisk<\/code> und geben keine Puffergr\u00f6\u00dfe mit an, so dass die ineffiziente Voreinstellung von 512 Bytes greift. Ich verwende daher folgende Variante:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo dd if=\/dev\/rdisk4 bs=128k | gzip -f > raspberry_20221228.img<\/code><\/pre>\n\n\n\n<p>Um rauszufinden, wie schnell es vorw\u00e4rts geht, kann man Ctrl+t dr\u00fccken und enth\u00e4lt dann einen Zwischenstand.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Stretch auf Buster (9 -> 10)<\/h2>\n\n\n\n<p>Nachdem das Backup erfolgreich abgeschlossen ist, wird es Zeit f\u00fcr 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:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># apt update\n# apt dist-upgrade<\/code><\/pre>\n\n\n\n<p>Jetzt k\u00f6nnen wir die Paketquellen (in \/etc\/apt) auf die n\u00e4chste Version (Debian 10 a.k.a. Buster) umbiegen. Dazu ersetzen wir in den Dateien <code>\/etc\/apt\/sources.list<\/code> und <code>\/etc\/apt\/sources.list.d\/raspi.list<\/code> einfach das Wort &#8220;stretch&#8221; durch &#8220;buster&#8221;. Es sollte danach ungef\u00e4hr so aussehen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># cat \/etc\/apt\/sources.list\ndeb http:\/\/raspbian.raspberrypi.org\/raspbian\/ buster main contrib non-free rpi\n# Uncomment line below then 'apt-get update' to enable 'apt-get source'\n#deb-src http:\/\/raspbian.raspberrypi.org\/raspbian\/ buster main contrib non-free rpi<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># cat \/etc\/apt\/sources.list.d\/raspi.list\ndeb http:\/\/archive.raspberrypi.org\/debian\/ buster main ui\n# Uncomment line below then 'apt-get update' to enable 'apt-get source'\n#deb-src http:\/\/archive.raspberrypi.org\/debian\/ stretch main ui<\/code><\/pre>\n\n\n\n<p>Um das Upgrade zu beschleunigen, empfiehlt es sich, das Paket <code>apt-listchanges<\/code> zu entfernen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># apt remove apt-listchanges<\/code><\/pre>\n\n\n\n<p>Jetzt geht&#8217;s an&#8217;s Eingemachte: Mit <code>apt<\/code> holen wir uns zun\u00e4chst die neuen Paketinformationen und f\u00fchren dann ein Upgrade durch. Ich empfehle, dass Ganze in einer <code>screen<\/code>-Session zu machen, falls die Netzwerkverbindung unerwartet abrei\u00dft.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># screen\n# apt update\n# apt dist-upgrade<\/code><\/pre>\n\n\n\n<p>Nach dem, hoffentlich erfolgreichen, <code>dist-upgrade<\/code> fehlt nur noch ein Reboot, um das erste Upgrade abzuschlie\u00dfen.<\/p>\n\n\n\n<p>Empfohlen sind im Nachgang noch zwei Schritte: <code>autoremove<\/code> um nicht mehr ben\u00f6tigte Pakete zu l\u00f6schen und <code>autoclean<\/code> um die Paketdateien, die f\u00fcr nun nicht mehr ben\u00f6tigt werden, zu l\u00f6schen.<br>Mit <code>autoremove<\/code> sollte man allerdings vorsichtig sein. Auf meinem System hat es bspw. <code>rsync<\/code> deinstalliert, was ich schon gerne h\u00e4tte.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># apt autoremove\n# apt autoclean<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Buster zu Bullseye (10 -> 11)<\/h2>\n\n\n\n<p>In der zweiten Runde sind die Schritte \u00e4hnlich. Wir das Wort <code>buster<\/code> mit <code>bullseye<\/code> in den Dateien unter <code>\/etc\/apt\/<\/code> und dann kann es auch schon losgehen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># apt update<\/code><\/pre>\n\n\n\n<p>Hier tauchte allerdings schon der erste Fehler auf:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>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?)<\/code><\/pre>\n\n\n\n<p>Dieser l\u00e4sst sich einfach l\u00f6sen, indem man das Wort <code>ui<\/code> aus der Datei <code>\/etc\/apt\/sources.list.d\/raspi.list<\/code> l\u00f6scht. Dann geht es weiter:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># apt dist-upgrade<\/code><\/pre>\n\n\n\n<p>Bevor es an den Reboot geht, gibt es noch ein wichtiges Detail zu beachten. Mit Bullseye \u00e4ndert sich der Name des Ethernet-Interfaces. Hie\u00df es bisher schlicht <code>eth0<\/code>, so enth\u00e4lt der neue Name die MAC-Adresse.<\/p>\n\n\n\n<p>Hat euer Pi bspw. die MAC-Adresse a1:b2:c3:d4:e5:f6, so hei\u00dft wird aus <code>eth0<\/code> mit Bullseye <code>enxa1b2c3d4e5f6<\/code>, also der Pr\u00e4fix <code>enx<\/code> plus MAC-Adresse ohne Doppelpunkte.<\/p>\n\n\n\n<p>Diesen neuen Namen musste ich neben <code>\/etc\/network\/interfaces<\/code> auch in <code>\/etc\/ddclient.conf<\/code> eintragen, damit auch dieser Dienst weiterhin, wie vor der \u00c4nderung funktioniert.<\/p>\n\n\n\n<p>Wie das Buster-Upgrade, schlie\u00dfen wir auch dieses Upgrade mit einem kurzen, optionalen Aufr\u00e4umen ab:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># apt autoremove\n# apt autoclean<\/code><\/pre>\n\n\n\n<p>Fertig ist die Laube! <\/p>\n","protected":false},"excerpt":{"rendered":"<p>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&#8230;.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,7],"tags":[],"_links":{"self":[{"href":"https:\/\/www.steve-meier.de\/index.php?rest_route=\/wp\/v2\/posts\/686"}],"collection":[{"href":"https:\/\/www.steve-meier.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.steve-meier.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.steve-meier.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.steve-meier.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=686"}],"version-history":[{"count":7,"href":"https:\/\/www.steve-meier.de\/index.php?rest_route=\/wp\/v2\/posts\/686\/revisions"}],"predecessor-version":[{"id":694,"href":"https:\/\/www.steve-meier.de\/index.php?rest_route=\/wp\/v2\/posts\/686\/revisions\/694"}],"wp:attachment":[{"href":"https:\/\/www.steve-meier.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=686"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.steve-meier.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=686"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.steve-meier.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=686"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}