Raspberry Pi - Einplatinen Computer

Raspberry Pi

Der Raspberry Pi ist ein sehr einfach aufgebauer kleiner und sehr günstiger Einplatinencomputer. Die Platine ist mit einem 700 MHz (übertacktbar bis 1 GHz) ARM11 Prozessor, 512 MByte Arbeitsspeicher (bei Model B) bestückt. Dieser Beitrag beschreibt die Installation von Raspbian und Konfiguration von WLAN, SSH, VNC, Webserver usw. für den Betrieb.

airpi_2

Technische Daten des Raspberry Pi

  • SoC: Broadcom BCM2835
  • CPU: ARM1176JZF-S (700 MHz)
  • GPU: Broadcom VideoCore IV
  • Arbeitsspeicher (SDRAM): 256 MB bei Model A und 512 MB Model B
  • USB-2.0-Anschlüsse:  2
  • Videoausgabe: FBAS Chinch-Anschluss, HDMI
  • Tonausgabe: 3,5-mm-Klinkenstecker (analog), HDMI (digital)
  • Nicht-flüchtiger Speicher: SD-Kartenlesser für SDHC und SDXC/MMC/SDIO
  • Netzwerk: 10/100-MBit-Ethernet-Controller
  • Schnittstellen: Bis zu 17 GPIO-Pins, SPI, I²C, UART, EGL
  • Leistungsaufnahme: 5 V, 700 mA (3,5 Watt)
  • Stromversorgung: 5-V-Micro-USB-Anschluss (Micro-B) oder 4 × AA-Batterien
  • Größe: 85,60 mm × 56 mm × 21 mm
  • Preis: ab 35,- EUR (Raspberry Pi bei Amazon*)

Zusatzausstattung

Betriebsysteme

  • Raspbian: Debian Wheezy
  • Pidora: Fedora Remix
  • OpenELEC: An XBMC Media Centre
  • RaspBMC: An XBMC Media Centre
  • RISC OS: A non-Linux distribution
  • Arch Linux: A lightweight Linux distribution

Downloads: http://www.raspberrypi.org/downloads/

Bedeutung des LEDs

ACTgrünSDCard Zugriff (über GPIO16)
PWRrot3.3 V Spannung
FDXgrünFull Duplex (LAN) (Model B)
LNKgrünEthernet Link/Aktivität (LAN) (Model B)
100gelbEthernet 10/100Mbit (LAN) (Model B)

LED-Fehlercodes des Raspberry Pi

3xstart.elf wurde nicht gefunden
4xstart.elf konnte nicht ausgeführt werden
7xkernel.img wurde nicht gefunden
8xSDRAM wurde nicht erkannt.
Eine neue bootcode.bin/start.elf firmware wird benötigt

Installation des Raspberry Pi

Bevor das Betriebssystem Raspbian installiert werden kann, muss der Raspberry Pi über den HDMI Anschluss an einen Monitor sowie über die Ethernet-Schnittstelle an ein Netzwerk mit Internetzugang angeschlossen werden. Weiters ist eine USB-Maus und USB-Tastatur zu Beginn der Installation nötig, da vorerst nicht über SSH auf den Raspberry Pi zugegriffen werden kann.

Sobald WLAN und der SSH-Zugang eingerichtet ist, wird nur mehr das Netzkabel benötigt.

Raspberry Pi benötigt ein stärkeres Netzteil um stabil betrieben zu werden. Kleine USB-Ladegeräte für Handys sind kaum geeignet, da diese zu wenig Strom liefern. Ohne zusätzlicher Hardware benötigt der Raspberry Pi mindestens 700 mA (besser 1A). Mit Zusatzplatien und USB-Geräten dürfen es auch 2 A sein.

Installation des Betriebssystem

Download der Linux-Distribution „Raspbian“ von http://www.raspberrypi.org/downloads/

Schreiben des Images auf eine SD-Karte (Card-Reader wird benörigt!): http://www.raspberrypi.org/documentation/installation/installing-images/README.md

Mac OS

Im Terminal alle gefundenen Laufwerke auflisten lassen:

diskutil list /dev/disk2

#: TYPE NAME                  SIZE    IDENTIFIER
0: FDisk_partition_scheme *15.9 GB    disk2
1: Windows_FAT_32 NO NAME  15.9 GB    disk2s1

SD-Karte unmounten:

diskutil unmountDisk /dev/disk2

Zuvor heruntergeladenes und entpacktes Betriebssystem-Image auf SD-Karte kopieren:

sudo dd if=2014-06-20-wheezy-raspbian.img of=/dev/disk2 bs=4m

Der Vorgang kann eine geraume Zeit dauern, in der keine Ausgabe im Terminal erscheint. Lediglich die LED am Card-Reader blinkt.

Der Kopiervorgang wurde korrekt abgeschlossen, wenn danach etwa folgendes erscheint:

706+1 records in
706+1 records out
2962227200 bytes transferred in 429.987618 secs (6889099 bytes/sec)

Quelle: http://www.datenreise.de/raspberry-pi-inbetriebnahme-howto/

WLAN Zugang einrichten

Leider besitzt der Raspberry Pi keinen eigenen WLAN Chip und ist nur mit einem Ethernet-Anschluss ausgestattet. Für WLAN-Empfang wird ein USB WLAN Stick benötigt. Der sehr kleine WLAN-Stick von „Edimax“ (Edimax-Wireless Adapter bei Amazon*) ist zu empfehlen. Die Edimax-Sticks werden vom Betriebssystem „Raspbian“ automatisch mit dem Kernel-Treiber für Realtek-Chips (RTL8192CU) eingebunden.

edimax_wlan

Mit folgendem Befehl, läßt sich die erkannte Hardware und der verwendete Treiber überprüfen:

dmesg

cmd_edimax_usb_stick

Das neue WLAN sollte nun auch mit ipconfig aufgelistet werden:

ifconfig
ifconfig_wlan

Um zu verhindern, dass die WLAN Verbindung aufgrund des Stromsparmodus unterbrochen wird, sollte folgende Konfigurations-Datei geändert werden:

sudo nano /etc/modprobe.d/8192cu.conf
# neuer Inhalt:
options 8192cu rtw_power_mgnt=0 rtw_enusbss=0

Fixe IP konfigurieren (optional)

Um den RPi über eine Port-Freigabe im Router nach außen hin über per IP oder Dyn-DNS-Service erreichbar zu machen, wird eine fixe IP vorausgesetzt.

sudo nano /etc/network/interfaces
iface wlan0 inet dhcp

ändern in

iface wlan0 inet static

Anschließend müssen die Netzwerk-Dienste neu gestartet werden:

sudo service networking restart

siehe: https://www.modmypi.com/blog/tutorial-how-to-give-your-raspberry-pi-a-static-ip-address

Free Dyn DNS Service (optional)

Profil anlegen unter: http://www.dnsdynamic.org/signup.php

sudo apt-get install ddclient
  • Dynamischer Server: www.dnsdynamic.com
  • Protokoll für die dynamische DNS-Aktualisierung: dyndns2
  • Benutzername: <username@email.com>
  • Password: <password>
  • Netzwerkschnittstelle: wlan0
  • Vollständige DynDNS-Domainnamen: <domain-name.com>
sudo nano /etc/ddclient.conf

# Configuration file for ddclient generated by debconf
#
# /etc/ddclient.conf
daemon=60
syslog=yes
mail=root
mail-failure=root
pid=/var/run/ddclient.pid
ssl=yes

protocol=dyndns2
use=if, if=wlan0
server=www.dnsdynamic.org
login=email@domain.com
password='password***'
myscope.dnsd.info

siehe: http://blog.mivia.dk/free-dynamic-dns-for-raspberry-pi/

SSH Zugang aktivieren

sudo raspi-config

Advanced Options > SSH > Enable

VNC-Server installieren

Als VNC-Server eignet sich der schlanke tightvncserver, der mit folgendem Kommando installiert wird:

sudo apt-get install tightvncserver

VNC Server starten und Eingabe eines 8-Zeichen langen Passwortes:

$ vncserver
You will require a password to access your desktops.
Password: ********
Warning: password truncated to the length of 8.
Verify: ********
Would you like to enter a view-only password (y/n)? n

Konfiguration von TightVNC Server neu anlegen mit:

sudo nano /etc/init.d/tightvncserver.sh
Folgenden Shell-Code in tightvncserver.sh einfügen und mit Strg+O und Strg+X speichern und nano beenden.
#!/bin/bash
### BEGIN INIT INFO
# Provides: tightvncserver
# Required-Start: $remotefs $syslog
# Required-Stop: $remotefs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start VNC server at boot time
# Description: Start VNC Server at boot time
### END INIT INFO

# The Username:Group that will run VNC
export USER=&amp;quot;pi&amp;quot;
#${RUNAS}

# The display that VNC will use
DISPLAY=&amp;quot;1&amp;quot;

# Color depth (between 8 and 32)
DEPTH=&amp;quot;16&amp;quot;

# The Desktop geometry to use.
#GEOMETRY=&amp;quot;x&amp;quot;
#GEOMETRY=&amp;quot;800x600&amp;quot;
GEOMETRY=&amp;quot;1024x786&amp;quot;
#GEOMETRY=&amp;quot;1440x900&amp;quot;
#GEOMETRY=&amp;quot;1280x1024&amp;quot;
#GEOMETRY=&amp;quot;1920x1080&amp;quot;

# The name that the VNC Desktop will have.
NAME=&amp;quot;my-vnc-server&amp;quot;
OPTIONS=&amp;quot;-name ${NAME} -depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}&amp;quot;

. /lib/lsb/init-functions

case &amp;quot;$1&amp;quot; in
start)
&nbsp; log_action_begin_msg &amp;quot;Starting vncserver for user '${USER}' on localhost:${DISPLAY}&amp;quot;
&nbsp; su ${USER} -c &amp;quot;/usr/bin/vncserver ${OPTIONS}&amp;quot;
;;

stop)
&nbsp; log_action_begin_msg &amp;quot;Stoping vncserver for user '${USER}' on localhost:${DISPLAY}&amp;quot;
&nbsp; su ${USER} -c &amp;quot;/usr/bin/vncserver -kill :${DISPLAY}&amp;quot;
;;

restart)
&nbsp; $0 stop
&nbsp; $0 start
;;
esac

exit 0
sudo chmod +x /etc/init.d/tightvncserver.sh

# Sicherstellen, dass der VNC Server nicht läuft
ps aux | grep vnc

# optional wenn Process läuft:
sudo killall Xtightvnc

# VNC Server starten und auto-Start einrichten:
sudo /etc/init.d/tightvncserver.sh start
cd /etc/init.d
sudo update-rc.d tightvncserver.sh defaults

Apache2 Webserver installieren

sudo apt-get install apache2
sudo apt-get install php5 libapache2-mod-php5
sudo service apache2 restart

Apache SSL-Modul aktivieren (optional)

Ein selbst-signiertes Server-Zertifikat ersellen:

sudo mkdir /etc/apache2/ssl
cd /etc/apache2/ssl
sudo openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -out /etc/apache2/ssl/server.crt -keyout /etc/apache2/ssl/server.key

SSL Module des Apache aktivieren und eine SSL-Konfiguration anlegen:

sudo a2enmod ssl
sudo ln -s /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/000-default-ssl

SSL-Konfiguration anpassen und die erstellten Keys konfigurieren:

sudo nano /etc/apache2/sites-enabled/000-default-ssl
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
service apache2 restart

Ein offizielles freies Zertifikat kann zum Beispiel über https://www.startssl.com erstellt werden.

Um zum Beispiel phpMyAdmin nur über HTTPS zugänglich zu machen, muss in der Konfiguration von phpMyAdmin „/etc/phpmyadmin/config.inc.php“ folgender Eintrag geändert werden:

$cfg['ForceSSL'] = 'true';

Bei einer WordPress-Installation klappt das über die Konfiguration in „wp-config.php“ mit:

&amp;lt;span class=&amp;quot;crayon-e&amp;quot;&amp;gt;define&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;crayon-sy&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;crayon-s&amp;quot;&amp;gt;'FORCE_SSL_LOGIN'&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;crayon-sy&amp;quot;&amp;gt;,&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;crayon-t&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;crayon-sy&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt;;
&amp;lt;span class=&amp;quot;crayon-e&amp;quot;&amp;gt;define&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;crayon-sy&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;crayon-s&amp;quot;&amp;gt;'FORCE_SSL_ADMIN'&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;crayon-sy&amp;quot;&amp;gt;,&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;crayon-t&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;crayon-sy&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt;;

Filesharing (Windows & Apple Netzwerke)

sudo apt-get install netatalk
sudo apt-get install avahi-daemon
sudo update-rc.d avahi-daemon defaults

Quelle: http://4dc5.com/2012/06/12/setting-up-vnc-on-raspberry-pi-for-mac-access/

Konfigurations-Datei als root anlegen /etc/avahi/services/afpd.service mit:

sudo nano /etc/avahi/services/afpd.service

und folgenden Inhalt einfügen und speichern:

&amp;lt;?xml version=&amp;quot;1.0&amp;quot; standalone='no'?&amp;gt;&amp;lt;!--*-nxml-*--&amp;gt;
&amp;lt;!DOCTYPE service-group SYSTEM &amp;quot;avahi-service.dtd&amp;quot;&amp;gt;
&amp;lt;service-group&amp;gt;
&amp;lt;name replace-wildcards=&amp;quot;yes&amp;quot;&amp;gt;%h&amp;lt;/name&amp;gt;
&amp;lt;service&amp;gt;
&amp;lt;type&amp;gt;_afpovertcp._tcp&amp;lt;/type&amp;gt;
&amp;lt;port&amp;gt;548&amp;lt;/port&amp;gt;
&amp;lt;/service&amp;gt;
&amp;lt;/service-group&amp;gt;

Nach dieser Änderung muss der AVAHI-Daemon mit folgendem Befehl neu gestartet werden:

sudo /etc/init.d/avahi-daemon restart

Danach sollte der RPi an Mac/PC als Gerät im Netzwerk gefunden werden.

Automatisches Login Raspbian

Damit sich der Raspbery Pi unter Raspbian nach einem Neustart automatisch an der Konsole (nicht x!) einloggt, müssen folgende Änderungen an der inittab durchgeführt werden:

sudo nano /etc/inittab

Fogende Zeile muss mit einem #-Zeichen auskommentiert werden:

1:2345:respawn:/sbin/getty 115200 tty1

Statt obiger Zeile muss direkt danach folgende Zeile eingefügt werden:

1:2345:respawn:/bin/login -f pi tty1 </dev/tty1 >/dev/tty1 2>&1

Nach einem Neustart des Pi erfolgt ein automatisches Login in die Konsole.

Autostart eines Programms nach dem Login

Terminal öffnen und entweder mit root-Rechten die /etc/profile oder als User .bash_profile bearbeiten:

sudo nano /etc/profile
# ODER
nano .bash_profile

Den Aufruf des Programms/Scriptes am Ende einfügen zB:

/home/pi/your_script_name.sh

Anmerkung: an dieser Stelle NICHT X mit startx starten lassen! Sollte der Raspberry Pi in die GUI starten, so muss das mit raspi-config geändert werden!

Automatisch USB-Sticks mounten

apt-get install usbmount
df -h

Konfiguration anpassen in:

sudo nano /etc/usbmount/usbmount.conf
FS_MOUNTOPTIONS="-fstype=vfat,gid=users,dmask=0007,fmask=0117"

Nützliche Tools

# PHP5/SQLite
sudo apt-get install php5-sqlite

# VN-Stat
sudo apt-get install vnstat

# ImageMagick / Convert
sudo apt-get install imagemagick

# FTP Client
sudo apt-get install ftp

# WGET
sudo apt-get install wget

# Beispiel Download von Files mit wget:
wget http://www.domain.com/filename.ext

# Posfix
sudo apt-get install postfix

# locate
sudo apt-get install locate

Wichtiges

Der Raspberry Pi (Model A/B) sollten grundsätzlich nie durch Ausstecken des Netzsteckers heruntergefahren oder neugestartet werden, da durch Schreibfehler die Parition der SD-Karte zerstört werden kann. Nur mit Glück, lässt sich eine derart beschädigte Parition mit testdisk wieder reparieren! Zum Ausschalten oder Neustarten des Raspberry Pi sollten die Befehle „shutdown“, „reboot“ oder „halt“ verwendet werden:

# Ausschalten:
sudo halt

# Neustart:
sudo reboot

# Diskcheck nach Neustart:
sudo touch /forcedsck
sudo reboot
# oder
sudo shutdown -rF now

Zeitzone einstellen

Mit folgendem Copy-Befehlt wird die Zeitzone des Raspberry Pi von UTC auf eine Lokale Zeit gestellt. Die Änderung der Zeit wird danach sofort aktiv und kann mit „date“ überprüft werden.

sudo cp /usr/share/zoneinfo/Europe/Vienna /etc/localtime
date
Mit Feb 18 13:38:52 CET 2015

Hinweise

Die mit * gekennzeichneten Links sind sogenannte Affiliate Links.
Kommt über einen solchen Link ein Einkauf zustande, werde ich mit
einer Provision beteiligt. Für Dich entstehen dabei keine Mehrkosten.
Wo, wann und wie Du ein Produkt kaufst, bleibt natürlich Dir überlas-
sen