Übersicht der Artikel:
* Dokumentation über BASH
* eMail-Programm installieren
* Linux-online-WS KW49/17 Dateibearbeitung
* Lösung der Hausaufgabe
* Linux-online-WS KW48/17 Useradministation
* Linux-online-WS KW47/17 Netzwerk
* Linux-online-WS KW46/17
* Linux-online-WS KW45/17
* Linux-Workshop am 3.11.17
* Zugriff von PC auf Raspberry ohne Netzwerk
* WLAN: SSID und Passwort eintragen
* Änderungen in Raspian-Jessie
* RasPi als RMS
* RaspPi als Terminalserver
* Anzeige und Speicherung der Temperatur
* SD-Karte schonen
* Installation eines Web-Servers
* Sicherung der SD-Karte
* Anwendung: Ausschalten über GPIO
* Wichtige Dateien: crontab
* Konfiguration der GPIO-Ports
* Raspberry Pi
* Linux-Befehle
* Linksammlung
*Bash-Dokumentation
Deutschsprachige Dokumentation über die Bash:
Buch: Shell-Programmierung
Web: Bash-Grundkurs
*eMail-Programm installieren
Um vom RaspberryPi direkt auf sein eMail-Postfach zugreifen zu können kann man Thunderbird installieren:
sudo apt-get install thunderbird
Die CPU wird stark belastet, wenn man dem Rechner aber Zeit läßt, läuft es auch auf dem Zero.
*Linux-online-WS KW49/17 Dateibearbeitung
Hallo, hier einige zusätzliche Befehle zur Arbeit mit Dateien:
Suche nach einer Datei
find . -print | grep -i dateiname # Suche nach Datei (-i: unabhängig ob gross oder klein geschrieben) im aktuellen Verzeichnis (.) und tiefer. Für Suche im kompletten Rechner den Punkt durch / ersetzen.
Suche nach einem String in einer oder mehreren Dateien
grep „such-string mit Leerzeichen“ dateiname # dateiname durch * ersetzt: Suche in allen Dateien im Verzeichnis und Anzeige der Zeilen, die den String enthalten.
Ausschneiden einzelner Felder in csv-Dateien
cat dateiname| cut -d“;“ -f1,9- >>datei_neu # Trennzeichen zwischen den Feldern: ; In die neue Datei werden die Felder 1 sowie 9 und alle folgenden geschrieben
Anzeige der ersten oder letzten Zeilen einer Datei
head -3 dateiname # die ersten 3 Zeilen
tail -5 dateiname # die letzten 5 Zeilen werden angezeigt
Mehrere Dateien zusammenfassen
cat datei*.txt >> neudatei # Alle Dateien, die mit „datei“ beginnen und mit „.txt“ enden werden in der Reihenfolge, die mit „ls“ angezeigt wird, hintereinander in die „neudatei“ geschrieben.
cat datei >> neudatei # Inhalt von datei an bisherigen Inhalt in neudatei anhängen
cat date > neudatei # Inhalt von neudatei durch Inhalt von datei überschreiben
Sortieren
sort -u datei >> dateineu # die Zeilen in der Datei sortieren und doppelte Zeilen nur einfach anzeigen (-u) + Schreiben der Zeilen in dateineu
sort -t”:” -k4 -n /etc/passwd # -t: Feldtrenner, -k: Feld, nach dem sortiert wird , -n numerisch sortiert (9 < 10)
Lösung der Hausaufgabe
sudo apt-get install apache2
sudo mkdir /var/www/html/pdf
sudo mv Downloads/datei.pdf /var/www/html/pdf
Aufruf: http://Raspi-ip/pdf
*Linux-online-WS KW48/17 Useradministation
Hallo, hier einige zusätzliche Befehle zur User-Administration:
User und HOME-Verzeichnis anlegen
sudo useradd -s /bin/bash -G sudo -m -d /home/neuuser neuuser
-s : verwendete Shell ( siehe /bin/false, /usr/sbin/nologin) -G: zusätzliche Gruppe -u: uid (User-ID), wenn nicht angegeben, automatisch vergeben -m: Anlegen des HOME-Verzeichnisses mit Vorgaben in /etc/skel -d: HOME-Verzeichnis -c: Kommentar neuuser: username
sudo passwd neuuser #Passwort vergeben
Identität abfragen, wechseln
su – neuuser # User wechseln
id #Anzeige des aktuellen User mit den zugeordneten Gruppen
who #Anzeige aller aktiven User
who am i #Anzeigen, als wer man eingeloggt ist
env #Anzeige der Umgebungsvariablen
Interessante Dateien
/etc/passwd #Eingerichtete User
/etc/shadow #Passworte
$HOME/.bashrc #Userspezifische Einstellungen
$HOME/.bash_history #Alte Eingaben
Interessante Variablen
echo $VISUAL #Anzeige des Inhalt der Variable VISUAL
export VISUAL=vi #oder export VISUAL=nano #setzen des Editors z.B. für crontab
$PS1 #Bash-Prompt: Beginn der Eingabezeile
$HOME #Heimatverzeichnis
*Linux-online-WS KW47/17
Hallo, hier einige zusätzliche Befehle, mit denen man das Netzwerk, in das der eigene Rechner eingebunden ist, genauer kennenlernt:
IP-Adresse anzeigen
ip a
ip -br a #Kurzfassung (erst in neuen Versionen enthalten)
ip route #welches Netz über welches Interface
Erreichbarkeit eines Rechners überprüfen
ping rechnername/ip-adr #Antwortet der Rechner?
traceroute rechnername/ip-adr #Welchen Weg nimmt das IP-Paket?
WLAN einrichten:
#SSID und Passwort abspeichern:
sudo wpa_passphrase ssid passphrase >> /etc/wpa_supplicant/wpa_supplicant.conf
Netzwerk-Konfigurationsdateien
/etc/network/interfaces
/etc/hostname #Rechnername
/etc/hosts #IP-Adresse zu Rechnername
/etc/dhcpcd.conf #z.B. zur Verwendung von statischen IP-Adressen
interface eth0 static ip_address=192.168.1.202/24 static routers=192.168.1.1 static domain_name_servers=192.168.1.1
/etc/resolv.conf #enthält die IP-Adresse des Name-Server
/etc/ntp.conf #Uhrzeit aus dem Netz beziehen
/etc/timezone
*Linux-online-WS KW46/17
Hallo, hier einige zusätzliche Befehle, mit denen man Dateien handhaben kann:
Kopieren einer Datei
cp vorhandene_datei neue_datei
cp -R /etc/skel $HOME/test #recursives Kopieren
Verschieben einer Datei
mv alter_standort neuer_standort
Anlegen einer leeren Datei
touch dateiname
Anlegen eines Link
ln -s /etc/skel $HOME/skellink
Sichern auf anderen Rechner
sudo rsync -avz /var/www/html pi@rechnername:/home/pi/web_sicherung
Berechtigungen einer Datei ändern
chmod +x datei #datei ausführbar machen
chown neuuser datei #meistens mit sudo
chgrp neuuser datei
Testet doch mal dies an euren Rechnern aus und werft einen Blick in die man-pages.
Erklärungen:
# : alles was in der Zeile nach dem „#“ kommt ist ein Kommentar
$HOME : Default-Directory des aktuellen Users
pi@rechnername : auf den fremden Rechner als User pi einloggen
*Linux-online-WS KW45/17
Hallo, hier einige zusätzliche Befehle, mit denen man sich einen Überblick über seinen Raspberry verschaffen kann:
Speicherbelegung der einzelnen Verzeichnisse/Dateien ermitteln:
du -hs .
du -hs *
Informationen über die Hardware:
cat /proc/cpuinfo
cat /proc/meminfo
Board-Temperatur ermitteln:
sudo vcgencmd measure_temp
cat /sys/class/thermal/thermal_zone0/temp
(sudo vcgencmd commands: z.B. measure_volts)
CPU-Takt auslesen:
sudo vcgencmd measure_clock arm
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
RAM-Speicher:
free -h
sudo vcgencmd get_mem arm
sudo vcgencmd get_mem gpu
Betriebsversion anzeigen:
cat /proc/version
uname -a
Zeit seit letztem Boot:
uptime
Auslastung des Rechner:
top
Testet doch mal dies an euren Rechnern aus.
*Linux-Workshop am 3.11.17
Hier die Mitschrift der vorgestellten Befehle und Dateien.
Nähere Informationen erhält man über “man Befehl” oder “man Dateiname”.
cd
script
df bzw. df -h (um die Wirkung der Schalter (hier h für human readable) zu erkennen)
ls bzw. ls -lisa
cat /etc/fstab
sudo less /var/log/messages (Datei kann nicht mit den normalen User-Rechten gelesen werden)
| (Pipe) z.B. ls -lisa /etc | less
mount
dmesg
lsusb
Vertiefende Übungen:
Erkenne den Unterschied zwischen “ls -lisaR” , “ls -lisar” , “ls -lisatr” , “ls -lisat”.
Stecke einen USB-Stick ein und vergleiche die Ausgabe von “df -h” ohne und mit USB-Stick.
Wie macht sich das Stecken (und Entfernen) des USB-Stick bei “dmesg” und “lsusb” bemerkbar.
*Zugriff von PC auf Raspberry ohne Netzwerk
Mit einem USB zu Seriell-TTL 3,3 V Adapterkabel kann man sich von eiem PC auf einen Raspberry einloggen, selbst wenn er keine Netzwerkverbindung hat.
Hierzu muß das Adapterkabel folgendermaßen an die GPIO-Pins des Raspberry angeschlosen werden:
Masse an Pin 6
RX und TX an Pin 8 und 10 (notfalls tauschen)
Unbedingt darauf achten, daß das Adapterkabel 3,3V-Logikpegel an RX und TX aufweist.
Putty starten mit
Connection-Typte: Serial
entsprechender COM-Port (bei mir COM15)
Speed: 15200
Data bits: 8
Stop bits: 1
Parity: None
Flow control: None
Nach einigen Tastatureingaben erscheint das Login.
*WLAN: SSID und Passwort eintragen
Die Zugangsdaten zu einem WLAN liegen beim Raspi unter /etc/wpa_supplicant/wpa_supplicant.conf.
Man kann diese Datei auch vom Terminal aus befüllen:
sudo bash
cd /etc/wpa_supplicant
wpa_passphrase SSID >> wpa_supplicant.conf
Passwort
Danach evtl. mit einem Texteditor die Zeile mit dem Klartext-Passwort aus der Datei löschen.
*Änderungen in Raspian-Jessie
Grundkonfiguration
Die Tastatur-Einstellung wird zur Zeit nur übernommen, wenn sie über “raspi-config” in einer Shell erfolgt.
Verwenden einer statischen IP-Adresse
Da ein DHCP-Client aktiv ist, sollte man die statische IP-Adresse in der Datei /etc/dhcpcd.conf konfigurieren:
interface eth0
static ip_address=192.168.1.9/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
cgi-Scripte in Apache2 aktivieren:
- Scripte in /usr/lib/cgi-bin ablegen
- sudo a2enmod cgi
- sudo service apache2 restart
*RasPi als RMS
RMS: Rack Monitoring System
Ein RMS dient zur Überwachung der in einem Schaltschrank eingebauten Komponenten. Dies kann beinhalten:
- Temperatur der einzelnen Systeme bzw. des kompletten Systems
- Luftfeuchtigkeit
- Zugriff zum System: Türen, Gehäusedeckel
- Spannungsversorgung
1. Temperaturmessung
Hierzu kann man den Temperatursensor DS18S20 verwenden. Dieser Sensor für den 1-wire-Bus hat den Vorteil, daß man mit nur 3 Anschlüssen mehrere Messstellen überwachen kann, da die einzelnen IC mit ihren Seriennummern angesprochen werden können. Die Sensoren werden parallel geschaltet:
- Pin 1 an Masse
- Pin 2 an GPIO 4 (Pin7)
- Pin 3 an 3,3V
- Widerstand mit 4k7 zwischen Pin 2 und 3
Software
Entgegen älteren Beschreibungenn müssen folgende Änderungen eingebracht werden:
zusätzlich in /boot/config.txt:
dtoverlay=w1-gpio,gpiopin=4,pullup=on
zusätzlich in /etc/modules:
wire
w1_gpio pullup=1
w1_therm
Die Messwerte findet man in /sys/bus/w1/devices/Seriennummer/w1_slave in der 2. Zeile hinter “t=” als Angabe in °mC
*RaspPi als Terminalserver
Man kann einen RaspberryPi als Terminal-Server für andere Pi einsetzen.
Über diesen Terminal-Server kann man die Boot-Meldung des zu überwachenden Pi mitlesen und sich auch auf den Pi einloggen, wenn keine Netzwerkverbindung besteht.
Der Einsatz von Terminal-Servern ist im professionellen Bereich weit verbreitet (entweder externe Terminal-Server oder im Server eingebaute Überwachungsrechern (z.B. ILO)).
Konfiguration des RaspberrryPi:
- Wheezy:
In der Datei „/etc/inittab“ folgende Zeile auskommentieren:
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
- Jessie:
systemctl stop serial-getty@ttyAMA0.service #kurzzeitig deaktivieren
bzw.
systemctl disable serial-getty@ttyAMA0.service #auch nach Neustart deaktiviert
In der Datei „/boot/cmdline.txt“ folgenden String löschen:
console=ttyAMA0,115200 kgdboc=ttyAMA0,115200
damit folgende Zeile übrigbleibt:
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
Installation einer Terminal-Emulation
apt-get install screen
Nun kann man den Pi herunterfahren und die Serielle Verbindung zwischen Terminal-Server und zu überwachendem Pi herstellen:
GPIO-Pin der beiden Pi folgdendermaßen verbinden:
6 mit 6 8 mit 10 10 mit 8
Nach dem Einschalten des Terminal-Servers startet man das Terminal mit:
sudo screen /dev/ttyAMA0 115200 8N1
Beendet wird das Terminalfenster mit:
STRG+A K y
Erweiterungsmöglichkeiten:
Über die GPIO kann z.B. auch die Spannungsversorgung geschaltet werden.
Hiermit ist eine Fernentstörung eines abgesetzt betriebenen RaspberryPi möglich.
* Anzeige und Speicherung der Temperatur
Nachdem wir beim letzten Mal die Software für den Temperatur-Sensor BMP180 installiert haben, wollen wir nun die gemessenen Werte anzeigen und Speichern.
Zum Anzeigen benötigen wir zusätzlich „xterm“, das uns die Möglichkeit bietet, das Terminalfenster offen zu halten.
sudo apt-get install xterm
Die Anzeige der Messwerte erfolgt durch aufruf folgender Befehlsfolge:
xterm -hold -e sudo python /home/adafruit/Adafruit_Python_BMP/examples/simpletest.py 2>/dev/null &
Nun Wollen wir die Werte speichern.
Zunächst legen wir ein Script mit dem Namen temperatur.sh im Verzeichnis /home/pi/bin an:
(Falls dieses Verzeichnis noch nicht besteht: mkdir /home/pi/bin)
#!/bin/bash
druck=`/usr/bin/python /home/adafruit/Adafruit_Python_BMP/examples/simpletest.py | grep Pressure| grep -v Sea| cut -d” ” -f3`
zimmer_temp=`/usr/bin/python /home/adafruit/Adafruit_Python_BMP/examples/simpletest.py | grep Temp| cut -d” ” -f3`
zeit=`date +”%F %T”`
echo “$zeit;$zimmer_temp;$druck” >> /tmp/temperatur.txt
chmod +x /home/pi/bin/temperatur.sh
Als nächstes wird in die crontab des User root folgende Zeile eingefügt, damit das Script regelmäßig (hier alle 5 min) aufgerufen wird:
echo “*/5 * * * * /home/pi/bin/temperatur.sh” >> /var/spool/cron/crontabs/root
/etc/init.d/cron restart
Die Messwerte können wir nun mit
cat /tmp/temperatur.txt
anzeigen
* SD-Karte schonen
Man kann Daten zwischenspeichern, ohne sie auf die SD-Karte zu schreiben. Dies ist angebracht, wenn oft Daten geschrieben werden, die aber nach einem reboot nicht mehr zur Verfügung stehen müssen.
Hierfür ist das Verzeichnis /tmp vorgesehen.
Damit /tmp nicht die SD-Karte nutzt, sondern den Speicher des Rechners, muß in der /etc/fstab folgende Zeile hinzugefügt werden:
tmpfs /tmp tmpfs defaults 0 0
* Laß den Raspberry reden
Zur Sprachausgabe kann man “espeak” verwenden.
Installation als root:
apt-get install espeak
Aufruf:
espeak “0 1 2 3 4 5 6 7 8 9 10”
espeak -v de “0 1 2 3 4 5 6 7 8 9 10”
Erläuterungen sind zu finden unter:
http://espeak.sourceforge.net/
* QR-Code erzeugen
Zum Erzeugen der pixeligen Quadrate kann man “qrencode” verwenden:
sudo apt-get install qrencode
Aufruf:
qrencode -t ANSI “http://www.z64.vfdb.org”
Näheres siehe “man qrencode”
* Installation eines Web-Servers
Heute wollen wir einen Apache2-WebServer installieren.
Zusätzlich wollen wir ihn um ein CMS auf Basis von Joomla ergänzen.
Hierfür müssen wir uns das Joomla-Paket aus dem Internet laden und in /tmp zwischenspeichern.
Benötigt werden noch php und mysql, die via apt-get installiert werden.
sudo bash
apt-get update
apt-get upgrade
apt-get install apache2
apt-get install php5
apt-get install mysql-client mysql-server
apt-get install php5-mysql php5-curl
cd /var/www
mkdir joomla
mv /tmp/Joomla_3.3.4-Stable-Full_Package.zip joomla
cd joomla
unzip *
cd ..
chmod 755 joomla -R
Die Dateien der Web-Site liegen unter /var/www.
Der User, unter dem der Web-Server läuft lautet www-data.
Wir können als User root die Dateien bearbeiten oder mit “su – www-data” den User wechseln.
In einem ersten Schritt passen wir die Datei /var/www/index.html an.
* Sicherung der SD-Karte
Es gibt mehrere Möglichkeiten, seine konfigurierte SD-Karte zu sichern:
- Auf dem Winows-Rechner mit dem Imageing-Tool, mit dem man auch das Grundimage auf die Karte gespielt hat.
- Auf einen Linux-Rechner mittels des Befehls “dd”
- Die Sicherung der Daten mit “tar”
- Sicherung einzelner Verzeichnisse/Dateien mit “rsync”
Hier jetzt eine genauere Beschreibung der verschiedenen Abläufe:
1.wie beim ersten Aufspielen eines Images auf die SD-Karte, aber nicht “restore” sondern “backup”
Hierbei kann es vorkommen (ist mir passiert), daß das Image, das von einer 8GB-SD-Karte gezogen wurde, nicht auf eine andere 8GB-SD-Karte gepaßt hat; daher am Besten gleich von der Sicherung eine neue SD-Karte erstellen.
2. dd if=”xxx” of=”yyy”
Hierbei ist “xxx” die zu sichernde Partition und “yyy” der Dateiname, unter dem diese Partition gesichert wird.
3. Mit “tar” wird kein Abbild der SD-Karte (wie bei den beiden erstgenannten Punkten) erzeugt; es werden nur die Dateien gesichert, was zu einer Platzersparnis auf dem Zielsystem führt.
Ich verwende folgendes Script zur Sicherung:
#!/bin/bash
# 2014_01_25
d=`mount | grep “/dev/sdb1″| cut -d” ” -f3`
e=`mount | grep “/dev/sdb2″| cut -d” ” -f3`
ln -s $d /media/boot_tmp
ln -s $e /media/data_tmp
b=`cat /media/data_tmp/etc/hostname`
mkdir /media/hd1/IMAGES/$b
c=`date +%Y%m%d`
mkdir /media/hd1/IMAGES/$b/$c
cd /media/boot_tmp
tar -cf /media/hd1/IMAGES/$b/$c/boot.tar .
cd /media/data_tmp
tar -cf /media/hd1/IMAGES/$b/$c/data.tar .
cd /media
rm /media/data_tmp
rm /media/boot_tmp
Hierbei wird der Rechnername aus der Datei /etc/hostname ausgelesen und die beiden Partitionen der Raspian-SD im Verzeichnis /media/hd1/Images/Rechnername/Datum gespeichert.
Zum Zurückspielen der Daten muß die neue SD-Karte zwei Partitionen enthalten, kann aber auch kleiner sein, als die ursprüngliche SD-Karte (sollte aber die gespeicherten Daten aufnehmen können).
#2 Partitionen anlegen
sfdisk /dev/sdb << EOF
,8,c
,,83
EOF
#2.Partition als ext4 formatieren
mkfs.ext4 /dev/sdb2
#Partition 1 mit dd zurückspielen
cd /media/hd1/IMAGES/org
dd if=sdb1 of=/dev/sdb1
#Partition 2 mit tar zurückspielen
mkdir /media/restore_2
mount /dev/sdb2 /media/restore_2/
cd /media/restore_2/
tar -xf /media/hd1/IMAGES/raspberrypi/20141001/data.tar .
#Aufräumen
cd /
umount /dev/sdb1
umount /dev/sdb2
rmdir /media/restore_2
4. “rsync” ist ein kleines Tool, mit dem man einfach den Datenbestand zwischen zwei Rechnern abgleichen kann:
/usr/bin/rsync -av 192.168.1.2:/home/wetter /HD/WetterServer
Hier wird z.B. vom Rechner mit der IP-Adresse 192.168.1.2 das Verzeichnis (mit all seinen Dateien) /home/wetter auf den lokalen Rechner in das Verzeichnis /HD/WetterServer kopiert.
Genaueres siehe “man rsync”
* Anwendung: Ausschalten über GPIO
Zum Ausschalten eines Linux-Rechners sollte man ihn nicht direkt von der Spannungsversorgung trennen, sondern vorher alle laufenden Programme definiert beenden.
Hierfür gibt es in Linux mehrere Möglichkeiten:
- shutdown
- init 0
Wenn man sich jedoch nicht in den Rechner einloogen will, um das Kommando einzugeben, kann man die GPIO des RaspberryPi verwenden.
Hierzu wird ein Schalter zwischen Pin 5 und 6 montiert, dessen Stellung über ein Script abgefragt wird und bei entsprechendem Zustand den Rechner definiert herunterfahren läßt.
Zuerst muß die GPIO-Schnittstelle als Input konfiguriert werden:
echo “3” > /sys/class/gpio/export
echo “in” > /sys/class/gpio/gpio3/direction
Da dies nur beim ersten Aufruf geschehen muß, wird über eine “if-Abfrage” geprüft, ob die Schnittstelle schon konfiguriert ist oder nicht:
if [ ! -e /sys/class/gpio/gpio3 ]
then
……
fi
Danach wird der Wert eingelesen (1=high, 0=low) und der Variablen a zugewiesen:
a=`cat /sys/class/gpio/gpio3/value `
Wenn der Wert “0” ist, wird der Befehl zum Herunterfahren des Rechners erteilt:
if [ $a = 0 ]
then
/sbin/shutdown -h now
fi
Da nur ein User mit root-Rechten diesen Befehl absetzten darf, muß der User root dieses Script ausführen. Der Rechner soll aber nicht nur damit beschäftigt sein, die Schnittstelle abzufragen. Deshal soll das Script nur einmal pro Minute laufen.
Dies wird erreicht durch folgenden Eintrag in der crontab des Users root:
* * * * * /root/bin/gpio3.sh
Hier nochmals das Script “/root/bin/gpio3.sh”:
#!/bin/bash
if [ ! -e /sys/class/gpio/gpio3 ]
then
echo “3” > /sys/class/gpio/export
echo “in” > /sys/class/gpio/gpio3/direction
fi
a=`cat /sys/class/gpio/gpio3/value `
if [ $a = 0 ]
then
/sbin/shutdown -h now
fi
Für das Programm kann jeder GPIO verwendet werden.
Der Vorteil von Pin3 und 5 ist, daß hier die Pins schon intern mit einem Pull-Up-Widerstand nach high gezogen werden und daher eine sehr einfache Beschaltung mit nur einem Schalter, der die Verbindung zu Masse herstellt, möglich ist.
Bei Verwendung eines anderen Pins bitte an einen externen Widerstand zwischen Schalter und 3,3V denken.
* Wichtige Dateien: crontab
Verwendungszweck
Starten von zu bestimmten Zeiten auszuführenden Programmen
Ort: /var/spool/cron/crontabs ; je User eine eigene Datei
Anzeige des Dateiinhaltes: crontab -l
(eigene crontab, ist aus jedem Verzeichnis aufzurufen)
Bearbeiten des Dateiinhaltes: crontab -e
Es wird der Defaulteditor geöffnet; wenn man einen anderen Editor verwenden will, muss man diesen der globalen Variable VISUAL übergeben z.B. export VISUAL=vi
Beschreibung:
Es werden sechs Werte in eine Zeile eingetragen:
- Minute
- Stunde
- Tag des Monats
- Monat
- Wochentag (1=Montag)
- auszuführender Befehl (bis Zeilenende, auch mit Leerzeichen)
Beispiel:
33 12 * * 6 /home/bin/jobs
Am Samstag um 12:33 wird der Befehl ” /home/bin/rsync_jobs ” ausgeführt
*/3 * 1-7 * 1 /testbefehl
Alle 3 Minuten (0, 3, 6, 9, 12, …) wird am ersten Montag jedes Monats “/testbefehl” ausgeführt.
* Konfiguration der GPIO-Ports
Zur Konfiguration der GPIO-Ports gibt es Module u.a. in Python.
Man kann aber auch direkt aus der bash heraus auf die Ports zugreifen.
Die entsprechenden Dateien befinden sich im Verzeichnis /sys/class/gpio
Zuerst gibt man an, welchen GPIO-Port man konfigurieren will (hier als Beispiel Nr.17, Pin 11):
echo “17” > /sys/class/gpio/export
Danach gibt man an, ob dieser Port Output oder Input ist:
echo “in” > /sys/class/gpio/gpio17/direction
echo “out” > /sys/class/gpio/gpio17/direction
Danach kann man bei Input auslesen, ob High oder Low anliegt:
cat /sys/class/gpio/gpio17/value
bzw. den Port auf High oder Low schalten:
echo “1” > /sys/class/gpio/gpio17/value
echo “0” > /sys/class/gpio/gpio17/value
Abschließend kann man den Port wieder dekonfigurieren:
echo “17” > /sys/class/gpio/unexport
GPIO-Tabelle
GPIO | Pin | Pin | GPIO | ||
3,3V | 1 | 2 | 5V | ||
SDA1 | 2 | 3 | 4 | 5V | |
SCL1 | 3 | 5 | 6 | GND | |
PCLK0 | 4 | 7 | 8 | 14 | TX |
GND | 9 | 10 | 15 | RX | |
17 | 11 | 12 | 18 | PCM_CLK | |
PCM_DOUT | 27 | 13 | 14 | GND | |
22 | 15 | 16 | 23 | ||
3,3V | 17 | 18 | 24 | ||
SPI_MOSI | 10 | 19 | 20 | GND | |
SPI_MISO | 9 | 21 | 22 | 25 | |
SPI_SCLK | 11 | 23 | 24 | 8 | CE0 |
GND | 25 | 26 | 7 | CE1 | |
ID_SD | 27 | 28 | ID_SC | ||
5 | 29 | 30 | GND | ||
6 | 31 | 32 | 12 | ||
13 | 33 | 34 | GND | ||
19 | 35 | 36 | 16 | ||
26 | 37 | 38 | 20 | ||
GND | 39 | 40 | 21 |
* Raspberry Pi
Der Raspberry Pi ist ein kleiner, preiswerter Einplatinencomputer der in England entwickelt wurde, um Schulkindern die Computertechnik näherzubringen.
Von den großen Desktop-PC unterscheidet er sich durch:
- Betriebssystem: Linux
- Kosten: z.Zt. ca 30€
- Externes Netzteil (Handynetzteil mit 5V/1,5A)
- Massenspeicher: (Mikro-)SD-Karte
- GPIO-Leiste: IO-Anschlüsse, die über eine 26- (40-)polige Steckerleiste nach Außen geführt sind und folgende Schnittstellen zur Verfügung stellt:
- I2C-Bus
- SPI
- UART
- digitale IO mit 3,3V
- Anschluß für eine 5MPixel Kamera
- Ein gemeinsamer Chip für USB und 100Mb/s-LAN-Anschluß, daher nicht für hohen Datendurchsatz geeignet.
Es gibt 7 verschiedene Modelle des Raspberry Pi (die roten werden nicht mehr hergestellt)
- Model A: 256 MB RAM, kein LAN-Anschluß, nur 1 USB, 26-polige GPIO-Leiste
- Model B v1: 256 MB RAM, LAN-Anschluß, 2 USB, 26-polige GPIO-Leiste
- Model B v2: 512 MB RAM, LAN-Anschluß, 2 USB, 2 Befestigungslöcher, 26-polige GPIO-Leiste, SD-Kartenleser
- Model B+: 512 MB RAM, LAN-Anschluß, 4 USB, 4 Befestigungslöcher, 40-polige GPIO-Leiste, microSD-Kartenleser
- Model 2 B: 1 GB RAM, ARM Cortex-A7, microSD-Kartenleser, sonst wie B+
- Model 3 B: 1 GB RAM, ARM Cortex-A53, 2,4GHz WLAN b/g/n, Bluetooth 4.1 Low Energy, sonst wie B+
- Model ZERO: 512 MB RAM, Kein LAN! microSD-Kartenleser, je eine Micro-USB Buchse für Stromversorgung und Daten [über Micro-USB Adapter (OTG)], voll 40-polige GPIO-Leiste, Mini-HDMI
Zum Betrieb wird noch folgendes benötigt:
- Spannungsversorgung: 5V über USB-Mikro-Anschluß (z.B. Handy-Ladegerät, ab 1A)
- (Mikro-)SD-Karte ab 2 GB für das Betriebssystem
- LAN-Kabel oder USB-WLAN-Stick
- Monitor mit HDMI- oder Cinch-Anshluß (oder Fernseher mit einem dieser Anschlüsse)
- USB-Tastatur und -Maus
Zum Betreiben als Server (z.B. Webserver, WLAN-Cam) werden nur 1 bis 3 benötigt.
Installation des Betriebssystem
- Download von http://www.raspberrypi.org/downloads/
- Verschiedene Distributionen:
- Raspbian (Debian)
- Raspbmc (XBMC Media Center)
- Pidora (Fedora)
- u.a.
- Image auf SD-Karte spielen z.B. mit Win32DiskImager
- Erstkonfiguration durchführen
- raspi-config: Tastatur, Ortszeit, aktivierte Schnittstellen
- apt-get update: Vorstufe zu apt-get upgrade
- apt-get upgrade: installierte SW-Pakete werden auf den aktuellen Stand gebracht
- Sicherung der SD-Karte
- Wenn man die SD-Karte mit dem DiskImager sichert, kann es passieren, daß man es auf eine gleichgroße Karte nicht installieren kann, da diese um einige Byte kleiner sein kann.
* Linux-Befehle
Hilfe:
man apropos help whatis info
Zu fast jedem Befehl existieren Schalter, die ihm mit einem “-” angefügt sind.
Am Besten die verschiedenen Befehle mit “man Befehl” erkunden.
Einloggen und Filetransfer:
ssh rechnername/-ip bzw. ssh username@rechnername/-ip
sftp rechnername/-ip bzw. sftp username@rechnername/-ip
Passwortloses Einloggen: ssh-keygen ssh-copy-id
Dateibearbeitung:
ls Anzeige des Verzeichnisinhaltes
cd Wechseln in Verzeichnis
cat, less, more Anzeige des Inhaltes einer Datei
mv, cp Datei/Verzeichnis verschieben, kopieren
find Datei finden
ln Link anlegen
file Emitteln der Art einer Datei
Datensicherung:
tar
dd
rsync
* Linksammlung
Hier einige Links, die beim Arbeiten mit dem Raspberry Pi helfen können:
- http://www.raspberrypi.org/ Die Raspberry Pi Foundation
- http://www.themagpi.com/ Online-Magazin in englischer Sprache mit Anleitungen
- http://www.adafruit.com/ Tutorials und Bauanleitungen
- http://www.gtkdb.de/ Good to know database in deutscher Sprache hilft bei vielen Problemen mit Computern