Wer sich mit Debian etwas auskennt, kann diese Seite nutzen und sich die Komanndos anpassen.
Was wird gebraucht?
Raspberry-Pi-Model
Netzteil, ich empfehle, ein Raspberry-Pi-Netzteil (5.1 V) zu nutzen
Micro-SD-Karte, 16 GB sollten bei weitem reichen
Ein Heimnetzwerk mit WLAN
Ein Computer der in der Lage ist, Micro-SD-Karten zu beschreiben, und der einen SSH-Client als Software besitzt
Zeit und Interesse
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.
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 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.
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:
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.
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.
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.
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.
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.
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.