Ich muss gerade einen meine Raspberry Pis neu aufsetzen. Den mit den Raumklimasensoren. Schuld daran ist ein fehlgeschlagenes Update. Also ein Backup gezogen, ein aktuelles OS-image geladen, das image entpackt, und auf die Karte kopiert:
$ sudo dd if=2025-12-04-raspios-trixie-arm64-lite.img of=/dev/mmcblk0 bs=32M
89+0 records in
89+0 records out
2986344448 bytes (3.0 GB, 2.8 GiB) copied, 9.68393 s, 308 MB/s
Wunderbar. Nur… ich habe keine Tastatur, keine Maus, keinen Bildschirm für das Ding. Ich habe es bisher auch immer headless aufgesetzt. Kein Problem. Ich muss nur irgendwelche Konfigurationsdateien an die richtige Stelle legen, oder? Wie war das noch gleich. Mal eine Internetsuche machen.
Die Ergebnisse sind furchtbar. Alle wollen, dass ich mir irgendein komisches UI-Tool herunterlade, um die SD-Karte zu beschreiben und die Einstellungen zu machen. Aber ich will doch nur die Wifi-Einstellungen, SSH aktivieren, einen public key hinterlegen und die SSH-Config anpassen. Macht das doch nicht komplizierter, als es ist.
Ich weiß noch, dass da irgendwelche magischen Dateien waren, die man an die richtigen Stellen legen musste. Aber welche, und wohin? Da, endlich ein aktuelles Suchergebnis (von 2026), das mir sagt, wohin ich die Datei legen muss, und was drinstehen muss:
Create a new text (.txt) document on your computer, similar to the image below, under the SD Card storage section.
Ok, aber auf der SD-Karte sind zwei Partitionen, die erste, die Bootpartition ('bootfs' laut Gnome) und die zweite, mit dem ganzen Rest (rootfs). Also auf welche muss es? Ist nicht genannt. Aber da ist ein „Screenshot“. Und damit meine ich, dass jemand den Bildschirm abfotografiert hat, auf dem ein Dateimanager geöffnet ist, anhand dessen ich darauf schließen kann, welche Partition gemeint ist. Und dann faselt die Anleitung auch noch irgendwas davon, mit über vscode SSH zu benutzen. Ich würde ein LLM vermuten, aber ein LLM hätte einen besseren Screenshot gemacht.
Ich habe die Schnauze voll. Ich verlinke nicht auf den Artikel. Ich schreibe jetzt meine eigene Anleitung. With Blackjack! And Hookers! Hauptsächlich, damit ich das beim nächsten Aufsetzen eines Raspberry Pis hier wieder nachschlagen kann.
Die Anleitung
Schritt 1: Image herunterladen und aufspielen
Richtiges Image auf der Raspberry-Pi-Seite herunterladen. Dann entpacken (xz -d) und aufspielen (aufpassen, dass man das richtige Gerät für die SD-Karte nimmt:
sudo dd if=2025-12-04-raspios-trixie-arm64-lite.img of=/dev/mmcblk0 bs=32M
Keine Ahnung, ob 32M als block size vernünftig ist, aber irgendwann wird das fertig.
Schritt 2: WLAN-Konfiguration
Hier ist es schwieriger als früher. Früher konnte man einfach eine passende wpa_supplicant.conf.txt (fragt mich nicht, warum da noch ein .txt am Ende ist, ich weiß es wiklich nicht) in der Boot-Partition ablegen, der Pi hat dan den Rest gemacht. Das stand auch in der oben erwähnten Müll-Anleitung. Tatsächlich findet man jetzt aber auf der offiziellen headless-Installationsanleitung (die für mich auch nutzlos ist, weil sie auf diesem UI-tool basiert) folgenden Hinweis:
Previous versions of Raspberry Pi OS made use of a
wpa_supplicant.conffile, which could be placed into the boot folder to configure wireless network settings. This functionality isn’t available from Raspberry Pi OS Bookworm onwards.
Danke für den Hinweis. Ich habe auch nicht gerade eine Stunde damit verplempert herauszufinden, warum sich das Teil nicht verbindet. Aber man kann das WLAN ja noch anders konfigurieren. Aber im Ernst: vergesst es.
Ich habe es lange genug versucht. Die WLAN-Konfiguration selber ist noch harmlos. Aber dann muss man noch das WLAN-country setzen (aus regulatorischen Gründen, ich vermute mal es geht darum, welche Frequenzen erlaubt sind). Dieser Artikel einer Informatikerin hat mir sehr weitergeholfen zu verstehen, wie der ganze Krams über die UI konfiguriert wird (der einzige brauchbare Artikel übrigens. Die Autorin hat die Autoconfig auseinandergenommen um zu sehen, wie sie funktionier. Darauf aufbauend konnte ich dann tiefer graben).
Aber wenn man meint, das gesetzt zu haben, ist das WLAN-Modul immer noch durch rfkill blockiert, und um das zu entsperren muss man… naja, ich dachte ich hätte einen Weg, der /var/lib/systemd/rfkill/platform-3f300000.mmcnr\:wlan und ein Kommandozeilenparameter für den Kernel beinhaltete, aber das hat nicht funktioniert.
Die viel einfachere Lösung: Schließt den Pi per Kabel ans Netzwerk an, startet ihn, logged euch ein und konfiguriert das WLAN-Country und das WLAN dann mit raspi-config. Christ on a stick!
Schritt 3: SSH-Konfiguration
Zuerst eine magische Datei in der Boot-Partition (erste Parition, bootfs) anlegen:
touch ssh
Die ist magisch, die braucht keinen Inhalt. Die ist nur dafür da, damit der Pi SSH startet, was er nicht per default macht, weil das gefährlich ist. Und weil das gefährlich ist, müssen wir das absichern. Das geht auf der anderen Partition, rootfs. Dort, wie gewohnt, den eigenen öffentlichen SSH-Schlüssel in /home/pi/.ssh/authorized_keys eintragen.
Dann etc/ssh/sshd_config bearbeiten. Wichtige Zeilen:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
PasswordAuthentication no
Diese Zeilen sind per default auskommentiert, PasswordAuthentication sollte man auf no setzen. Niemals SSH mit password authentication!
Schritt 4: Benutzerkonfiguration
Und dann booten und… nicht? Keine Verbindung? Früher konnte man immer darauf verlassen, dass es den Benutzer pi gab. Den gibt es augenscheinlich immer noch, allerdings blockt der Raspberry Pi und meldet sich nicht im Netzwerk an. Es fehlt noch ein Benutzer.
Also noch eine Datei, userconf.txt auf bootfs anlegen. Dort muss dann eine Zeile sein:
pi:<password>
Wobei pi irgendein Benutzername sein kann und <password> ein SHA512-gehashtes Passwort, das kann man mit openssl passwd -6 erzeugen. Ich habe einfach ein sehr langes, zufälliges Passwort gewählt, das man unmöglich raten und das ich mir noch unmöglicher merken kann. Aber ich muss es mir ja nicht merken, ich will mich ja mit meinem SSH-Key anmelden. Fun Fact: Das sudo-Password ist immer noch nicht gesetzt, dafür brauche ich das Passwort also auch nicht.
Schritt 5: Andere Kleinigkeiten
Man kann auch noch /etc/hostname anpassen, um den Hostname des Raspberry Pis zu ändern.
Schritt 6: Booten
Nach dem Booten das Übliche an Raspi-Konfiguration machen (sudo raspiconfig), dann die üblichen Verdächtigen installieren, Daemons beschwören, yadda yadda… Was man halt mit dem Pi so machen will.
Fazit
Meine Güte, haben die es schwierig gemacht, den Raspberry Pi headless aufzusetzen. Über die Jahre wurde es immer schwieriger. Zunächst konnte man noch sagen: Ok, das ist ein Sicherheitsfeature (SSH ist standardmäßig deaktiviert). Aber dass der Pi nicht einmal mehr fertig bootet, wenn man keinen Benutzer angelegt hat, oder dass es praktisch unmöglich ist, das WLAN zu konfigurieren… das ist echt Kacke. Es ist einfach alles grundlos viel komplexer gemacht worden. Ich will doch nur meinen Pi.
Ach ja, und der mittlerweile nicht mehr ganz neue Pi gerät gelegentlich in Bootschleifen. Vermutlich hat das was mit der SD-Karten-Halterung zu tun. Sehr unpraktisch, wenn man das Ding headless startet und nie sicher sein kann, dass es dieses Mal dann endlich korrekt bootet.
Ich bin jetzt am Ende meiner Nerven, aber der Pi läuft. Mal sehen, ob ich zumindest noch schnell die Datenerfassung für das Raumklima wieder angeworfen kriege. Der Webserver zur Anzeige kann dann später kommen.

![Welcome to the Microsoft 365 Copilot app – The Microsoft 365 Copilot app (formerly office) lets you […]](/file/copilot_formerly_office.webp)








![Grand Trunk – Der Beginn | nomis | Grand Trunk ist eine Installation. Mit Hilfe von Technik kann eine optische Nachricht vo einem Punkt zum anderen Geschickt werden. Optisch bedeutet, dass etwas sichtbar ist. Diese Technik nennt man Optische Telegrafie. Das gibt es schon seit sehr langem. Hier werden Klappen als optisches Signal benutzt Die Installation ist inspiriert von einer Fantasy Buchreihe[sic]. Die Buchreihe sind die Scheibenwelt-Romane vom Autor Terry Pratchett.](/file/39c3_grosser_strang.webp)


