Raspberry Pi: Unterschied zwischen den Versionen
fg>WikiSysop |
K (1 Version importiert) |
(kein Unterschied)
|
Version vom 7. Oktober 2020, 16:02 Uhr
Dieser Artikel erhebt keinen Anspruch auf Vollständigkeit. Ich dokumentiere hier nur meine eigenen Erfahrungen. Es wird beschrieben, wie man ohne einen Monitor an den Raspberry PI anzuschließen, auf diesem die Linux Distribution Raspbian installieren kann.
- Achtung: Bitte bedenken, dass durch Unachtsamkeit bzw. mangelhaftes Verständnis der Zusammenhänge Schaden angerichtet werden kann.
Raspbian installieren
Raspbian ist ein Betriebssystem für den Raspberry PI auf Debian Basis.
- Download des Raspbian Image
wget https://downloads.raspberrypi.org/raspbian_latest
- ZIP Datei entpacken
unzip raspbian_latest
Die Datei wird entpackt als
# Beispiel 2017-03-02-raspbian-jessie.img
- Image auf SD Speicherkarte kopieren
Die Mini SD-Karte in den mitgelieferten SD-Adapter stecken und diesen in ein Kartenlesegerät einstecken.
- Den Namen der Gerätedatei ermitteln
fdisk -l
Wir sehen alle am Gerät angeschlossenen Datenträger, darunter sollte nun auch die SD-Karte sein. Das heruntergeladene Image auf die SD-Karte übertragen
- Achtung: Im folgenden Beispiel wird angenommen, dass die SD-Karte im System als /dev/sdd erkannt wurde, was wir der Ausgabe von
fdisk -l
entnommen haben.
dd if=./2017-03-02-raspbian-jessie.img of=/dev/sdd bs=4M
- Raspberry PI booten
Die SD-Karte in den Raspberry PI einstecken und dann den Raspberry PI mit dem Netzteil verbinden.
- Der Raspberry PI bootet und installiert auf der SD-Karte automatisch das Betriebssystem "Raspbian". Nach ca. 5 Minuten sollte das erledigt sein.
- Raspberry PI im LAN finden
Nun können wir testen, ob der Raspberry PI ordnungsgemäß hochgefahren ist, indem wir an unserem PC im LAN folgenden Befehl eingeben:
- Das Kommando bezieht sich auf ein LAN, in dem IP Adressen von 10.0.0.0 bis 10.0.0.254 möglich sind.
nmap -sP 10.0.0.0/24
Achtung: Unter Suse ist das Tool nmap nicht vorhanden, also installieren:
zypper install nmap
Wenn in der Ausgabe dieses Befehls drei Zeilen auftauchen, die dem Raspberry PI zuzuordnen sind, dann ist alles ok. Das könnte so aussehen:
Nmap scan report for 10.0.0.72 Host is up (0.00041s latency). MAC Address: B8:27:EB:D1:B9:20 (Raspberry Pi Foundation)
Folgendes Kommando testet, ob die IP wirklich erreichbar ist:
ping 10.0.0.72
Systemupgrade
apt update apt upgrade
SSH aktivieren
Wir brauchen SSH, um an den Raspberry PI heranzukommen.
- In neueren Versionen von Raspbian ist es notwendig, SSH explizit zu aktivieren. indem man in der Boot-Partition der SD eine leere Datei mit dem Namen ssh anlegt.
- Da wir den Raspberry PI jetzt noch nicht über SSH erreichen können, müssen wir die SD-Karte noch einmal herausnehmen und in den Kartenleser am PC einlegen. Wir sehen, dass es nun zwei Partitionen auf der SD-Karte gibt:
Gerät Boot Anfang Ende Sektoren Größe Kn Typ /dev/sdd1 8192 137215 129024 63M c W95 FAT32 (LBA) /dev/sdd2 137216 30375935 30238720 14,4G 83 Linux
Die FAT32 Partition, hier /dev/sdd1
ist die Boot Partition des Raspberry PI.
- Wir mounten diese Partition
mount /dev/sdd1 /mnt
Dann legen wir eine leere Datei mit dem Namen ssh an und hängen die Prtition wieder aus.
cd /mnt touch ssh umount /mnt
Nun nehmen wir die SD-Karte aus dem Kartenleser, stecken sie wieder in den Raspberry PI und schließen das Netzteil an.
- SSH Verbindung testen
Nach dem Booten sollte der Raspberry PI per SSH erreichbar sein - allerdings nicht als Benutzer root sondern nur als Benutzer pi.
ssh pi@10.0.0.72
Das Passwort des Benutzers pi lautet
raspberry
Passwort für Root
Aus Sicherheitsgründen ist auf Debian Systemen standardmäßig kein root-Passwort definiert - wie von Ubuntu her bekannt.
- Man kann aber trotzdem ein root-Passwort vergeben mit
sudo passwd root
SSH Verbindung als Root
- Authentifizierung über Schlüsselpaare
Will man den Raspberry PI als Benutzer root per SSH erreichen, sollte der Zugang nicht über ein Passwort sondern über Schlüsselpaare erfolgen.
- Folgender Artikel beschreibt, wie man SSH über Schlüsselpaare einrichtet: SSH.
- Authentifizierung über Passwort
Will man aber auch als root eine SSH Authentifizierung über Passwort, dann am Raspberry Pi die SSH Konfiguration ändern:
# /etc/ssh/sshd_config PasswordAuthentication yes # PermitRootLogin without-password usePAM no
- Im privaten LAN sollte das ja kein Problem darstellen.
Nun den SSH Server neu starten
systemctl restart ssh.service
Raspbian konfigurieren
Konfigurationstool
raspi-config
- Grafische Oberfläche abschalten
Bootoptionen | Desktop/CLI | Console
Statische IP Adresse
In den meisten Fällen wird es sinnvoll sein, dem Raspberry PI eine statische IP Adresse zu geben.
- Zur statischen IPv4-Konfiguration öffnet man die Datei /etc/dhcpcd.conf.
sudo pico /etc/dhcpcd.conf
In meinem Beispiel bekommt der Raspberry PI die Adresse 10.0.0.111
- Achtung: Die Adresse sollte nicht im AdressPool des DHCP Servers liegen.
Folgendes in diese Datei am Ende hinzufügen:
interface eth0 static ip_address=10.0.0.111/24 static routers=10.0.0.138 static domain_name_servers=10.0.0.138
USB Festplatte automatisch in den Standby Modus versetzen
Falls man eine externe HD am Raspberry PI betreiben will und diese nur bei Bedarf eingeschaltet sein soll.
- hdparm installieren
sudo apt-get update sudo apt-get install hdparm
- Power Status der Festplatte überprüfen
Somit sehen wir, ob die Festplatte überhaupt geeignet ist für einen Standby Betrieb.
sudo hdparm -C /dev/sda
- Die UUID der Festplatte ermitteln
blkid
- Konfigurationsdatei bearbeiten
pico /etc/hdparm.conf
An das Ende dieser Datei folgendes einfügen:
# Beispiel UUID: f16aec5f-34a8-49fa-8356-ae0c39ca53e8 /dev/disk/by-uuid/f16aec5f-34a8-49fa-8356-ae0c39ca53e8 { spindown_time = 240 }
- Troubleshooting
Anscheinend wird der Standbymodus blockiert, wenn die USB Festplatte über den Automounter eingebunden wurde. Schuld daran ist die grafische Oberfläche Lxde.
- Workaraund: Mit raspi-config in den Bootoptionen die GUI deaktivieren - siehe weiter oben im Kapitel Konfiguration.
- Info
https://linuxundich.de/hardware/festplatten-automatisch-im-betrieb-in-den-standby-schalten/
- Standbymodus manuell einschalten
Falls aus irgendeinem Grund die Fesplatte nicht automatisch in den Standbymodus geht, kann man per cronjob
folgenden Befehl aufrufen:
hdparm -y /dev/sda
SWAP auf USB Festplatte
SWAP als Datei
pico /etc/dphys-swapfile
SWAP file nicht auf SD Card legen sondern auf USB-Festplatte, hier eingehängt unter /media/disk
CONF_SWAPFILE=/media/disk CONF_SWAPFACTOR=2
SWAP aktivieren
service dphys-swapfile start
SWAP Partition
Sicherheitshalber dphys-swapfile deinstallieren:
sudo dphys-swapfile swapoff sudo dphys-swapfile uninstall sudo update-rc.d dphys-swapfile remove
Dann SWAP Partition in /etc/fstab eintragen
/dev/sda3 swap swap defaults 0 0
Troubles
- Swap verhindert Standby der Festplatte
Folgendes in ein Wartungsscript eintragen bzw. in die crontab
# Beispiel UUID swapoff UUID="d6bc7fb3-6bab-45f1-b65d-3cd264751665" swapon UUID="d6bc7fb3-6bab-45f1-b65d-3cd264751665"
WLAN aktivieren
Der Raspberry PI 3 hat einen WLAN Netzwerkadapter eingebaut.
- Überprüfen, welche Netzwerke erreichbar sind
iwlist wlan0 scan | grep ESSID
- Zugangsdaten für Netzwerk(e) hinterlegen
pico /etc/wpa_supplicant/wpa_supplicant.conf
Am Ende dieser Datei SSID und Passwort eintragen
network={ ssid="TestNetzwerk" psk="Mein1SuperGeheimesPasswort!" }
- Energiesparmodus deaktivieren
pico /etc/network/interfaces
Folgende zwei Zeilen am Ende der Datei einfügen:
pre-up iw dev wlan0 set power_save off post-down iw dev wlan0 set power_save on
- WLAN Adapter starten
ifdown wlan0 ifup wlan0
- WLAN deaktivieren
Falls man WLAN doch nicht braucht, dann kann man den Adapter nach jedem Bootvorgang deaktivieren, indem man einen Cronjob definiert
crontab -e
Folgendes in die Cron Tabelle eintragen
@reboot sudo ifdown wlan0
Filesystem reparieren nach Reboot
Das Dateisystem auf der SD Karte kann in Unordnung geraten. Da man es im laufenden Betrieb nicht reparieren kann, ist es sinnvoll, dies nach einem Reboot zu automatisieren. Damit das Dateisystem überprüft wird, muss folgende Option beim Start als Kernel-Parameter übergeben werden:
fsck.mode=force
Diese Kernel Option kann man hinzufügen zu den Kernel Parametern in folgender Datei:
/boot/cmdline.txt
- Alle Optionen müssen in einer Zeile stehen!
Beim nächsten Reboot wird nun ein Dateisystem Check durchgeführt.
Achtung
Bei einer großen (externen) Festplatte kann der Filesystem Check lange dauern. Da man ohne Monitor nichts sieht, könnte man glauben, der Rechner bootet nicht ...
MTA installieren
Wir brauchen einen Mailserver, damit uns der Rapberry PI mitteilen kann, was sich so tut in seinem Inneren.
- Als Mail Transfer Agent verwenden wir exim4.
Eine Anleitung zu Installation und Konfiguration findet sich hier: Exim
HTTP Server installieren
apt-get update apt-get install apache2
In Debian-Systemen ist die Document Root des Servers
/var/www/html
ServerName eintragen
# /etc/apache2/sites-available/000-default.conf ServerName myraspi.mydomain
- Server starten
service apache2 start
Datenbankserver Mysql installieren
apt-get update apt-get install mysql-server
PhpMyAdmin installieren
apt-get update apt-get install phpmyadmin
Apache2 Direktive hinzufügen:
# /etc/apache2/apache2.conf Include /etc/phpmyadmin/apache.conf
Backup des Raspberry PI
Image der SD Karte
In folgenden Beispielen wird angenommen, dass die SD-Karte als /dev/sdd erkannt wurde.
- SD Card aus dem Raspi herausnehmen und mittels Kartenlesegerät mit dem PC verbinden.
- Image der SD Karte am PC sichern.
dd bs=4M if=/dev/sdd | gzip > /download/iso/raspbian.img.gz
- Gesichertes Image auf SD-Karte zurückkopieren
gunzip --stdout /download/iso/raspbian.img.gz | dd bs=4M of=/dev/sdd
Anpassungen nach dem Wiederherstellen
- HD Bezeichnungen anpassen
Mit blkid die Gerätebezeichnungen der USB Partitionen ermitteln und in /etc/fstab eintragen.
- Für die Gerätebezeichnungen unbedingt die UUID verwenden und nicht /dev/sdx
- Statische IP-Adresse ändern
pico /etc/dhcpcd.conf
- ID der USB Festplatte eintragen
pico /etc/hdparm.conf
Dies ist notwendig für den Standby Betrieb der Festplatte
- SSH Schlüssel an diverse Rechner verteilen
ssh-copy-id root@hostname
Dateien sichern mit Rsync
Dateien mit rsync bei laufendem Betrieb auf eine angeschlossene USB Festplatte sichern.
- Einfache Lösung, die jedoch nicht wirklich sicher ist
Troubleshooting
Permission Errors
/etc/cron.daily/man-db
Fehlermeldungen:
/usr/bin/mandb: fopen /var/cache/man/fsstnd/5179: Keine Berechtigung /usr/bin/mandb: fopen /var/cache/man/it/5179: Keine Berechtigung /usr/bin/mandb: fopen /var/cache/man/gl/5179: Keine Berechtigung ...
Lösung:
chown man /var/cache/man -R
Kein Reboot möglich
Nach Eingabe des Kommandos reboot
erscheint die Meldung
Failed to talk to init daemon
Lösung
sudo reboot -f