c't 11/2021
S. 132
Praxis
Raspberry Pi einrichten
Bild: Albert Hulm

Raspi-Schnellstart

Raspberry Pi superschnell einrichten durch Vorkonfiguration

Einschalten und wohlfühlen: Über ein verstecktes Menü geben Sie Ihrem Raspi schon vor dem ersten Hochfahren alle wichtigen Einstellungen mit auf den Weg, einschließlich der WLAN-Konfiguration. So ist der Raspi sofort startklar.

Von Ronald Eikenberg

Die Ersteinrichtung eines Raspis haben wir schon oft beschrieben. Und doch gibt es einen weiteren Artikel dazu: Denn durch eine Änderung am offiziellen Image-Tool „Raspberry Pi Imager“ geht das jetzt leichter denn je von der Hand, da man die wichtigsten Einstellungen nun direkt mit auf die SD-Karte schreiben kann, von der der Raspi booten soll. So verbindet sich der Raspi schon beim ersten Start mit Ihrem WLAN und nimmt per SSH Befehle entgegen. Die passende Tastaturbelegung ist auch schon eingestellt und das unsichere Standardpasswort „raspberry“ geändert. Sie können direkt loslegen. Wer häufiger neue Raspis in Betrieb nimmt, kann so richtig viel Zeit sparen – und Einsteiger kommen leichter ans Ziel.

Der Raspberry Pi Imager bespielt SD-Karten mit dem Betriebssystem.

Das offizielle Imager-Tool der Raspberry Pi Foundation hat im Wesentlichen einen Zweck und diesen erfüllt es mit Bravour: Es schreibt Betriebssystem-Images auf SD-Karten, und zwar genau so, dass sie vom Raspi gebootet werden können. Um diesen Prozess so einfach wie möglich zu gestalten, bietet der Imager neben dem Standardbetriebssystem „Raspberry Pi OS“ eine Auswahl weiterer Images an, etwa die genügsame Lite-Variante ohne grafische Oberfläche, LibreELEC für den Einsatz als Medienabspieler und RetroPie, das den Raspi in eine Retro-Spielekonsole verwandelt. Die Images lädt das Tool bei Bedarf automatisch aus dem Internet nach. Zudem kann man eigene Images wählen oder die SD-Karte einfach nur FAT32-formatieren, falls sie nach dem Einsatz im Raspi wieder einem anderen Zweck dienen soll.

Bisher fing die Arbeit nach dem Beschreiben der Speicherkarte jedoch erst an: Je nachdem, welche Aufgabe der vielseitige Mini-PC erfüllen sollte, waren einige weitere Schritte nötig, um ihn betriebsbereit zu machen; etwa die Einrichtung von WLAN und SSH-Server, das Ändern des Passworts für den „pi“-User und die Wahl von Tastaturlayout und Zeitzone. All das ist nicht sehr kompliziert, jedoch etwas fummelig. Und es kostet Zeit. Mit der kürzlich veröffentlichten Version 1.6.1 des Raspberry Pi Imager fällt das alles flach, denn das Tool schreibt die wichtigsten Einstellungen auf Wunsch gleich mit auf die SD-Karte. Sie müssen lediglich einmalig die gewünschten Vorgaben einstellen und können anschließend beliebig viele SD-Karten damit bespielen. So können Sie nicht nur für sich selbst, sondern auch für Familie und Freunde individuelle Raspis vorbereiten, die vom ersten Start an ohne weitere Handgriffe einsetzbar sind.

Es stehen diverse Images zur Auswahl, etwa für den Einsatz als Desktop-PC, Medienabspieler oder Spielekonsole.

Installieren Sie zunächst die aktuelle Version des Raspberry Pi Imager für Windows, macOS oder Linux (siehe ct.de/y6mw). Mit dem Befehl sudo apt install rpi-imager können Sie es gar auf einem Raspi installieren, um SD-Karten für andere Raspis an den Start zu bringen. Falls Sie das ausprobieren möchten und Ihren Raspi von einer SD-Karte booten, benötigen Sie hierfür einen externen SD-Kartenleser, da Sie die Speicherkarte mit dem laufenden Betriebssystem nicht entfernen sollten.

Nach dem Programmstart klicken Sie links auf „OS wählen“, um das gewünschte Betriebssystem zu selektieren. Wenn Sie den Raspi wie einen Desktop-PC mit Monitor, Maus und Tastatur nutzen möchten, dann wählen Sie ganz oben „Raspberry Pi OS (32-bit)“ aus, für den Einsatz als Server ohne Monitor eignet sich das ressourcenschonende „Raspberry Pi OS Lite (32-bit)“, das Sie unter „Raspberry Pi OS (other)“ finden. Zahlreiche weitere Images wie Ubuntu oder für den Einsatz als Medienabspieler oder 3D-Drucker stehen ebenfalls zur Auswahl. Haben Sie eine Wahl getroffen, legen Sie im Hauptfenster über den Knopf „SD-Karte wählen“ fest, wohin das Image geschrieben werden soll. Beachten Sie, dass der Zieldatenträger komplett überschrieben wird.

Die erweiterten ­Optionen sind gut versteckt und nur per Tastenkombination erreichbar. Hierüber kann man dem Raspi viele wichtige Einstellungen wie WLAN-Konfiguration und Tastaturlayout mit auf den Weg geben, wodurch er sofort einsatzbereit ist.

Magische Tasten

Damit sind die Möglichkeiten der grafischen Oberfläche schon fast ausgereizt. Sie fragen sich jetzt vermutlich – zu Recht – wo Sie die Voreinstellungen tätigen können, die Ihnen dieser Artikel versprochen hat. Die erweiterten Optionen erreichen Sie derzeit ausschließlich über die „magische Tastenkombination“ (Originalzitat der Entwickler) Strg+Umschalt+X.

Die Tastenkombination öffnet eine lange Liste mit allem, was das Herz begehrt. Zunächst stellen Sie ganz oben unter „OS-Modifizierungen“ ein, ob Sie die Einstellungen nur einmalig („Nur für diese Sitzung“) oder dauerhaft („Immer verwenden“) mit auf die SD-Karte schreiben möchten. Die erste Option „Overscan deaktivieren“ ist dann interessant, wenn Sie einen Monitor an Ihren Raspi anschließen wollen: Sie schalten damit den schwarzen Rahmen ab, der standardmäßig rund um das ausgegebene Bildsignal angezeigt wird. Dieser soll garantieren, dass sämtliche Inhalte auf allen Bildschirmen angezeigt werden. Das ist insbesondere bei alten Röhrenmonitoren und -TVs relevant, bei modernen Displays hingegen können Sie auf den Trauerrand verzichten.

Darunter legen Sie mit „Hostname“ einen individuellen Hostnamen fest. Standardmäßig horcht der Raspi auf den Namen „raspberrypi“, beim Einsatz mehrerer Raspis im gleichen Netz führt das jedoch schnell zu Verwirrung. Legen Sie am besten einen einsatzbezogenen Namen fest, etwa „raspi-smarthome“, „raspi-­server“ oder raspi-kodi“. Wenn Sie Ihren Raspberry übers Netzwerk steuern möchten, dann wollen Sie wahrscheinlich „SSH aktivieren“ über das gleichnamige Häkchen, um den SSH-Server dauerhaft auf dem Standardport 22 zu aktivieren.

Standardmäßig ist auf dem System ein Nutzer „pi“ mit dem Passwort „raspberry“ eingerichtet, was natürlich alles andere als sicher ist, weil das jeder kennt. Sie sollten daher unter „Password zur Authentifizierung verwenden“ ein individuelles Passwort vorgeben. Selbst wenn Sie dieses Passwort für alle Ihre Raspis nutzen, ist das allemal sicherer als das vorgegebene Standardpasswort.

Login ohne Passwort

Wenn Sie auf Nummer sicher gehen wollen, dann nutzen Sie unterschiedliche Passwörter, wenn Sie mehrere Raspis betreiben. Noch besser ist die darunter­liegende Option „Authentifizierung via Public-­Key“. Damit fragt der Raspi nicht länger nach einem Passwort und Sie nehmen Angreifern somit die Chance, Ihr Passwort zu erraten. Zur Authentifizierung wird stattdessen ein Krypto-Schlüsselpaar genutzt, dessen geheimen Schlüssel nur Sie besitzen. Der öffentliche Schlüssel muss im Raspi hinterlegt sein, damit die Anmeldung funktioniert.

Mit dem Imager-Tool ist das besonders einfach: Kopieren Sie den Inhalt der Schlüsseldatei (Public Key, der Dateiname lautet etwa „id_rsa.pub“) in das Feld „authorized_keys für 'pi'“. Falls das Public-Key-Verfahren neu für Sie ist und Sie Starthilfe benötigen, finden Sie in der offiziellen Raspberry-Dokumentation eine Anleitung, die erklärt, wie Sie mit ssh-keygen ein geeignetes Schlüsselpaar generieren (siehe ct.de/y6mw). Bei der Public-Key-Authentifizierung haben Sie die Wahl zwischen maximalem Komfort und maximaler Sicherheit: Wenn Sie beim Erstellen des Schlüsselpaars kein Passwort für den privaten Schlüssel setzen, dann können Sie sich auch ganz ohne Passwort am Raspi anmelden, solange sich der private Schlüssel auf Ihrem Rechner befindet, mit dem Sie die Verbindung herstellen. Für maximale Sicherheit können Sie den privaten Schlüssel mit einem Passwort verschlüsseln. Sie müssen ihn in diesem Fall vor der Nutzung durch die Passworteingabe entschlüsseln.

Aber zurück zum Raspi-Imager und seinen erweiterten Optionen. Deren Möglichkeiten sind nämlich noch längst nicht ausgereizt. Nachdem Sie sich um die Authentifizierung gekümmert haben, können Sie Ihrem Raspi gleich darunter bei „Wifi einrichten“ eine WLAN-Konfiguration mit auf den Weg geben. Dies haben die Entwickler besonders charmant gelöst: Der Raspi-Imager versucht selbstständig die Daten der gerade genutzten WLAN-Verbindung einzutragen, einschließlich des Passworts. Auf unserem Windows-System hat das auf Anhieb geklappt. Falls sich der Raspi mit einem anderen Netz verbinden soll, dann geben Sie Netzwerknamen und Passwort einfach von Hand ein.

Sie müssen unter dem Passwortfeld bei „Wifi-Land“ noch den Ländercode Ihres aktuellen Aufenthaltsorts einstellen (etwa „DE“ für Deutschland), damit der Raspi auch auf den jeweils erlaubten Frequenzen funkt. Beachten Sie bei der WLAN-Konfiguration, dass sich die Raspis erst ab dem Raspberry Pi 3 Model B+ mit 5-GHz-Netzen verbinden können. Bezieht sich also die durch das Tool vorbefüllte WLAN-Konfiguration auf ein 5-GHz-Netz, wird sich ein älteres Raspi-Modell nicht damit verbinden können. Falls Sie Ihren Raspi per Netzwerkkabel verbinden möchten, können Sie sich die WLAN-Einstellungen sparen. In diesem Fall sind keine weiteren Schritte nötig, um den Raspi ins Netz zu hieven.

Tastaturlayout einstellen

Weiter unten können Sie Ihren Raspi über die „Spracheinstellungen“ mit der passenden Zeitzone (in hiesigen Gefilden „Europe/Berlin“) sowie dem gewünschten Tastaturlayout (etwa „de“ für Deutsch) impfen. Darunter können Sie über „Einrichtungsassistent überspringen“ noch den grafischen Konfigurationshelfer piwiz aus dem Weg räumen, der sich möglicherweise beim ersten Start Ihres Raspi-Images zu Wort meldet. Er fragt im Wesentlichen die gleichen Einstellungen ab, die Sie gerade getätigt haben und ist somit potenziell überflüssig. Ist dieser in Ihrem Image nicht als Autostart eingerichtet, hat dieses Häkchen keine Auswirkungen – Sie machen damit aber auch nichts kaputt.

Der plappernde Einrichtungsassistent piwiz wird über­flüssig, wenn man die Einstellungen gleich mit auf die SD-­Karte schreibt.

Am unteren Rand der Einstellungen finden Sie bei „Dauerhafte Einstellungen“ noch drei Häkchen, die sich nur auf Imager-Tool selbst beziehen: Sie können ein Tonsignal abspielen lassen, wenn die SD-Karte fertig ist und das Tool zudem anweisen, die SD-Karte nach dem Bespielen auszuwerfen, damit Sie die Karte angstfrei aus dem Speicherkartenleser ziehen können. Ist „Telemetrie aktivieren“ eingeschaltet, dann fließen Ihre Image-­Downloads in die öffentlich einsehbare Statistik ein (siehe ct.de/y6mw). Wenig überraschend machen dort derzeit die verschiedenen Raspbian-Editionen den Löwenanteil aus, allerdings hat auch Ubuntu auf dem Raspi mit 15 Prozent Anteil an Beliebtheit gewonnen.

Image schreiben

Nach getaner Arbeit schließen Sie die erweiterten Einstellungen über „Speichern“, anschließend klicken Sie auf „Schreiben“, um das Image samt Voreinstellungen auf die zuvor gewählte Speicherkarte zu befördern. Das Schreiben dauert einige Minuten, abhängig von der Geschwindigkeit der Speicherkarte und des Lesers. Bei der darauffolgenden Verifizierung überprüft der Imager, ob der Schreibvorgang fehlerfrei war. Dies dauert weitere Minuten. Falls Sie mal in Eile sind – und ein gesundes Grundvertrauen gegenüber Speicherkarte und Leser mitbringen – können Sie die Verifizierung auch abbrechen, um etwas Zeit zu sparen. Anschließend wartet der Raspi-­Imager, bis die FAT32-Partition der Speicherkarte vom Betriebssystem gemountet wurde und schreibt dort schließlich die Voreinstellungen hinein.

Nach dem Schreiben stecken Sie die Speicherkarte wie gewohnt in den Raspi und versorgen ihn anschließend mit Strom. Er wird jetzt mit der gewünschten Konfiguration booten. Haben Sie etwa WLAN und den SSH-Server eingerichtet, können Sie kurz darauf ohne weitere Handgriffe übers Netzwerk auf den Raspi zugreifen. Beachten Sie, dass der erste Start des Raspi-Betriebssystem stets etwas länger dauert, weil der Raspi noch ein paar Dinge erledigen muss, etwa die Anpassung der Partitionstabelle samt eines daran anschließenden Neustarts. Erst danach ist der SSH-Server erreichbar.

Ist der Raspi schließlich betriebs­bereit, sollten Sie das System noch auf den aktuellen Stand bringen, um von sämt­lichen verfügbaren Bugfixes und Sicherheits-Patches zu profitieren. Tippen Sie hierfür einfach die folgenden Befehle ein:

sudo apt update
sudo apt full-upgrade -y

Fall Sie einen Bildschirm angeschlossen haben, müssen Sie zuvor das Terminal starten (schwarze Box in der Menüleiste am oberen Bildschirmrand). Die Aktualisierung nimmt je nach Alter des Images, Raspi-Generation und Internetanbindung einige Zeit in Anspruch.

Blick hinter die Kulissen

Das Imager-Tool kürzt die Inbetriebnahme der Raspis erheblich ab und man gewöhnt sich schnell an den Komfort. Aber was passiert da hinter den Kulissen? Wer schon dem ein oder anderen Raspi auf die Füße geholfen hat, der hat vermutlich mitbekommen, dass man bestimmte Dinge über die FAT32-formatierte boot-Partition der SD-Karte einstellen kann.

Liegt hier eine Datei namens „ssh“, dann aktiviert das Raspberry-OS den SSH-Server und löscht die Datei anschließend. Auch eine WLAN-Konfiguration in Form einer wpa_supplicant.conf-Datei saugt der Raspi auf diese Weise auf. Unsere erste Vermutung war, dass der Imager einfach diese Mechanismen nutzt, um die Einstellungen auf der SD-Karte zu platzieren. Doch es gibt nicht für alle der angebotenen Voreinstellungen eine Automatik im Betriebssystem.

Eine weitere Möglichkeit wäre, die Linux-Partition zu modifizieren, doch dies wäre insbesondere unter Windows aufwendig, da es mit ext4-Partitionen nichts anfangen kann. Ein Blick auf die fertige SD-Karte löste das Rätsel recht schnell: Auf der boot-Partition befinden sich zwei Dateien, die neuer als alle anderen sind: cmdline.txt und firstrun.sh. In cmdline.txt sorgt der Eintrag systemd.run=/boot/firstrun.sh offenbar dafür, dass das Bash-Skript firstrun.sh beim Booten aufgeführt wird. Im Erfolgsfall ist ein Neustart vorgesehen: sys­temd.run_success_action=reboot

Die gesamte Magie steckt in dem Bash-Skript. Es ist gut lesbar und emsig bemüht, die Konfigurationswünsche des Raspi-Besitzers in die Tat umzusetzen. Los geht es mit der Änderung des Host­namens, sofern eingestellt:

CURRENT_HOSTNAME=`cat /etc/hostname | tr -d " \t\n\r"`
echo raspi-smarthome >/etc/hostname
sed -i "s/127.0.1.1.*$CURRENT_HOSTNAME/127.0.1.1\traspi-smarthome/g" /etc/host

Das Skript fragt zunächst den aktuellen Hostnamen über cat /etc/hostname ab und merkt sich diesen in der Variable CURRENT_HOSTNAME. Danach schreibt es den neuen Namen, in diesem Beispiel raspi-smartphone, in /etc/hostname und ersetzt mit sed in /etc/host den alten durch den neuen. Das ist etwas komplizierter als nötig, dafür aber universell: Da zunächst der ­bisherige Hostname abgefragt wird, kann das Skript den Hostnamen auch dann ersetzen, wenn im Image ein anderer als raspberrypi vorgegeben ist. Dies ist bei Spezial-Images für Smart-­Home-Anwendungen, Spieleemulation et cetera häufig der Fall. Den SSH-Server aktiviert das Skript recht unspektakulär über systemctl enable ssh. Interessanter wird da schon wieder die WLAN-Einrichtung:

cat >/etc/wpa_supplicant/wpa_supplicant.conf <<WPAEOF
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
ap_scan=1

update_config=1
network={
   ssid="WLAN-Name"
   psk="WLAN-Passwort"
}

WPAEOF

chmod 600 /etc/wpa_supplicant/wpa_supplicant.conf
...

Das Skript schreibt die WLAN-Konfiguration mit cat in die Datei /etc/wpa_supplicant/wpa_supplicant.conf und setzt anschließend mit chmod die passenden Zugriffsrechte. Es fällt auf, dass das WLAN-­Passwort im Klartext geschrieben wird, dies ist jedoch ein vertretbares Sicherheitsrisiko: Wer physischen Zugriff auf den Router oder einen der angemeldeten Clients hat, der kann es mit einer guten Wahrscheinlichkeit ohnehin im Klartext auslesen. Das neue Nutzerpasswort für den „pi“-User steht hingegen nur als Hash in dem Einrichtungsskript.

Dem Einrichtungsassistenten piwiz macht das Skript den Garaus, indem es die Autostart-Datei löscht:

rm -f /etc/xdg/autostart/piwiz.desktop

Ist die Datei nicht vorhanden, scheitert der Löschversuch schlicht. Es ist interessant und lehrreich, welche Lösungen die Entwickler des Raspi-Imagers gefunden haben und welche Bash-Tricks konkret zum Einsatz kommen. Aktivieren Sie doch einmal alle erweiterten Optionen und inspizieren Sie die daraus resultierende Datei /boot/firstrun.sh direkt nach dem Beschreiben der Speicherkarte.

Selbstzerstörung

Die letzte Amtshandlung des Skripts ist übrigens die Selbstzerstörung, anschließend entfernt es den Verweis auf sich selbst in cmdline.txt:

rm -f /boot/firstrun.sh
sed -i 's| systemd.run.*||g' /boot/cmdline.txt

So ist gewährleistet, dass das Skript nur einmalig beim ersten Start und nicht auch noch bei jedem Neustart ausgeführt wird.

Raum für Experimente

Der eingesetzte Mechanismus über das Startskript regt zu eigenen Experimenten an. Wer mit der Bash vertraut ist, kann das Skript leicht um weitere, individuell nötige Einrichtungsaufgaben ergänzen. Das Risiko hält sich in Grenzen: Da der Raspi ohnehin neu eingerichtet wird, steht nicht viel auf dem Spiel. Wenn das System nicht startet, unternimmt man einfach mit einem korrigierten Skript einen neuen Anlauf. Zur Fehlersuche können Sie in der Datei /boot/cmdline.txt behutsam den Befehl quiet entfernen, um die Kernelnachrichten beim Hochfahren live mitverfolgen zu können. In der Datei /var/log/boot.log können Sie den Bootvorgang zudem in aller Ruhe nachvollziehen.

Die Bash-Befehle können Sie vorher leicht auf einem bereits lauffähigen Test-­Raspi ausprobieren. Führen die Befehle zum gewünschten Erfolg, können Sie Ihr Glück mit der Datei firstrun.sh versuchen. Wenn Sie häufig neue Raspis in Betrieb nehmen, kann Ihnen das viel Zeit sparen, da die Rechner auf Anhieb und ohne weitere Einrichtungsschritte so funktionieren, wie Sie es gerne hätten. Beachten Sie, dass während der Einrichtung möglicherweise noch nicht alle Ressourcen wie gewohnt zur Verfügung stehen, so etwa die Netzwerkverbindung über WLAN.

Wurde der Raspi über den Imager vorkonfiguriert, können Sie beim ersten Start direkt lossurfen.

firstrun.sh statt Image

Eine weitere naheliegende Möglichkeit, den Raspi möglichst schnell in einen betriebsbereiten Zustand zu bringen, wäre, ihn wie gewohnt komplett einzurichten und anschließend ein Image von der Speicherkarte zu ziehen, das bei weiteren Einrichtungen einfach komplett auf die neue Karte geschrieben wird. Dies hat jedoch mehr als einen entscheidenden Nachteil: Das Betriebssystem wird auf einem alten Stand eingefroren. Zudem überspringen Sie mit dem Einsatz eines solchen ­Komplettabbilds die automatische Einrichtung, die dafür sorgt, dass die Partitionstabelle passend zur Speicherkarte geändert wird und individuelle Krypto-­Schlüssel generiert werden. Bei der Konfiguration per Startskript können Sie das Betriebssystem-Image hingegen jederzeit durch eine aktuelle Version oder gar eine andere Variante austauschen, solange sich die zu ändernden Ressourcen noch an denselben Stellen befinden. Auch spätere Konfigurationsänderungen sind so einfach möglich. (rei@ct.de)

Raspi-Imager, SSH-Einrichtung und mehr: ct.de/y6mw

Kommentare lesen (4 Beiträge)