Raspberry Pi mit Debian einrichten

Experteninfo

Wer sich mit Debian etwas auskennt, kann diese Seite nutzen und sich die Komanndos anpassen.

Was wird gebraucht?

Die Beispiele, die ich hier angebe, beziehen sich auf einem Computer mit einem Debian-System bzw. dessen Devirate (Ubuntu, Linux Mint, etc.). Wir benötigen hier lediglich ein Terminal / eine Konsole. Natürlich kann man auch ein anderes Betriebssystem und dessen Programme nutzen, um die Speicherkarte zu erstellen und eine SSH-Verbindung, z.Bsp. mit Putty, zu nutzen.

Zum Inhalt

Download

Da Raspberry Pi kein BIOS oder ähnliches in gewohnter Form besitzt, können wir hier kein USB-Stick anschließen und von diesem booten, um dann ein Installationsprogramm auszuführen.

Deshalb nutzen wir ein vorgefertigtes Image (Speichermediumabbild) von der Debian-Gemeinschaft, welches wir auf die Micro-SD-Karte schreiben. Wir erhalten so ein fertig installiertes aber wirklich minimales Grundsystem.

Solche Images stehen auf der Seite https://raspi.debian.net/tested-images/ zum Herunterladen zur Verfügung. Man wählt ein entsprechendes Image für sein Modell aus.

Es sollte auch die sha256sum heruntergeladen werden, mit dieser können wir prüfen, ob beim Download alles geklappt hat.

Die jenigen, die ein stabiles System wünschen, sollten sich für die ältere Debian-Version (derzeit Debian 11 , Bullseye) entscheiden, da diese als stable eingestuft ist. Neuere Versionen befinden sich noch im testing-Status und können (mehr) Fehler beinhalten.

Nach dem Download sollten wir erst mal überprüfen, ob dieser auch fehlerfrei ist. Auf einem Debiansystem kann man das mit folgenden Anweisungen tun:

cd ~/Downloads/
ls
sha256sum -c NAME.img.xz.sha256

Nun müssen wir das Image entpacken:

xz -d NAME.img.xz

Zum Inhalt

SD-Karte schreiben

Nun ist es an der Zeit, das Image auf die Karte zu bekommen.

Hinweis für Debian-Nutzer: Da oft die tollsten Programme (z.Bsp. UnetBootIn) installiert werden, um ein Image auf eine Speicherkarte oder einem USB-Stick zu bekommen, kommt von mir eine kleine Anmerkung vorne weg. Wir brauchen NICHTS weiter.

Wir müssen sicher wissen, wie wir die Speicherkarte ansprechen können. Wir lassen diese ausgesteckt und führen folgende Anweisung aus:

lsblk

Nun stecken wir die Speicherkarte ein OHNE sie einzuhängen, warten ein paar Sekunden und führen erneut die Anweisung aus:

lsblk

An den Änderungen der Ausgabe erkennt man, dass etwas hinzugekommen ist. Als Beispiel nehme ich sdx. Die angelegten Partitionen interessieren nicht. Es werden alle Daten überschrieben.

Wenn Ihr Euch sicher seid, welcher Eintrag zur Speicherkarte gehört, können wir das Image auf die Speicherkarte kopieren:

sudo cp NAME.img /dev/sdx
sudo sync

Bitte nicht sowas wie /dev/sdx1 verwenden. Wir überschreiben die gesamte Speicherkarte mit Root-Rechte.

Mittels

lsblk

können wir sehen, dass sich nun auf der Speicherkarte 2 Partitionen befinden.

Zum Inhalt

Vor dem ersten Start

Normalerweise könnten wir nun die Speicherkarte im Raspberry Pi unterbringen, Monitor und USB-Tastatur anschließen und das Gerät in Betrieb nehmen.

Aber wir wollen ja mittels SSH auf das Gerät zugreifen, deshalb sind weitere Schritte vorab notwendig, um auf das Gerät zugreifen zu können.

Wir benötigen einen Gerätenamen und ein Passwort, um per SSH auf das Gerät zugreifen zu können.

Wählt bitte erst mal ein Passwort ohne y, z, Umlaute und ß sowie Sonderzeichen wie = + - : ; ! * # ~ usw. Nach dem ersten Start haben wir noch keinen deutschen Zeichensatz und keine deutsche Tastatureingabe.

Auf der kleineren Partition befindet sich die Datei sysconfig.txt, wo wir entsprechende Daten eintragen. Das ganze sollte dann etwa so aussehen:

# This file will be automatically evaluated and installed at next boot
# time, and regenerated (to avoid leaking passwords and such information).
#
# To force it to be evaluated immediately, you can run (as root):
#
#     /usr/local/sbin/rpi-set-sysconf
#
# You can disable the file evaluation by disabling the rpi-set-sysconf
# service in systemd:
#
#     systemctl disable rpi-set-sysconf
#
# Comments (all portions of a line following a '#' character) are
# ignored. This file is read line by line. Valid
# configuration lines are of the form 'key=value'. Whitespace around
# 'key' and 'value' is ignored. This file will be _regenerated_ every
# time it is evaluated.
#
# We follow the convention to indent with one space comments, and
# leave no space to indicate the line is an example that could be
# uncommented.

# root_pw - Set a password for the root user (by default, it allows
# for a passwordless login)
root_pw=MEIN_GEHEIMES_ROOT_PASSWORT

# root_authorized_key - Set an authorized key for a root ssh login
#root_authorized_key=

# hostname - Set the system hostname.
hostname=raspi001

Hinweis: Beim Hochfahren des Raspberry Pis wird diese Datei gelesen, entsprechende Parameter gesetzt und anschließend wieder in den Ursprungszustand geändert. Diese Datei sysconfig.txt gilt also nur für den nächsten Start des Systems.

Eine WLAN-Verbindung mit dem Heimnetz wäre auch nicht schlecht, sonst können wir ja nicht zugreifen.

Auf der großen Partition befindet sich die Datei /etc/network/interfaces.d/wlan0, wo wir unsere WLAN-Daten eintragen. Hierzu sind Root-Rechte erforderlich. Beispiel:

# To enable wireless networking, uncomment the following lines and –naturally–
# replace with your network's details.
#
allow-hotplug wlan0
iface wlan0 inet dhcp
    wpa-ssid UNSERE_NETZWERK_SSID
    wpa-psk DAS_GEHEIME_WLAN_PASSWORT

Es gibt noch ein Problem. Standardmäßig darf man nicht als Root mit Passwort per SSH zugreifen. Wir müssen das aber. Deshalb ändern wir die Datei /etc/ssh/sshd_config folgenden Eintrag:

#PermitRootLogin prohibit-password
PermitRootLogin yes

Nun können wir die Partitionen der Micro-SD-Karte aushängen. Karte entnehmen und am Raspberry Pi einstecken.

Zum Inhalt

Erster Start im Blindflug

Der erste Start dauert in der Regel mehrere Minuten. Und wir sehen gar nichts. Hier ist Geduld gefragt.

Es wird ein minimales System geladen. Danach wird die große Partition der SD-Karte auf das Maximum der verfügbaren Kapazität vergrößert, was etwas dauert. Anschließend erfolgt automatisch ein Neustart.

Nun wird unser eigentliches System geladen.

Bis das System aus dem Netzwerk erreichbar ist, kann es noch einige weitere Minuten dauern. Wer Erfahrungen hat, kann das Gerät ab und zu anpingen oder im Router nachschauen, ob es sich angemeldet hat.

Haben wir alles richtig gemacht, sollte es aber nach 15 Minuten soweit sein.

Nun versuchen wir mal mit unserem Computer, uns auf dem Raspberry Pi anzumelden. In diesem Beispiel wäre das:

ssh root@raspi001

Werden wir nun nach einem Passwort auf Englisch gefragt, hat alles geklappt. Wir geben nun im Blindflug MEIN_GEHEIMES_ROOT_PASSWORT ein. Nach einigen Sekunden sollten wir einen Prompt erhalten und können etwas eingeben.

Es läuft nun ein minimales Debian-System auf dem Raspberry Pi. Wir müssen uns noch weitere Sachen anpassen, damit wir vernünftig, damit arbeiten können.

Alle Anweisungen bis auf ssh, die auf dieser Seite folgen, werden auf dem Raspberry Pi ausgeführt.

Zum Inhalt

System nach Neustart einstellen

System aktualisieren

Grundsätzlich empfehle ich als erstes, das System auf aktuellen Stand zu bringen, damit kein Troubleshooting entsteht. Dazu nutzen wir folgende Anweisungen:

apt update
apt full-upgrade

Meist werden Sicherheitsaktualisierungen beim Kernel mit installiert, weshalb ein Neustart sinnvoll ist.

shutdown -r now

Konsole einstellen

Standardmäßig denkt das System, dass wir englisch sprechen. Andere Sprachen kennt das System nicht. Es gibt nur eine englische Tastatur und wohnen tun wir in der Nähe von London.

Man benötigt nun einige Softwarepackete, um alles so einzustellen, wie man es haben möchte. Damit das meiste automatisch passiert, kann man folgendes nutzen:

apt install console-setup locales

Nach der Installation sollte die deutsche Tastaturbelegung aktiviert sein.

Zum Inhalt

Sprachdaten einstellen

Hier gibt es das Chaos weltweit mit der Schrift. Die Deutschen benutzen Ä, Ö, Ü, ß. In Skandinavien findet man Zeichen wie Ø oder Æ. Andere Länder setzen einen Haken auf den Buchstaben. Dann gibt es das kyrillische Alphabet. Und in China schreibt man die Zeichen von rechts nach links.

Deshalb kann man dem System mitteilen, welche Sprachen benutzt werden sollen.

Um die Sprachdaten einzustellen, nutzt man:

dpkg-reconfigure locales

Viele Debian-Nutzer wie ich auch, die Netzwerkdienste betreiben, nutzen meist de_DE.UTF-8 UTF-8. Ich empfehle, alle anderen Formate zu deaktivieren.

Nach Durchlauf der Prozedur sollte nun das System mit uns deutsch sprechen.

Zum Inhalt

Zeitzone einstellen

Führt man

date

aus, stellt man fest, das die Uhrzeit in UTC angezeigt wird. Grund dafür ist, das noch keine Zeitzone bekannt ist. Einstellen kann man diese mit

dpkg-reconfigure tzdata

und anschließend mit

date

überprüfen.

Zum Inhalt

Tastaturbelegung einstellen

Hinweis: Oft ist dieser Schritt nicht notwendig, da console-setup dies eigentlich erledigen sollte. Meldet Euch erst mal ab und erneut an. Prüft dann Eure Tastatureingaben mit ä, ö, ü, ß etc.

Manchmal kann es passieren, dass die Sonderzeichen nicht passen. Standardzeichen werden als eine Zahl (char, character) zwischen 0x00 und 0xff (0 - 255) übergeben. Sonderzeichen werden als wchar (wide character) übergeben. Das Ü wäre z.Bsp. 0xc39c (50076). Deshalb muss das System wissen, wie es mit solchen Zahlen umzugehen hat.

Normalerweise kann man das mittels

dpkg-reconfigurekeyboard-configuration

einstellen. Es kann sein, dass ein Neustart erforderlich ist, um die Änderung zu übernehmen.

Zum Inhalt

Schluss mit Dauer-Root

Nun haben wir ein System, mit dem wir arbeiten können. Allerdings können wir uns nur als root anmelden.

Das ist sicherheitstechnisch ein Problem und kann bei kleinen Fehleingaben das System zerstören. Und das wollen wir nicht.

Deshalb sollte man sich selbst als Benutzer anlegen:

adduser klaus

Soll der Benutzer Klaus auch mal was am System verändern dürfen (Software installieren, konfigurieren), benötigen wir dazu das Packet sudo.

apt install sudo

Damit Klaus das auch dann darf, müssen wir Klaus der Gruppe sudo hinzufügen:

adduser klaus sudo

Nun ist der Punkt gekommen, wo wir den Dauer-root-Zustand beenden sollten. Deshalb meldet man sich mit

exit

oder der Tastenkombination STRG d ab. Anschließend kann man sich als Klaus anmelden (auf dem Computer ausführen):

ssh klaus@raspi001

Um das Gerät vor ungewollten Root-Zugriffen zu schützen, sollte die Datei mittels sudo nano /etc/ssh/sshd.config nochmal wie folgt geändert werden.

#PermitRootLogin prohibit-password
PermitRootLogin no

Damit diese Änderung wirksam werden, muss der Dienst sshd neu gestartet werden. Ich empfehle, das gesamte System neu zu starten, da sonst manchmal Probleme mit erneuten SSH-Verbindungen auftraten.

sudo shutdown -r now

Danach sollte man sich abmelden und neu anmelden. Ein Anmelden mittels

ssh root@raspi001

sollte nun nicht mehr möglich sein. Man kann sich nur noch als Benutzer anmelden.

Das Root-Passwort hatte bisher keine Sonderzeichen wegen fehlender Tastatureinstellung. Wer es ändern möchte, kann das nun tun.

sudo passwd

sysconfig.txt deaktivieren

Könnte das Gerät inklusive Speicherkarte in andere Händen gelangen, haben wir ein Sicherheitsproblem.

Die andere Person könnte in der Datei sysconfig.txt ein neues Root-Passwort eintragen und würde Zugriff auf alle Daten erlangen.

Damit das nicht passieren kann, nutzt man die Anweisung:

sudo systemctl disable rpi-set-sysconf

Nun interessiert dem System die Datei sysconfig.txt nicht mehr, egal, was auch immer darin steht.

So, jetzt ist aber wirklich Schluss mit root und sudo.

Zum Inhalt

Systeminformationen anzeigen

Was haben wir nun?
Wir haben einen Computer, der etwas größer als eine Streichholzschachtel ist. Darauf läuft ein Betriebssystem, was auch Benutzerverwaltung, damit Daten schützen, Netzwerk im WLAN kann und mit uns deutsch spricht.

Das Raspberry Pi Zero W hat nur eine CPU imt 1 GHz, 500 MB RAM und die eingesteckte Speicherkarte hat ja auch nur 16 GB. Ist da jetzt noch Luft für anderes?

Uns interessiert erst mal, wie viel Speicherplatz wir auf der SD-Karte nun noch zur Verfügung haben. Das erfährt man mit:

df -h

Und wie sieht es denn mit dem RAM aus?

free -h

Wie sind denn die Netzwerkverbindungsdaten?

ip addr

Und CPU-Belastungen?

top -d 8

Das Programm top wird mit der Taste q beendet.

Ein großes Thema ist die CPU-Temperatur. Hierüber haben wir uns bisher noch keine Gedanken gemacht. Es befindet sich kein Kühlkörper auf der CPU, andere Computer haben Lüfter und Wärmeleitsysteme.

Wie ist denn die aktuelle CPU-Temperatur?

cat /sys/class/thermal/thermal_zone0/temp

So erfährt man einen ungefähren Wert in m°C (Milligrad Celsius). Im Dauerbetrieb sollte eine Temperatur über 75°C vermieden werden. Kurzzeitig geht auch mal 90°C. Im Leerlauf sind Temperaturen zwischen 40 und 50°C normal.

Ich denke mal, wir haben nun ein solides Grundsystem. Jetzt liegt es an uns, dem System was zu tun zu geben. Die Möglichkeiten sind unzählig.

Zum Inhalt