Betriebssystem
Damit auf dem Raspi irgendetwas läuft, muss ein Betriebssystem auf die Micro-SD Karte. Ich erledige das meist in einem Terminal an einem Linux-PC. Wenn der Name der SD-Karte unbekannt ist kann er mit dem Kommando "lsblk" herausgefunden werden. Wichtig ist dabei darauf zu achten, dass nicht das Systemlaufwerk angebegen wird oder die Partition statt des SD-Karten-Geräts. Bei mir ist es z.B. "/dev/sdb" (Nicht /dev/sdb1 !). Da bei mir eh kein Monitor angeschlossen wird kommt bei mir Raspberry Pi OS Lite zum Einsatz, also ohne Desktop und für mich unnötiger Software.
wget https://downloads.raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2022-09-26/2022-09-22-raspios-bullseye-armhf-lite.img.xz
xz -dc 2022-09-22-raspios-bullseye-armhf-lite.img.xz | sudo dd of=/dev/sdb bs=4M status=progress
sync
Ihr könnt natürlich auch den Raspberry Pi Imager oder Etcher nehmen.
Der Raspi soll im normalen Betrieb ohne Bildschirm (Headless) betrieben werden, deswegen möchte ich auch zum Einrichten kein Monitor anschließen. Auf der SD-Karte wurden beim kopieren des Images auf die SD-Karte zwei Partitionen angelegt. Dies kann man sich mit folgendem Kommando anzeigen lassen :
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdb 8:16 1 7,4G 0 disk
├─sdb1 8:17 1 256M 0 part /media/<username>/boot
└─sdb2 8:18 1 3,7G 0 part /media/<username>/rootfs
Bei <username> wird natürlich euer Name stehen. Zu beachten ist auch, egal wie groß die SD-Karte ist, die Summe der beiden Partitionen wird nicht der Größe der SD-Karte entsprechen. Ich verwende z.B. eine 32 GB SD-Karte. Beim ersten Start des RasPi wird die "rootfs"-Partition auf die vergrößert.
Die "boot"-Partition enthält ein FAT-Dateisystem. Darauf kann man auch ohne Probleme von aus Windows zugreifen.
SSH
Zugriff auf den RasPi bekommt man über das Netzwerk per SSH. Aus Sicherheitsgründen ist dies standardmäßig deaktiviert. Bei einer Headless-Installation aktiviert man SSH in dem man eine leere Datei mit dem Namen "ssh" in "boot" anlegt.
touch /media/<username>/boot/ssh
WLAN
Soll der RasPi per Kabel / Ethernet angeschlossen werden kann dieser Absatz übersprungen werden.
Für den Zugriff auf den Raspi per WLAN müssen ihm die Zugangsdaten des Access Points mitgeteilt werden. Dazu muss die Datei "wpa_supplicant.conf" in "boot" mit folgendem Inhalt angelegt werden :
nano /media/<username>/boot/wpa_supplicant.conf
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="dein SSID-Name"
psk="Passwort"
}
Wenn es gewünscht ist, könnten auch mehrere SSID / Passwort Paare angegeben werden.
LAN mit fester IP
Standardmäßig holt sich der RasPi vom DHCP-Server eine dynamische IP-Adresse. Soll er aber eine feste IP-Adresse wird dies in der Datei "/etc/dhcpcd.conf" auf der "rootfs"-Partition erledigt. In dieser Datei gibt es schon die dafür zuständigen Zeilen. Diese müssen nur auskommentiert werden und evtl. die IP-Adressen geändert werden.
#Example static IP configuration:
interface eth0
static ip_address=192.168.1.20/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
Hostname
Für den Zugriff auf den RasPi wird das SSH-Protokoll benutzt aber es muss auch noch das Ziel der Daten angegeben werden. Die kann die dynamische oder feste IP-Adresse sein oder der Hostname. Gerade wenn dynamische IP-Adressen zur Anwendung kömmen müsste man sie erst relativ aufwendig heraus suchen. Da ist es sehr praktisch wenn man ihn per Hostnamen ansprechen kann. Standardmäßig hat der RasPi den Namen "raspberrypi". Das ist natürlich schlecht, wenn mehrere RasPis im Netzwerk vorhanden sind. In der Datei "/etc/hostname" kann ein selbstgewählter Name eingegeben werden.
Der eben gewählte Hostname muss nun nur noch in die Datei "/etc/hosts" für die Namensauflösung eingetragen werden, wie im Beispiel unten mit dem Hostnamen "myraspi".
#Host addresses
127.0.0.1 localhost
127.0.1.1 lubuntu22-vm
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters127.0.0.1 myraspi
Benutzer
Aus Sicherheitsgründen ist seit einiger Zeit kein Standardbenutzer "pi" angelegt. Mit dem anlegen einer "userconf.txt"-Datei in der "boot"-Partition können wir selbst einen Benutzer vorgeben. In dieser Datei wird der Benuter im Schema "username:password" angegeben. Zuerst muss ein Hash des Passworts mit folgendem Kommando erzeugt werden :
openssl passwd -6
Man wird danach zur eingage des Passworts und zur Wiederholung des selben aufgefordert. Der ausgegebene Hash muss dann zusammen mit Benutzernamen in die "userconf.txt"-Datei eingetragen werden. Der Inhalt der Datei sollte dann so ähnlich aussehen (den Hash habe ich hier gekürzt) :
username:$6$CEJK1tjYEa...
Login per SSH
Nun sollte es möglich sein sich mit dem RasPi zu verbinden :
ssh username@192.168.1.20
oder
ssh username@myhostname
Alle weiteren Einstellungen usw. können dann per Fernsteuerung vorgenommen werden.