Raspberrypi
Aktuelles
- 12.03.2019 das Paket "raspi-copies-and-fills_0.8_armhf.deb" killed meinen Raspi Forschungsserver
https://archive.raspberrypi.org/debian/pool/main/r/raspi-copies-and-fills/
- 16.03.2019 in schneller Folge erschien .10 und .11
Der raspi-Superserver
- Bei einer Server-Infrastruktur im OrgaMon Umfeld nehme ich mir den Buchtitel "Algorithmen und Datenstrukturen (Niklaus Wirth)" zum Vorbild.
- Es gibt also nur 2 Elemente, Datenstrukturen liegen auf einem NAS, Algorithmen liegen auf einem Raspi
- Ein 3. Element kommt nur hinzu weil ein NAS nicht 100% sicher ist - ein Backup NAS
- Das NAS macht (wegen der Nähe zum Datenträger) immer auch Virtualisierungen und Datenbankserver, das sind die einzigen 2 "Dienste" von denen der Raspi befreit ist, alles andere muss er machen, der raspi-Superserver ist geboren
Vorteile
- Will man einen Dienst aufsetzen sind alle Aspekte darüber im Internet gut zu finden
- Die SD Karte stellt die Idenität des Servers dar, Problem? Backup-SD rein und weiter gehts!
- Die Software-Basis des Raspi wird excellent gewartet
- Die Software ist aktuell und sicher
- Die Leistungskraft reicht allemal aus
Dienste im Einzelnen
- raspberrypi.vsftpd
- raspberrypi.nginx
- raspberrypi.wiki
- raspberrypi.certbot
- raspberrypi.mail
- raspberrypi.rsync
- raspberrypi.dns
- raspberrypi.dhcp
Sonstige Dienste/Projekte
- raspberrypi.router
- raspberrypi.gateway
- raspberrypi.solar
- raspberrypi.schalter
- raspberrypi.sata
- raspberrypi.Lastschrift
- raspberrypi.md
- raspberrypi.led-md
- raspberrypi.osm-tile-server
... aber der Reihe nach ...
Inbetriebnahme "Headless"
SD-Karte erstellen
Kauf
- minimal sind 16 GByte für den normalen Betrieb notwendig, 8 ist etwas zu klein!
- Samsung Pro+ sind empfehlenswert gibts leider nur als 32 GByte (je grösser desto Wear-Levelling-Algorithmus- freundlicher!)
- die Samsung Pro+ wurde durch Pro Plus ersetzt
inzwischen benutze ich die Samsung endurance 32 GB- inzwischen benutze ich die Transcend 16GB High Endurance microSDXC/SDHC Speicherkarte TS16GUSDXC10V
Prüfen
- Test, ob die Speicherkarte einwandfrei funktioniert: mit https://www.heise.de/download/product/h2testw-50539
Image schreiben
- aktuelles Raspbian Image von https://www.raspberrypi.org/downloads/raspbian/ laden
- Empfohlen: Der Imager der Raspberry Pi Foundation
- Alternativ: dotNetDiskImager_0.7.347.27_Installer.exe: https://sourceforge.net/projects/dotnetdiskimager/files/bin/
- Alternativ: Win32DiskImager-0.9.5-install.exe : https://sourceforge.net/projects/win32diskimager/
- Alternativ auf dem Raspberry Pi mit einem microSD USB Adapter
- https://www.raspberrypi.org/documentation/installation/installing-images/linux.md
- dd bs=4M if=/srv/mnt/INSTALL/hardware/Raspberry-pi/2019-buster/2019-09-26-raspbian-buster-full.img of=/dev/sda conv=fsync status=progress
- danach Partition 1 der Karte mounten, z.B. nach /srv/mnt
- touch /srv/mnt/ssh
#!/bin/bash dd bs=4M if=2020-02-13-raspbian-buster-lite.img of=/dev/sda conv=fsync status=progress mount /dev/sda1 /srv/mnt touch /srv/mnt/ssh umount /srv/mnt
Image vorbereiten
- Es sollte die Partition "boot" erkennbar sein
- Es ist ein kleines Standard-File-System (ich glaube FAT) mit nur wenigen MByte
- Im Hauptverzeichnis legt man eine leere Datei "ssh" an
- den Raspi mit der SD-Karte versehen, ans Netzwerk anschliessen, für starke Stromversorgung (>2A) sorgen
- Nun bei deinem DHCP-Server-System ermitteln welche IP Adresse der RASPI gezogen hat
tail -2000 /var/log/messages | grep dhcp Mar 11 17:09:40 raib25 dhcpd: DHCPACK on 192.168.115.205 to b8:27:eb:8b:9b:0a (raspberrypi) via eth0
erster Start
- per ssh oder mit Putty als "pi" mit dem Passwort "raspberry" einloggen
- das Passwort des Users "pi" jetzt stark machen
passwd⏎
neues Passwort für pi setzen (altes ist "raspberry")
- das Passwort des Users "root" jetzt stark machen
sudo passwd
neues Passwort für root setzen (ein altes wird nicht abgefragt)
- nur dem User
root
den Login erlaubensudo apt update
sudo apt install joe
sudo joe /etc/ssh/sshd_config
PermitRootLogin yes
sicherstellen (die entsprechende Zeile muss ABGEÄNDERT werden)AllowUsers root
sicherstellen (NUR noch User "root" kann sich per ssh einloggen! Diese Zeile muss neu eingetragen werden)
sudo reboot
zweiter Start
- Jetzt mit ssh/Putty als "root" mit einem sehr starken Passwort einloggen
System-Update
apt update
apt upgrade
reboot
dritter Start
rpi-update
reboot
vierter Start
rpi-eeprom-update
Joe
- joe sollte keine Backup-Dateien angelegen, da dies bei virtuellen Host Konfigurationsdatei kontraproduktiv ist, neben einem host.conf hat man dann immer noch eine weitere Datei host.conf~ die beim Start des Webservers (nginx) als "echt" interprätiert wird.
joe /etc/joe/editorrc
-nocurdir Do not prompt with current directory -nobackups If you don't want backup files to be created -nodeadjoe If you don't want DEADJOE files to be created
dazu einfach das "-nobackups" Setting aktivieren indem man es ein Zeichen nach links zieht
Hostname setzen
- 2 Dateien müssen geändert werden
joe /etc/hosts joe /etc/hostname
Mal testen: Bekanntmachen des eigenen Namens im Netz: libnss-mdns
Zeitzone setzen
dpkg-reconfigure tzdata
locale setzen
dpkg-reconfigure locales
[*] de_DE.UTF8 UTF8
ankreuzen und OK- Das Standard-Locale soll aber en_uk irgendwas bleiben wie eingestellt <ENTER>
Generating locales (this might take a while)... de_DE.UTF-8... done en_GB.UTF-8... done Generation complete.
Tipps und Tricks
eigene MAC-Adressen
ip addr | grep ether | awk '{print $2}' | tr [a-z] [A-Z]
- 1. Zeile: LAN-MAC-Adresse
- 2. Zeile: WLAN-MAC-Adresse
eigene Seriennummer
vcgencmd otp_dump | grep 28: | sed s/.*://g
CPU Temperatur auslesen
vcgencmd measure_temp
Colorierter Prompt
Ermitteln der IP-Adresse eines frisch gestarteten RASPIs
- Ein Standard-Image meldet sich als host "raspberry" bei deinem DHCP-Server
- So kann man mit
tail -3000 /var/log/messages | grep DHCP | grep raspberry
- ermitteln wie die IP Adresse des Raspi ist
- Mit ssh nun einloggen
ssh pi@x.x.x.x # Passwort wird abgefragt, es ist "raspberry"
Die 100 MByte Swap-Bereich abschalten
swapoff -a
service dphys-swapfile stop
systemctl disable dphys-swapfile
SD-Karten-Platz sparen
- Erst möglich wenn das System läuft
- apt-get --purge remove epiphany-browser epiphany-browser-data libreoffice sonic-pi wolfram-engine
- apt-get autoremove
smb-Mount
systemctl enable systemd-networkd-wait-online.service
- /etc/systemd/system/srv-ftp.mount
[Unit] Description=srv-ftp [Mount] What=//192.168.115.25/web$ Where=/srv/ftp Type=cifs # # vers=1.0 muss gesetzt werden, wenn ein "älterer" Server # kontaktiert wird, wenn nicht, kommt die Fehlermeldung: # # mount error(112): Host is down # Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) # # im dmesg ist dann die Fehlermeldung: # [] No dialect specified on mount. Default has changed to a more secure dialect, SMB2.1 or later (e.g. SMB3), from CIFS (SMB1). To use the less secure SMB1 dialect to access old servers which do not support SMB3 (or SMB2.1) specify vers=1.0 on mount. # [] CIFS VFS: cifs_mount failed w/return code = -112 # # manuell kann nun mal mit # # mount -o vers=1.0 //raib25/i$ /srv/smb # # prüfen, ob es so funktioniert. Wenn ja: # # die Lösung: Options=guest,vers=1.0 [Install] WantedBy=remote-fs.target
- Seit der Raspi über WLAN angebunden war rauschte der Mount beim boot mit einer Fehlermeldung durch
Nov 13 16:04:17 pi3x06 kernel: [ 7.195956] CIFS VFS: Error connecting to socket. Aborting operation. Nov 13 16:04:17 pi3x06 kernel: [ 7.195986] CIFS VFS: cifs_mount failed w/return code = -101
- Ich habe obige .mount Unit "disabled" aber dafür eine zusätzliche .automount Unit geschrieben, und diese "enabled":
- /etc/systemd/system/srv-ftp.automount
[Unit] Description=srv-ftp [Automount] Where=/srv/ftp [Install] WantedBy=remote-fs.target
- das war die Lösung,, seither springt der .mount erst an, wenn der Benutzer zugreift!!
alter Client
- ein alter Client würde immer versuchen mit dem Protokoll 1.0 auf den Server zuzugreifen
- moderne Server lehen dieses Protokoll ab, es kommt ein Fehler
- die alten Clients können oft 2.0, 2.1 usw aber der default ist 1.0
- diese alten Clients muss man zwingen ein moderneres Protokoll zu verwenden, da der Server die Verbindung sonst ablehnt
mount -o vers=3.0 //raib25/i$ /srv/smb
- so gelingt der mount
Power Saving
Audio
- /boot/config.txt
# disable audio dtparam=audio=off
Bluetooth
- /boot/config.txt
# disable bluetooth dtoverlay=pi3-disable-bt
systemctl disable bluetooth.service
Wifi
- /boot/config.txt
# disable wifi dtoverlay=pi3-disable-wifi systemctl disable hciuart.service systemctl disable wpa_supplicant
HDMI
- HDMI kann man ausschalten
/opt/vc/bin/tvservice -o
Display-Connector
- keine Infos dazu gefunden
Kamera-Connector
- keine Infos dazu gefunden
USB
- keine Infos dazu gefunden
GPIO
- keine Infos dazu gefunden
Ohne grafisches System
- Verhindern dass die grafische Benutzeroberfläche gestartet wird
update-rc.d lightdm disable
sudo systemctl set-default multi-user.target
- UnDo this:
systemctl set-default graphical.target
- Nun ist der erste Headless Start möglich
System-Identifikation
# Welches Modell? # dmesg | grep Rasp # Welche MAC Adresse? # ifconfig | grep ether oder lshw | grep serial