Dienstag, 26. Mai 2015

18 Webmin

Zitat: Webmin ist ein freies Programmpaket zur Fernverwaltung eines Rechners mit einem Unix-artigen Betriebssystem. Es lauscht im Hintergrund auf Anfragen aus dem Internet oder dem lokalen Netz. Mit einem Webbrowser können die verschiedenen Server-Prozesse oder Daemonen administriert werden, die auf dem Unix-Rechner laufen.
Dies Paket ist auch für den Raspy geeignet. Da ich wheezy, ein auf Debian basierendes Betriebssystem, benutze muss auch das entsprechende Webmin - Paket installiert werden.


Ablauf der Installation wie folgt:Paketliste aktualisieren:
sudo apt-get update
Folgende Pakete installieren:
sudo apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python
Webmin herunterladen (zum aktuellen Zeitpunkt diese Postes ist dies die Version 1.740):
wget http://prdownloads.sourceforge.net/webadmin/webmin_1.740_all.deb
Webmin 1.740 installieren:
sudo dpkg --install webmin_1.740_all.deb
Installation prüfen und Webmin starten. Die Installation nimmt etwas Zeit in Anspruch und endet mit der Meldung "Webmin install complete."
Nun kann Webmin über die IP-Adresse des Raspy, die in Schritt 05 vergeben wurde,  mit dem Port 10000 aufgerufen werden. Zum Beispiel:

https://192.168.0.108:10000/

Falls Firefox benutzt wird, kann eine Meldung erscheinen, in der vor einer "nicht vertrauenswürdigen" Verbindung gewarnt wirst. Hier auf "ich kenne das Risiko" klicken und bestätigen damit die Ausnahme. Danach sollte die Login Oberfläche von Webmin erscheinen. Hier kann man sich nun als root einloggen.


Hinweis: unter dem Punkt links Webmin kann die Sprache auf deutsch umgestellt werden.

Ansonsten einfach ausprobieren, es sind hier viele Dinge zusammengefasst, die zur Administration benötigt und benutzt werden. Aber auf jeden Fall Zeit mitbringen, Aktionen die über Webmin angestoßen werden dauern teilweise recht lang. Ursache noch nicht durchschaut, werde das aber mal weiter untersuchen.
Und daran denken, sich abzumelden, wenn man das Programm verlässt!!

17b Restore

Um das im vorangegangenen Blog erläuterte Backup wieder zurück zu spielen beziehe ich mich auf diese Seite im Internet: http://www.linux-tips-and-tricks.de/de/raspibackup-restore/
Dort wird beschrieben, wie das Restore erfolgen kann.
In meinem Fall muss dies manuell erfolgen, da ich NOOBS zur Installation benutzt habe, sodass die folgenden Schritte nur der Vollständigkeit halber hier aufgeführt werden.
 

Ich zitiere aus der Internetseite:

Überblick 
raspiBackup erstellt Backups vor Raspberry Pis. Das Script kann den erstellten Backup auch wieder restoren. Dabei werden auf der Ziel SD Karte neue Partitionen angelegt und dann mit dem entsprechenden Tool (dd, tar oder rsync) die Daten wieder restored. Das dd Backup kann man auch unter Windows restoren. Alle anderen Backuptypen benötigen eine Raspberry mit einem laufenden raspbian oder ein anderes System, welches Linux als Betriebssystem hat. Ein manueller Restore der Daten mit den zuvor benutzen Backuptools dd, tar oder rsync ist natürlich auch möglich.

Funktionszusammenfassung
  • Einfacher Restore der Sicherung für Windows, Mac oder Linux Benutzer
  • Meldungen in Deutsch und Englisch
  • Externes Rootfilesystem wird restored
  • Rootfilesystem auf dem wiederhergestellten System benutzt immer die gesamte SD Karte sofern kein dd Backup vorliegt
  • SD Karte für die Wiederherstellung kann kleiner oder größer sein als die gesicherte SD Karte sofern kein dd Backup vorliegt
  • Einsetzbar auch zum Klonen von einer Raspberry Pi
  • Einfacher Update des Scripts durch die aktuellste Version (-U Parameter)
  • Raspberry Pi kann sich selbst wiederherstellen
Hinweis 
Es ist sehr zeit- und hardwareaufwändig (diverse SD Karten mit unterschiedlichen Größen) den Restore für alle möglichen Kombinationen zu testen. Deshalb steht diese Funktion standardmäßig nicht zur Verfügung, denn ohne ausgiebige Tests ist ein allgemeines Anbieten der Restorefunktion für mich nicht zu vertreten. Es funktioniert bei mir und auch bei einer Menge anderer Leute. Ein Restoretest sollte also nach dem ersten erfolgreichen Backup unbedingt vorgenommen werden.
Falls aus irgendwelchen Gründen der Restore mit dem Script fehlschlägt kann man natürlich jederzeit die vom Script gesicherten Daten mit den Standard Linuxtools, die zum Backup genutzt wurden - dd, tar und rsync - wieder restoren. Allerdings geht das dann nicht so bequem wie mit dem Script.
Ein Backup sollte regelmäßig getestet werden ob der Restore immer noch funktioniert und auch immer noch alle Daten beinhaltet. Nichts ist so frustrierend wenn man in dem Moment, wo man das Backup benötigt, feststellt, dass das Backup korrupt ist oder nicht alle Daten enthält. Ein Test ist bei der Raspberry recht einfach. Eine neue SD- Karte einlegen, das Backup restoren und von der neuen SD-Karte booten.


Aufrufparameter 
Die Restorefunktion wird durch den Parameter -X eingeschaltet. Je nachdem ob das Quellsystem nur die SD Karte benutzt oder sein Rootfilesystem extern ausgelagert hat sind zwei verschiedene Aufrufe des Restores zu unterscheiden, die durch den Parameter -R gesteuert werden.
Parameter Funktion Standard
-X Damit wird die Restorefunktion im Script eingeschaltet Nein
-d Gibt das Ausgabedevice (die SD Karte) an. Beispiel: /dev/sda
Achtung: Dieses Device wird vollständig gelöscht und neu angelegt.
Keiner
-r Muss das Verzeichnis in welches der rsync Backup mit raspiBackup geschrieben wurde sein oder die Backupdatei beim dd oder tar Backup, die mit .tar oder .dd endet Keiner
-R Gibt die Partition an, auf welchem das root Verzeichnis restored wird. Beispiel: /dev/sdb1
Achtung: Die Partition wird neu formatiert. Deshalb aufpassen, dass es die richtige Partition ist!
Durch diese Option kann man Backups von Systemen restoren, die eine externe Partition als Rootpartition benutzen wie USB Sticks oder Festplatten. Dieses ist nur möglich wenn ein tar oder rsync Backup vorliegt.
Keiner

Wiederherstellungsszenario für Windows- und Macbenutzer
Sofern eine DD Backup erstellt wurde kann das mit dem Windows32DiskImager restored werden. Alternativ kann jedes Backup mit der Pi wiederhergestellt werden. Soll ein TAR oder RSYNC Backup wiederhergestellt werden muss dieser alternative Weg beschritten werden. Die folgenden Schritte sind notwendig:

  1. Ein raspbian auf dem Raspberry starten
  2. Die SD Karte, auf die wiederhergestellt werden soll, muss in einem SD Kartenlesen angeschlossen werden
  3. Das Medium, welches das Backup enthält (z.B. eine Platte) muss angeschlossen und gemounted werden bzw. ein Netzwerklaufwerk mit den Backupdaten muss gemounted werden
  4. Falls die Rootpartition ausgelagert wurde muss eine weitere Platte angeschlossen werden, die die Rootpartition enthält, welche wiederhergestellt werden soll
    Dabei wird üblicherweise die SD Karte /dev/sda, die Backuppartition /dev/sdbx und eine eventuelle Rootpartition /dev/sdcx. Wird ein Netzlaufwerk benutzt ist die Rootpartition dann üblicherweise /dev/sdbx
Die aktuelle Gerätebelegung kann anders sein und sollte immer mit 
sudo parted –l 
überprüft werden um zu vermeiden dass andere Partitionen irrtümlicherweise überschrieben werden.

Wiederherstellungsszenario für Linuxbenutzer 
Dieses sieht genauso aus wie das für Windows- und Macbenutzer. Im Unterschied braucht aber die Raspberry Pi nicht benutzt sondern wird die SD Karte mit dem SD Kartenlese an das Linuxsystem angeschlossen, die Backuppartition gemounted und eine Partition für ein eventuelles externes Rootfilesystem bereitgestellt.
 

Beispielaufrufe 
Notwendige Hardware für den Restore:
  1. Ein laufender Raspberry Pi mit einem laufenden raspbian oder einem anderen Linux Betriebssystem oder ein anderer Linux Rechner mit installiertem raspiBackup.
  2. Einen angeschlossener SD Kartenleser und eingelegte neuer SD Karte
  3. Ein angeschlossenes Backupdevice (per USB oder Netz)
  4. Falls eine externe Rootpartition wiederherzustellen ist muss noch per USB eine weitere Platte oder SD Karte angeschlossen sein.
Restore auf eine SD Karte
Das gesicherte System heißt im Beispielaufruf raspberrypi.
SD Karte, die den Restore der Boot- und Rootpartition erhalten soll, ist im Beispiel als sdf verfügbar. Alle bestehenden Daten der SD Karte werden vorher gelöscht.
Das zu restorende Backup ist z.B. unter /media/usbstick/raspberrypi/raspberrypi-rsync-backup-20150501-000001/ verfügbar 

sudo raspiBackup.sh -X -d /dev/sdf -r /media/usbstick/raspberrypi/raspberrypi-rsync-backup-20150501-000001/ 
Sollte das zu restorende Backup ein tar oder dd Backup sein, sieht der Aufruf wie folgt aus 
sudo raspiBackup.sh -X -d /dev/sdf -r /media/usbstick/raspberrypi/raspberrypi-tar-backup-20150501-000001.tar 
oder 
sudo raspiBackup.sh -X -d /dev/sdf -r /media/usbstick/raspberrypi/raspberrypi-dd-backup-20150501-000001.dd
 
Restore auf eine SD Karte und eine externe Partition
Das gesicherte System heißt raspberrypi .
SD Karte, die den Restore der Bootpartition erhalten soll, ist im Beispiel als sdf verfügbar. Alle bestehenden Daten der SD Karte werden vorher gelöscht.
Die externe Rootpartition, auf der das Rootfilesystem restored werden soll, liegt im Beispiel auf sda1. Alle Daten der Partition /dev/sda1 werden vorher gelöscht.
Das zu restorende Backup ist unter /media/usbstick/raspberrypi/-rsync-backup-20150501-000001/ verfügbar 

sudo raspiBackup.sh -X -d /dev/sdf -r /media/usbstick/raspberrypi/raspberrypi-rsync-backup-20141230-213032/ -R /dev/sda1 
Der Live-Test wird in den nächsten Tagen erfolgen, um den 3. bzw. 4 Raspi in Betrieb zu nehmen.

17a Backup

Ich habe hier eine gute Anleitung zum Sichern des Pi gefunden:Pi erstellt automatisch Backups von sich selbst
Hier wird beschrieben, wie mit einem Script regelmäßig Sicherungen angelegt werden.
Dazu wird ein kleines bash Script verwendet, welches diese Aufgabe über den cron - Daemon (dazu später mehr) erledigt. Es hält eine gewisse Anzahl von Backups vor und legt sie in Unterverzeichnissen ab, die den Hostnamen der Pi haben. Somit können beliebig viele Pis, die aber unterschiedliche Hostnamen haben müssen, ihre Backups auf dem Backupmedium ablegen. Das Backup kann entweder ein dd Backup, ein tar Backup ein xbmc Backup oder ein rsync Backup sein.

Ich zitiere aus der Internetseite:
Funktionsweise
Das Script fertigt bei jedem Aufruf ein Backup der laufenden Pi an. Es kann eine maximale Anzahl von Versionen definiert werden die vorzuhalten sind. Bei Überschreitung dieser Anzahl wird das älteste Backup gelöscht. Zusätzlich kann eine eMail Adresse konfiguriert werden, die beim Start und Ende des Backupvorgangs eine eMail erhält.
Verschiedene Backupmethoden stehen zur Verfügung:
  1. dd Backup der ganzen SD Karte
  2. tar Backup eines beliebigen Verzeichnisses sein, wobei bei / als Verzeichnis die gesamte Pi gesichert wird
  3. xbmc Backup, welches das xbmc Konfigurationsverzeichnis in einem tar sichert
  4. rsync Backup, wobei Hardlinks benutzt werden um die Datenmenge in den Backupversionen zu reduzieren. Dazu muss aber das Filesystem mit ext3 oder ext4 formatiert sein.
Was sind die Vor- und Nachteile der jeweiligen Backupmethoden ?
Ein dd Backup erstellt ein in sich konsistentes binäres Abbild der SD Karte. Dabei wird immer die ganze SD Karte gelesen und gesichert. Das bedeutet dass auch Daten gesichert werden, die sich nicht geändert haben. Auch bedeutet es, dass zum Restore die SD Karte wieder genau so groß sein muss wie die Original SD Karte. Diese Methode belastet die SD Karte sehr stark. Ein Restore ist sehr einfach.

Ein xbmc Backup sichert nur die Verzeichnisse von xbmc. D.h. man muss zum Restore eine schon existierende xbmc SD Karte haben und es werden dort die gesicherten Einstellungen von xbmc restored. Das Backup ist klein, aber der Restore erfordert erst das Aufsetzen einer neuen xbmc SD Karte mit einem initialen xbmc Stand. Diese Methode ist sehr schnell.
Ein tar Backup sichert die gesamte SD Karte, wobei allerdings das Backup nicht so groß ist wie bei einem dd Backup da nur die Daten gesichert werden, die tatsächlich existieren. Deshalb kann auch ein tar Backup auf eine SD Karte restored werden, die kleiner ist als die original SD Karte - sofern die gesicherten Daten auf die neue SD Karte passen. Diese Method belastet die CPU stark. Ein Restore erfordert Kenntnisse von tar.
Ein rsync Backup sichert nur die Daten, die sich zum letzten Backup geändert haben. Durch die Hardlinks des ext2/ext3 Dateisystems wird dafür gesorgt, dass trotzdem ein konsistenter Stand des Backups vorliegt. Allerdings werden die Daten nicht komprimiert. Das hat aber wiederum den Vorteil, dass man sehr gezielt einzelne Dateien ganz einfach per copy aus dem Backup zurückholen kann. Diese Methode ist sehr schnell nach dem ersten Backup. Ein Restore erfordert Kenntnisse von rsync.


Voll-
backup
Backup-
zeit
Backup-
größe
Daten-kompression
CPU belastet
Karte belastet
Selektiver Restore möglich
Dateisystem
dd
ja
lang
gross
nein
mittel
hoch
nein
alles
xbmc
nein
kurz
klein
ja
nein
kaum
ja
alles
tar
nein
mittel
mittel
ja
ja
mittel
ja
alles
rsync
nein
kurz
mittel
nein
nein
kaum
ja
ext2/ext3


Das Script wird mit folgendem Befehl heruntergeladen:


wget http://www.linux-tips-and-tricks.de/de/downloads/raspibackup-sh/download -O raspiBackup.sh

Danach habe ich es nach /usr/local/bin/ verschoben, um dort alle Scripte zu sammeln und auszuführen.

mv raspiBackup.sh /usr/local/bin/

Danach muss das Script noch ausführbar gemacht werden:

cd /usr/local/bin/
sudo chmod 755 raspiBackup.sh

Die folgenden Parameter können beim Aufruf mit angegeben werden. Falls sie fehlen, werden die im Script definierten Standardwerte genommen. Diese können natürlich im Script den lokalen Gegebenheiten angepasst werden.
Aufrufparameter
-t:
Typ des Backups, der entweder dd, tar, rsync oder xbmc sein kann. dd und tar ist ein      Vollbackup während xbmc ein tar Backup des /home/pi/.xbmc Ordners ist. Ein rsync Backup sichert nur die neuen Dateien in einem Lauf und benutzt Hardlinks und reduziert dadurch die Sicherungszeit signifikant. (Default: rsync)
-p:
Pfad auf das Backupmedium wo das Backup abgelegt wird. Das kann eine lokale USB Platte, ein NAS Speicher im Netz über CIFS oder nfs sein oder auch per davfs ein Cloudspeicher.(Default: /backup)
-k:
Anzahl der Backups, die vorzuhalten sind (Default: 3)
-o:
Befehle um Services vor dem Backup zu stoppen. Z.B. bei xbmc service xbmc stop . Mehrere Befehle müssen durch ; getrennt werden.
-a:
Befehle um Services nach dem Backup wieder zu starten. Z.B. bei xbmc service xbmc start . Mehrere Befehle müssen durch ; getrennt werden.
-l: 
Log level (0-2), 0=keiner, 1=info, 2=debug (Default: 0)
-e:
email Addresse, die eine Status-email des backups zugesendet bekommt bzw im Fehlerfalle das Fehlerprotokoll (kein Default)
-b:
zu sicherndes Verzeichnis (Default: /home/pi)
-v:
Ausführliche Ausgabe der Backupfunktionen werden damit eingeschaltet
-z:
zip dd backup (Default: no)
-s:
email Programm welches benutzt wird {mail|sendEmail} (Default: mail)
-E
Optionale weitere Parameter die im Email - Programmaufruf mitgegeben werden


Damit das Script regelmäßig automatisch ausgeführt wird, ist noch ein entsprechender Eintrag in der crontab vorzunehmen.
Im root Verzeichnis folgenden Befehl ausführen:
sudo crontab -e

Hier ist am Ende folgende Zeile einzufügen (Parameter beziehen sich auf meine Konfiguration):

0 0 * * * /usr/local/bin/raspiBackup.sh -p /media/usbstick/ -t rsync -k 7 -b /
Die Aufrufparameter geben an, dass täglich um 0:00 ein backup erstellt wird, das Backupmedium unter /media/usbstick/ gemountet ist, ein vollständiges rsync Backup des Systems zu erstellen ist und 7 Backupversionen vorgehalten werden sollen.
Nachdem ich einige Startschwierigkeiten mit dem Script hatte (es wurde zwar ein Verzeichnis angelegt, aber keine Sicherung vorgenommen), habe ich etwas herum gesucht und bin schließlich auf einen nicht dokumentierten Parameter –5 gestoßen. Bei der Angabe dieses Parameters wird verhindert, dass dies Script die 5. Partition auf der SD-Karte, die von NOOBS angelegt wurde, mit gesichert wird. Ein restore von diesem Backup ist dann nur manuell möglich, aber nicht per Script.
Auch habe ich die Häufigkeit der Backups reduziert. Es wird jetzt nur noch am Sonntag ein Backup angelegt. Dies kann jederzeit wieder geändert werden nach Bedarf.
Somit lautet der korrigierte Eintrag in crontab

0 0 * * 0 /usr/local/bin/raspiBackup.sh -p /media/usbstick/ –5 -t rsync -k 7 -b /

Ich werde das Ganze mal beobachten und ggf. die Werte anpassen. Auch die Email - Benachrichtigung wird noch ergänzt (Email Programm muss noch installiert werden). Mittelfristig werde ich ein Backup in die Cloud anstreben (evtl.. T-Online).

Dienstag, 18. März 2014

16 Systemmonitoring

Beim Stöbern im Netz, sind mir verschiedene System Monitoring Tools aufgefallen, die ich ausprobiert habe.

RaspberryPi Sysinfo Script
Dies ist ein einfaches php - Script, was nur heruntergeladen und nicht installiert werden muss. Es gibt zwei Versionen im Design unterschiedlich, aber selbe Funktionen. Einfach unter /var/www kopieren (evtl. Unterverzeichnis erstellen).
Anzeige eignet sich besonders für die Darstellung auf einem Smartphone, aber natürlich auch im Browser.



























Raspcontrol
Umfangreichere Anzeigen, Zugang zum Tool ist nur über eine Anmeldung möglich.
Installation und Hinweise siehe Link.

 
Picontrol
Tool ist noch im Beta - Stadium, aber ausbaufähig. Im lokalen Netz ist der Zugang ohne Anmeldung möglich, beim Zugang über das Internet lässt sich unter Einstellungen ein Name und Passwort vergeben.














RPI-Monitor
Nur lokaler Zugriff möglich, kein Internet - Zugang.
RPi-Monitor zeigt die Systemeigenschaften wie Kernel, Uptime, Speicher direkt als Startseite an.
RPi-Monitor erzeugt Langzeitstatistiken, die gerade im Dauerbetrieb sehr praktisch sind.
RPi-Monitor erfordert die Installation diverser Perl Bibliotheken. Er bringt einen eigenen Webserver mit, die Installation von Datenbankserver, Webservern wie Apache oder Nginx ist nicht zwingend notwendig, jedoch kann auch ein vorhandener Webserver zur Darstellung des Statusmonitors genutzt werden.
 



Umfangreiche Darstellung von Systemzuständen (Uptime, Startzeit, Temperatur) auf der Startseite, mit Anmeldung ist die Administration des Raspy möglich.
 
 

Freitag, 14. März 2014

15 Raspy Emulator Qemu

In der aktuellen ct Heft 7 2014 wird beschrieben, wie der Raspy auf einem Windows System emuliert werden kann.
Dazu werden ein paar Programme benötigt:
  1. Qemu: Download
  2. OpenVPN-Paket: Download
  3. Win32Diskimager: Download
Und natürlich ein Raspy - Image (2014-01-07-wheezy-raspbian.zip).

Zunächst muss mittels OpenVPN ein "TAP Virtual Ethernet Adapter" installiert werden, um mit Qemu auch ins Internet zu kommen. Bei der Installation unter "Choose Components" alle Häkchen bis auf "TAP Virtual Ethernet Adapter" entfernen.
In Windows unter Systemsteuerung - Netzwerk und Internet - Netzwerkverbindungen die Schnittstelle "TAP Windows Adapter V9" suchen und den Namen der gefundenen "LAN Verbindung xyz" in "TAP32" ändern. Anschließend den TAP-Treiber und das aktive LAN-Interface mit gedrückter Strg - Taste markieren, dann rechte Maustaste und "Verbindung überbrücken" wählen.
Danach ist in der Schnittstellenübersicht eine Netzwerkbrücke zu finden und der TAP32 - Adapter ist durch ein rotes Kreuz als deaktiviert gekennzeichnet.









Dann Qemu entpacken und in dieses Verzeichnis das Raspy - Image kopieren.
Aufruf ohne Netzwerkverbindung lautet wie folgt:

qemu-system-armw -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb  -append "root=/dev/sda2 panic=1" -hda 2013-12-20-wheezy-raspbian.img

Mit Netzwerkverbindung:

qemu-system-armw -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -net nic -net tap,ifname=TAP32 -append "root=/dev/sda2 panic=1" -hda 2013-12-20-wheezy-raspbian.img
Standardmäßig wird dem Raspy dann über DHCP im lokalen Netz eine Netzwerkadresse zugeteilt. Sollte es Probleme geben, wie unter dem Blog "Feste IP-Adresse vergeben" vorgehen.

Nun kann  fast alles im Emulator gemacht werden wie mit dem realen Raspy.
Wenn man eine Konfiguration erstellt hat und diese auf einen echten Raspy übertragen will, sind folgende Schritte notwendig:
Zunächst die Datei /etc/x11/xorg.conf löschen und dann den Raspy sauber runterfahren:

sudo poweroff

Dann Qemu mit folgender Befehlsfolge starten:

qemu-system-armw -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -append "root=/dev/sda2 panic=1 init=/bin/sh rw" -hda 2013-12-20-wheezy-raspbian.img
Dadurch startet der Rsspy nicht komplett. Am prompt "#" folgendes eingeben:

nano /etc/ld.so.preload

Zu beachten ist, dass das Tastatur - Layout auf englisch steht. Daher ist / auf der der Taste -
Im Editor löscht man das Hash - Zeichen der einzigen vorhanden Zeile und speichert die Datei mit Strg-o.
Danach

nano /etc/udev/rules.d/90-qemu.rules

editierten. Der Bindestrich - ist unter ß zu finden. Die beiden darin enthaltenen Zeilen sind durch das Voranstellen eines # Zeichen (# zu finden unter Shift-3) zu deaktivieren. Danach Qemu - Fenster schließen. Mittels des Tools Win32Diskimager schreibt man das Image auf eine mind. 4 Gbyte große SD - Karte. Danach sollte der Raspy normal von dort booten können.
Weiter Infos sind unter folgenden Links zu finden:

Infos zum Artikel ct

qemu-emulating-raspberry-pi-the-easy-way