Raspberrypi

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen

Übersicht über aktuelle Projekte

Grundsätzliche Vorarbeiten für ein "Headless" System

Vorarbeiten

SD-Karte

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!)

Prüfen

Image brennen

Image vorbereiten

  • Es sollte die Partition "boot" erkannbar sein
  • Es ist ein kleines Standard-File-System (ich glaube FAT) mit nur wenigen MByte
  • Im Hauptverzeichnis legt man eine leere Datei "ssh" an

erster Start

"headless"

  • also ohne Anschluss von Monitor/Tastatur/Maus
  • Mit dieser SD-Karte nun starten, aber bitte nur einmal!
  • Nun bei deinem Server 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

mit "Monitor/Tastatur/Maus"

  • für die erste Konfiguration ist der Anschluss von Keyboard/Maus/Monitor notwendig. (im nächsten Kapitel eine M)
  • Terminal starten
  • sudo raspi-config
    • (4) Localization Options
      • Change Keyboard Layout
      • Generic 105-key (Intl) PC
      • ggf. Other ...
      • German - German (eliminate dead keys)
      • The default for the keyboard layout
      • No compose key
      • <No>
  • den ssh Dienst dauerhaft aktivieren
    • (5) Interfacing Options
      • SSH
      • Enable <YES>

zweiter Start

ssh Zugang nur für root

  • per Putty kann man sich direkt als User "pi" mit dem Passwort "raspberry" einloggen
  • Hat man mit Maus & Tastatur gestart einfach ein Terminal starten
  • 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)
  • nun dem User root den Login erlauben
    • sudo apt-get 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)
  • 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
    • sudo halt
    • Stromzufuhr entfernen
    • Keyboard und Maus ggf. entfernen
    • Neu starten durch Einstecken der Stromzufuhr

dritter Start

  • Nun sollte man sich schon als "root" per Putty einloggt haben

System-Update

  • Jetzt kann erstmalig ein Login per User "root" über die Netzwerkschnittstelle erfolgen.
    • apt-get update
    • apt-get upgrade
    • rpi-update
  • Die 100 MByte Swap-Bereich abschalten
    • swapoff -a
    • service dphys-swapfile stop
    • systemctl disable dphys-swapfile

vnc-server

vncserver-x11-serviced.service
vncserver-virtuald.service

Hostname setzen

  • 2 Dateien müssen geändert werden
joe /etc/hosts
joe /etc/hostname

Tipps und Tricks

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"

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

  • /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
#
# die Lösung:
Options=guest,vers=1.0

[Install]
WantedBy=remote-fs.target

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