ubuntuusers.de

🚧 Am Sonntag, 5. Mai, werden ab 16 Uhr die Server aktualisiert und eine neue Inyoka-Version veröffentlicht. Das Portal wird mehrmals nicht verfügbar sein.

5. August 2013

menzer.net 5. August 2013 23:01

Linux 3.11-rc4

Die vierte Entwicklerversion ist verfügbar und deutet – sehr zu Torvalds Verdruss – nicht auf eine Beruhigung hin. Mehr Änderungen und ein größerer Patch gehören nicht zu den Dingen, die den Kernel-Chefentwickler erfreuen könnten.

Doch ein guter Anteil lässt sich durch die Verschiebung von printk in ein eigenes Unterverzeichnis. Diese Funktion sorgt für die lesbare Ausgabe von Kernel-Meldungen, wer schon einmal dmesg auf der Kommdozeile genutzt hat, hat ein gutes Beispiel für den Nutzen der Funktion.

Wie auch immer, der verbleibende Rest verteilt sich dann auf zumeist kleinere Änderungen. Am Grafik-Treiber radeon wurden einige Fehler korrigiert, ebenso am WLAN-Treiber iwlwifi, der auch um weitere Device-IDs für Karten erweitert wurde, die unter anderem in Dell-Geräten verbaut werden. Einige ARM-Korrekturen und Aufräumarbeiten am Samsungs Exynos-Treiber, runden das Bild ab.

Anmerkung am Rande: Die vorangegangene Version Linux 3.10 wurde von Greg Kroah-Hartman als neuer Longtime-Kernel auserkoren. Er wird damit Linux 3.0 ersetzen, dessen Langzeitunterstützung von Kroah-Hartman im Oktober nach über zwei Jahren eingestellt wird. Der Kernel der Long Term Support Initiative wird künftig 3.10 als Basis nutzen.

Die kleine Statistik:

Commits geänderte Dateien eingefügte Zeilen gelöschte Zeilen Datum Tage *
3.11-rc1 10 160 8 889 770 288 238 578 14.07.2013 14
3.11-rc2 252 662 3 588 93 838 21.07.2013 7
3.11-rc3 379 339 6 882 4 754 29.07.2013 8
3.11-rc4 394 386 6 662 5 011 04.08.2013 6
Gesamt 11 188 9 527 784 577 339 338 35

* Tage seit dem letzten rc/Release

Quellen: Linux Kernel Mailing List, Linux Kernel Monkey Log

Das letzte Inkscape-Wochenende in Berlin ist noch gar nicht so lange her. Aber es wird bald eine Fortsetzung bzw. Neuauflage geben, da der letzte Termin ja Pfingsten war und nicht alle, die wollten teilnehmen konnten. Aber der Raum war auch so voll. Jedenfalls haben so, die jenigen die auch am FrOSCon Wochenende keine Zeit haben wieder eine Chance
Nun gibt es also eine Fortsetzung und zwar vom 20. – 22. September 2013, wieder in der c-base. Die Teilnehmerzahl ist wieder auf Grund der Raumgröße begrenzt, wer gerne teilnehmen möchte, findet hier ein Formular zur Anmeldung. Das Ganze findet wieder als “Pay what you want“-Aktion statt. Wobei am Ende die Kosten für meine Anreise und Unterkunft zusammenkommen sollten. Wer von mir ein Buch haben möchte, sollte das im Formular auf jeden Fall ankreuzen.
Der Workshop beginnt am Freitag Abend mit einigen Dingen rund um SVG, der Oberfläche von Inkscape, den Verzeichnissen, Zooming und Panning und setzt sich dann am Samstag morgen fort mit den Zeichenwerkzeugen. Nach meinen Erfahrungen schaffen wir in bestimmte Themen, wie Live Pfadeffekte, Gekachelte Klone und vor allem Filter nur Einblicke aber die reichen aus, um im Selbststudium sich damit beschäftigen zu können. Wann immer es geht schieben wir auch praktische Teile ein, bist Sonntag Abend sollten wir auf diese Art und Weise alle Funktionen von Inkscape kennengelernt haben.

Bei PPSX Dateien handelt es sich um Slideshowdatei im OpenXML Format von Microsoft. Das Problem an diesen Dateien ist, das man sie nur öffnen und anschauen kann. Danach beenden sie sich wieder. Wenn man sie nun Drucken oder Bearbeiten möchte schaut man in die Röhre.

Der Dialog um die Präsentation zu optimieren

Der Dialog um die Präsentation zu optimieren

Auch LibreOffice bietet im ersten Moment keine Möglichkeit an, eine solche Slideshow zu speichern. Über einen Umweg ist es dann aber doch möglich. Dazu wird die Präsentation in LibreOffice geladen und anschließend mit der Tabtaste (Alt + Tab bzw. Cmd + Tab) das LibreOffice Fenster gesucht und geöffnet. In diesem wählt man nun den Menüpunkt „Extras“ -> „Präsentation komprimieren…“ aus. Der sich öffnende Assistent optimiert die Präsentation und speichert sie anschließend als ODP-Datei. Warum LibreOffice hier keine direkte Möglichkeit der Speicherung anbietet ist die Frage - schließlich scheint es nicht technisch bedingt zu sein.

Berichten zufolge wurde nicht nur der Betreiber von Tor Freedom Hosting festgenommen, welcher große Teile der Tor hidden services hostete (u.a. wohl TorMail) und eine große Anzahl von hidden services ist nicht mehr erreichbar, sondern es wurden angeblich  seit einigen Tagen (?) auch Javascript Angriffe auf das TorBrowserBundle auf diversen Tor hidden services installiert.
Die Angriffe gehen wohl vom FBI aus, welches es auf die Vertriebsstrukturen von Kinderpornografie abgesehen hat, dies ist laut Heise.de zumindest der Grund für die Festnahme von Eric Eoin Marques.

Die Entscheidung der Tor Entwickler_innen Javascript im TorBrowserBundle standardmäßig zu aktivieren fällt ihnen offenbar gerade auf die Füße. Auch wenn die Intention durch leichtere Handhabung mehr Nutzer_innen für das BrowserBundle zu gewinnen sicherlich auch nicht ganz unsinnig war.

Betroffen sind laut ersten Analysen nur Windows Nutzer_innen, Ziel des Angriffs ist scheinbar die Aufhebung der Anonymität von TorBrowserBundle Nutzer_innen mittels eines Cookies (Vgl. http://www.twitlonger.com/show/n_1rlo0uu , http://pastebin.mozilla.org/2777139 )

Insofern NoScript im BrowserBundle installiert ist, kann Javascript leicht seitenabhängig kontrolliert werden (Youtube Tutorial). Die wichtigste Einstellung sollte zunächst sein Scripte allgemein zu verbieten! Danach kann Javascript auf ‘vertrauenswürdigen’ Seiten wieder aktiviert werden.

Momentan scheinen wie gesagt nur Tor hidden services die zum Vertrieb von Kinderpornos genutzt wurden betroffen zu sein, was durchaus auch sein positives hat, allerdings zeigt der Angriff die generelle Angreifbarkeit der Anonymität im Tor Netzwerk. Dies zeigt insbesondere nach Snowdens Enthüllungen, dass es um Techniken der Überwachung zu trotzen schlecht steht.

Update [05.08.13] Auf dem Blog des TorProject gab es eine weitere Stellungnahme zu der Attacke, dabei wurde klargestellt, dass die aktuellen TorBrowserBundles nicht von der ausgenutzen Sicherheitslücke betroffen sind (Vgl. security announcement).

Berichten zufolge wurde nicht nur der Betreiber von Tor Freedom Hosting festgenommen, welcher große Teile der Tor hidden services hostete (u.a. wohl TorMail) und eine große Anzahl von hidden services ist nicht mehr erreichbar, sondern es wurden angeblich  seit einigen Tagen (?) auch Javascript Angriffe auf das TorBrowserBundle auf diversen Tor hidden services installiert.
Die Angriffe gehen wohl vom FBI aus, welches es auf die Vertriebsstrukturen von Kinderpornografie abgesehen hat, dies ist laut Heise.de zumindest der Grund für die Festnahme von Eric Eoin Marques.

Die Entscheidung der Tor Entwickler_innen Javascript im TorBrowserBundle standardmäßig zu aktivieren fällt ihnen offenbar gerade auf die Füße. Auch wenn die Intention durch leichtere Handhabung mehr Nutzer_innen für das BrowserBundle zu gewinnen sicherlich auch nicht ganz unsinnig war.

Betroffen sind laut ersten Analysen nur Windows Nutzer_innen, Ziel des Angriffs ist scheinbar die Aufhebung der Anonymität von TorBrowserBundle Nutzer_innen mittels eines Cookies (Vgl. http://www.twitlonger.com/show/n_1rlo0uu , http://pastebin.mozilla.org/2777139 )

Insofern NoScript im BrowserBundle installiert ist, kann Javascript leicht seitenabhängig kontrolliert werden (Youtube Tutorial). Die wichtigste Einstellung sollte zunächst sein Scripte allgemein zu verbieten! Danach kann Javascript auf ‚vertrauenswürdigen‘ Seiten wieder aktiviert werden.

Momentan scheinen wie gesagt nur Tor hidden services die zum Vertrieb von Kinderpornos genutzt wurden betroffen zu sein, was durchaus auch sein positives hat, allerdings zeigt der Angriff die generelle Angreifbarkeit der Anonymität im Tor Netzwerk. Dies zeigt insbesondere nach Snowdens Enthüllungen, dass es um Techniken der Überwachung zu trotzen schlecht steht.

Update [05.08.13] Auf dem Blog des TorProject gab es eine weitere Stellungnahme zu der Attacke, dabei wurde klargestellt, dass die aktuellen TorBrowserBundles nicht von der ausgenutzen Sicherheitslücke betroffen sind (Vgl. security announcement).

4. August 2013

Neues aus der Mozilla Design-Schmiede. Unter diesem Titel wird in regelmäßigen Abständen über aktuelle Mockups, Design-Experimente und Ähnliches berichtet. Manches davon wird in dieser oder ähnlicher Form sicher den Weg in ein Mozilla-Produkt finden, anderes wird vielleicht nie über den Status eines Entwurfes oder Experiments hinausgehen, viele Ideen entwickeln und verändern sich über die Zeit und diese Entwicklungen werden wir in dieser offenen Serie beobachten können. Und manches wird zur Spekulation anregen. Heute mit einer Spezial-Ausgabe im Comic-Stil.

Unter dem Motto Connecting Firefox to Me hat Mozilla-Designerin Larissa Co drei Konzepte erarbeitet, welche den Nutzer im Alltag unterstützen sollen. Diese Konzepte werden anhand von Geschichten im Comic-Stil erzählt. Die Konzepte sind Teil des Projektes Task Continuity, in dessen Zusammenhang das User Experience-Team von Mozilla versucht, das in den letzten Jahren beobachtete Userverhalten und Trends zu verstehen und neue Feature-Möglichkeiten für Firefox zu identifizieren, um die Bedürfnisse der Nutzer zu erfüllen.

Web Workspaces

Bei dem ersten Konzept handelt es sich um sogenannte Web Workspaces. Die Idee dahinter ist es, dedizierte Arbeitsbereiche zum Sortieren und Speichern von Inhalten zu schaffen, welche in Bezug zu einer bestimmten Aufgabe stehen. Als mögliche Szenarien werden genannt eine Reise oder eine Überraschungsparty zu planen, eine Facharbeit zu schreiben, eine Arbeitsstelle zu suchen oder Weihnachtsgeschenke zu kaufen.

Die Web Workspaces werden in diesem Konzept als Erweiterung der Neuer Tab-Seite dargestellt, über welche neue Workspaces beliebig angelegt und archiviert werden können. Die Workspaces können dabei privat sein oder geteilt werden. Workspaces gehen dabei über reine Linksammlungen hinaus und sollen es dem Nutzer ermöglichen, Inhalte zu sammeln und Notizen zu machen.

Weitere Ideen sind es, dem Nutzer Links ausgehend von den aktuellen Inhalten vorzuschlagen, es verschiedenen Leuten zu ermöglichen, Inhalte zu einem Workspace beizutragen und mit Partnerdiensten zu verknüpfen, so könnte es beispielsweise eine Integration von Evernote-Notizen geben.

All-Terrain Browsing

Beim All-Terrain Browsing geht es darum, Inhalte auf jedem Gerät und zu jeder Zeit sofort verfügbar zu machen. Im ersten beschriebenen Szenario sucht eine Nutzerin im Web nach einem Rezept für das Abendessen und sendet die Seite an ihr Smartphone, bevor sie in den Supermarkt geht. Im Supermarkt kann sie dann die benötigten Zutaten vom Smartphone ablesen, die entsprechende Seite wurde automatisch zur Offline-Nutzung gespeichert. Im zweiten beschriebenen Szenario stößt die Nutzerin auf ihrem Smartphone über Twitter, während sie auf den Bus wartet, gerade auf einen spannenden Artikel. Sie möchte diesen Artikel später lesen und markiert diesen darum entsprechend. Der Artikel wird anschließend zwischen allen Geräten synchronisiert. Dazu gibt es eine entsprechende Tab-Gruppe mit Seiten zum späteren Lesen.

Weitere Ideen sind eine “An ein Gerät senden”-Möglichkeit auf Geräten, für welche kein Firefox existiert, NFC, Bluetooth oder WLAN als andere Möglichkeit zum Senden von Links sowie spezielle ToDo-Listen, welche von allen Geräten aus zugänglich sind.

Social Superpowers

Das dritte Konzept beschreibt schließlich eine Art Social Hub in Firefox. Der hier gezeigte Anwender nutzt täglich Soziale Netzwerke und sieht im Social Hub von Firefox, was es Neues gibt. Dieser kombiniert die Neuigkeiten aller seiner Sozialen Kanäle wie Facebook und Twitter in einem einzigen Feed. Von hier aus kann er direkt Links ansehen und Einträge kommentieren. Außerdem können Meldungen aus dem einen Sozialen Netzwerk in einem anderen geteilt werden. Das Social Hub ist auch auf dem Smartphone verfügbar, so dass der beschriebene Nutzer jederzeit sozial vernetzt ist.

Weitere Ideen sind es, Inhalte per Drag and Drop in das Social Hub mit Sozialen Netzwerken zu teilen, den Bildschirm zu teilen und mit Freunden gemeinsam auf den selben Seiten zu surfen und Soziale Netzwerke zu gruppieren beziehungsweise Gruppen von Kontakten zu erstellen, um nur Beiträge in Zusammenhang mit der Arbeit oder der Familie zu sehen.

Firefox on TV

Comics kann aber nicht nur Larissa Co, sondern auch Mozilla-Designer Zhenshuo Fang. Er hat sich mit den Möglichkeiten beschäftigt, Firefox und TV-Geräte zusammenzubringen und zwei mögliche Szenarien in Form von Comics erstellt.

Im ersten Szenario wird ein Anwender beschrieben, welcher nach der Arbeit nach Hause kommt und Sport schauen möchte. Statt das TV-Gerät selbst zum Einstellen der Sendung zu benutzen, nutzt dieser sein Tablet und sucht auf diesem in seinem Firefox nach einem Livestream. Er klickt den entsprechenden Stream auf dem Tablet an und sofort startet die Übertragung sowohl auf dem Tablet als auch auf dem TV-Gerät. Auf dem Tablet hat er außerdem Kontrollmöglichkeiten wie zum Pausieren des Streams. Beim Holen der Pizza, welche er sich zuvor in den Ofen geschoben hatte, nimmt er das Tablet mit in die Küche und verpasst so nichts vom Spiel. Nach dem Essen schaut er das Spiel weiter am TV und nutzt das Tablet dazu, um zu sehen, was andere gerade zum Spiel über Twitter schreiben.

Im zweiten Szenario wird eine Hausfrau und Mutter beschrieben, welche keine Folge ihrer Lieblings-Sendungen im TV verpassen möchte. Während ihre Kinder in der Schule sind, möchte sie eine Pause machen und schaltet den Fernseher ein. Sie öffnet Firefox auf ihrem Tablet und der Fernseher zeigt Bilder ihrer Lieblings-Sendungen und Familien-Fotos. Sie wählt auf ihrem Tablet die Sendung aus, welche sie sehen möchte und das Streaming auf dem Fernsehgerät beginnt. Als das Telefon klingelt, kann sie die Sendung über die Pause-Kontrolle auf dem Tablet unterbrechen. Am Telefon wurde ihr mitgeteilt, dass die Reparatur des Autos abgeschlossen und das Auto bereit zur Abholung ist. Darum sendet sie die Sendung über das Tablet auf ihr Smartphone, um es auf dem Weg sehen zu können. Die Sendung beginnt auf dem Smartphone an der Stelle, an welcher sie unterbrochen worden ist.

Der Wochenrückblick lässt das Geschehen der vergangenen Woche rund um Ubuntu, Linux und Open Source Revue passieren.

Rund um Ubuntu

Ubuntu Edge

Das Ubuntu-Edge-T-Shirt. (C) Canonical
Das Ubuntu-Edge-T-Shirt. (C) Canonical

Noch immer ist Canonicals Smartphone Ubuntu Edge ein permanentes Gesprächsthema. Auch wenn die vorherige Woche etwas turbulenter war, gibt es auch diese Woche Neuigkeiten. So gibt es für Unterstützer der Indiegogo-Kampagne, die kein Smartphone haben wollen (oder denen der Preis zu hoch ist), für 50 US-Dollar ein T-Shirt, was im September 2013 verschickt wird, wenn die Kampagne erfolgreich ist.

Die Firma LastPass unterstützt alle Backer durch eine Ein-Jahres-Lizenz ihres Passwortmanagers für jeden Käufer eines Ubuntu Edge. Nach dem Angebot wurde aber auch Kritik laut, dass die Firma damit selbst nur Kunden fangen will. Zusätzlich stehen die Server, auf denen die Passwörter gespeichert werden, in den USA, was nach dem NSA-Überwachungsprogramm PRISM für den einen oder anderen ein Ausschlusskriterium ist.

Schaut man sich die neuesten Backerzahlen der Crowdfunding-Kampagne an, so sieht man, dass in den letzten 7 Tagen nur weitere 1,7 Millionen US-Dollar dazugekommen sind. Damit liegt man aktuell (Sonntagabend) etwas mehr als 5 Millionen unter dem Plan (wenn die Verkäufe linear steigen würden). Der Weg bis zu den angepeilten 32 Millionen am 21. August 2013 wird also sehr steinig.

Ubuntu Touch

In der neueste Alpha-Version von Saucy_Salamander ist eine Testversion von Unity 8 enthalten. Derzeit startet die Anwendung in einem Fenster die Desktop-Oberfläche und man kann zwischen Tablet- und Smartphone-Größe wechseln. Unity 8 soll ab Ubuntu 14.10 die aktuelle Unity-Oberfläche ablösen und damit auch erlauben, auf Smartphone und PC die gleiche Oberfläche zu nutzen.

Die Core Apps von Ubuntu Touch sind auf einem guten Weg, wie

Nicholas Skaggs in seinem Blog berichtet. So sind Terminal, Dateimanager und Wetteranzeige fertig, Uhr und Taschenrechner stehen kurz davor. Einige Arbeit und offene Testfälle zu schreiben gibt es noch für den RSS-Reader, den Kalender oder die Musikabspielsoftware.

Daniel Holbach berichtet über die Arbeiten,

Ubuntu-Touch-Images für alle zur Verfügung zu stellen, die ihr aktuelles Smartphone damit flashen wollen. Die Idee ist es, phablet-flash zu nutzen, wenn sich die Image-Ersteller an diese Anleitung halten.

Xubuntu Desktop Showcase

Das Xubuntu-Team hat einen Xubuntu Desktop Showcase angekündigt, bei dem Nutzer Screenshots ihres Xubuntu-Desktops machen können, um diesen dann bei devianART hochzuladen. Pro Woche wird dann vom Xubuntu-Team ein Bild ausgesucht, was die Xubuntu-Webseite schmücken soll.

Kein PowerPC mehr für Ubuntu

Die seit Jahren von der Ubuntu-Community gepflegte PowerPC-Version von Ubuntu wird eingestellt. Da PowerPCs im Desktop-Bereich nicht mehr so weit verbreitet sind, seit Apple 2005 auf Intel-Hardware umgestiegen ist, und die Anpassungen von Unity auf PowerPC-Hardware wegen fehlender Grafiktreiber nahezu unmöglich ist, soll es in Zukunft nur noch eine Server-Variante von Ubuntu für PowerPC geben.

ubuntuforums.org wieder online

Nach dem Angriffen auf das internationale Ubuntu-Forum ist dieses nun wieder verfügbar. Geändert wurde die Login-Prozedur, sodass man nun zwingend ein Ubuntu-One-Konto benötigt, um sich im Forum anmelden zu können.

Neues rund um Linux

Seasons of KDE 2013 startet

Seasons of KDE bietet die Möglichkeit, ein KDE-Projekt zu unterstützen, sollte dies beim Google Summer of Code nicht geklappt haben. Neben Programmieraufgaben soll es auch Projekte im Bereich Artwork und Werbung geben. Zusätzlich ist das Programm für alle Entwickler offen, auch wenn man jüngere Entwickler bevorzugen will. Mehr Informationen gibt es im Blogbeitrag.

Open Source Awards verliehen

O'Reilly hat auf der OSCON 2013 die Open Source Awards verliehen. Ausgezeichnet wurden u.a. der ehemalige Debian-Chef Martin Michlmayr, Google-Entwickler Behdad Esfahbod, Entwicklerin Jessica McKellar für die Arbeit in der Python Software Foundation und Kernelentwicklerin Valerie Aurora für ihre Arbeit in der Ada Initiative.

Firefox Flicks 2013

Mit dem Wettbewerb Firefox Flicks will die Mozilla Foundation auch dieses Jahr wieder zeigen lassen, was ihr Browser kann. In 309 Videos haben Filmemacher gezeigt, wie sie das Thema „Die Macht des Webs auf Mobilgeräten“ verstehen. Bis zum 31. August 2013 kann die Community über die besten Videos abstimmen.

GEMA-Alternative C3S erreicht erstes Ziel

Mitte Juli hat die geplante GEMA-Alternative C3S (Cultural Commons Collecting Society) auf der Plattform startnext eine Crowdfunding-Kampagne gestartet, um die Fortführung des Projekts zu finanzieren. Nach knapp drei Wochen ist das http://www.heise.de/open/meldung/Geplante-GEMA-Alternative-C3S-erreicht-Etappenziel-1928681.html Zwischenziel von 50000 Euro erreicht], bis zum Endziel von 200000 Euro in zwei Monaten ist aber noch viel zu tun.

Neues aus der Software-Welt

Linux-Icon-Theme Moka verfügbar

Linux-Icon-Theme Moka (C) Sam Hewitt (CC-BY-SA 3.0)
Linux-Icon-Theme Moka (C) Sam Hewitt (CC-BY-SA 3.0)

Sam Hewitt hat in seinem Blog ein neues Linux-Icon-Theme namens Moka vorgestellt. Er ist noch nicht ganz fertig, will aber bis Ende August alle Icons erstellt haben. Die Icons können über GitHub bezogen werden und unterliegen einer Creative-Commons-Lizenz.

Hybrid-Unterstützung für Wayland

In einer experimentellen Version wurde Wayland die Möglichkeit gegeben, mit Hybridgrafik umzugehen. Damit werden Dual-GPU-Lösungen unter Linux unterstützt und es ist möglich, im laufenden Betrieb von einer Grafikkarte auf eine andere umzuschalten.

Hardwareecke

Utilite: ARM-PC mit Ubuntu

Utilite nennt sich der kleine ARM-basierte PC mit Ubuntu. Für 99 bis 219 Euro gibt es drei Modelle mit Freescale Cortex-A9-Prozessor, 512 MB bis 2 GB Arbeitsspeicher, HDMI- und DVI-Ausgang, USB-Anschlüssen, Ethernet und ggf. WLAN.

Open Hardware Minnowboard von CircuitCo und Intel

CircuitCo Electronics und Intel haben das Minnowboard vorgestellt, eine Platine mit Intel-Atom-Prozessor E640, 1 GB Arbeitsspeicher, HDMI, USB, Ethernet und Intel-Grafikhardware. Für 199 US-Dollar soll das Board erworben werden können.

NVIDIA SHIELD veröffentlicht

NVIDIA haben in ihrem Blog die neue portable Spielekonsole SHIELD vorgestellt. Die mit einem NVIDIA-Tegra4-Chip versehene Konsole hat einen ausklappbaren 5-Zoll-Touchscreen und nutzt Googles Android als Betriebssystem. Demzufolge kann man die Spiele über Googles Play Store erwerben. Derzeit ist das 299-US-Dollar-teure Gerät nur im US-amerikanischen Raum verfügbar.

Sprachsteuerung mit Motorolas Moto X

Motorola hat sein neues Smartphone Moto X vorgestellt, welches per Sprachsteuerung bedient werden kann. Über Googles Android werden alle Anfragen an Google gesendet und dort ausgewertet. (Kein Scherz!) Das Gerät soll ab September nur im US-amerikanischen Raum verfügbar sein.

freiesMagazin 08/2013 Titelseite

Heute ist die Augustausgabe von freiesMagazin erschienen und bringt viele spannende Artikel aus den Bereichen Linux und Open Source mit.

Inhalt der Ausgabe 08/2013

  • Firefox OS
  • Linux-Dateisysteme im Vergleich
  • XBMC
  • Der Juli im Kernelrückblick
  • Firefox-Erweiterungen mit dem Add-on-SDK erstellen – Teil VI
  • Costume Quest – Halloween im Sommer
  • Rezension: Think Like a Programmer
  • Rezension: Introducing Erlang
  • Rezension: Die elektronische Welt mit Raspberry Pi entdecken
  • Veranstaltungen

Downloads

Unter der Adresse http://freiesmagazin.de/mobil/ findet man immer die aktuelle und alle bisher erschienenen HTML- und EPUB-Ausgaben. Auf der Magazin-Seite können die letzten drei Ausgaben von freiesMagazin abgerufen werden, ältere Ausgaben findet man im Archiv.

Kontakt

Wer jeden Monat an die neue Ausgabe erinnert werden will, kann auch den RSS-Feed abonnieren. Leserbriefe mit Lob, Kritik, Anregungen oder Fragen und neue Artikelvorschläge können an die Redaktion geschickt werden.

3. August 2013

Seit fünf Jahren gibt es das „Seasons of KDE“-Programm und auch dieses Jahr sucht die KDE-Community wieder nach Teilnehmern, die sich in KDE bzw. KDE-Programmen verwirklichen wollen.

Wie KDE-Entwickler David Edmunson in seinem Blog schreibt, ist Seasons of KDE (SoK) ähnlich dem Google Summer of Code (GSoC), bei dem Studenten weltweit in verschiedenen Open-Source-Projekten mithelfen und mitprogrammieren können. Das SoK-Programm richtet sich aber an alle Entwickler und ist nicht nur auf Studenten ausgerichtet, auch wenn jüngere Menschen bevorzugt einen Platz erhalten sollen.

Der Ablauf ist ähnlich dem des GSoC. Die Teilnehmer suchen sich einen Mentor und ein Projekt, welches sie unterstützen wollen. Dem Mentor tragen sie eine Idee zur Verbesserung des Projekts bzw. eines KDE-Programmes vor und wenn diese angenommen wird, wird der Teilnehmer eine gewisse Zeit lang bei seiner Arbeit vom Mentor betreut. Wer keine eigene Idee hat, wird aber auch unterstützt, sodass sich für jeden etwas finden sollte. Mitunter kann man auch die KDE-Ideen des GSoC 2013 verwirklichen, die nicht umgesetzt wurden.

Im Gegensatz zum GSoC werden beim SoK nicht nur Programmierer gesucht. So soll es auch Projekte geben, die man in den Bereichen Artwork oder Marketing unterstützen kann. Empfehlungen, wie man außerhalb der Entwicklung etwas zu KDE beitragen kann, gibt es im KDE-Wiki.

Ist das SoK-Projekt erfolgreich (in der Regel werden zwei Monate für die Beendigung angesetzt), winken den Teilnehmer zwar keine Tausende von Euros, aber immerhin T-Shirts, ein Teilnahme-Zertifikat und andere kleinere Goodies.

Die Anmeldung zum SoK ist bereits möglich, erste Projekte werden wahrscheinlich im Laufe der kommenden Woche eingetragen.

Links

Nutzer einer E-Mail-Adresse bei Google Mail benötigen ab sofort kein eigenes Passwort für Mozillas Authentifizierungssystem Persona mehr, sondern können sich stattdessen direkt über Google authentifizieren.

Seit diesem April unterstützt Mozilla Persona sogenanntes Identity Bridging. Das bedeutet, dass sich Benutzer auf Webseiten, welche einen Persona-Login anbieten, mit ihren dort bestehenden Nutzerdaten anmelden können. Den Anfang machte Mozilla mit yahoo.com. Nutzer mit einer E-Mail-Adresse, welche auf @yahoo.com endet, benötigen seit dem kein Passwort mehr, die Verifizierung der Anmeldedaten übernimmt Yahoo!, damit bietet Persona einen klassischen passwortlosen Single Sign On, wie man ihn beispielsweise von Facebook oder Twitter kennt.

Selbiges gilt ab sofort für Nutzer von Google Mail. Nutzer von Googles E-Mail-Dienst benötigen kein eigenes Persona-Passwort mehr, sondern können sich direkt über ihr Google Konto authentifizieren.

dank einem Hinweis von Michael konnte ich einen Fehler im Kommentar-System beheben (Spam deleted). Die beiden WordPress-Plugins “Antispam Bee” und “NoSpamNX” kamen sich in die Quere. Nach der Deaktivierung von letzterem könnt ihr nun wieder die Kommentar-Funktion nutzen (worüber ich mich natürlich freuen würde).

ajax loader

Eines der Dinge die R wirklich gut kann ist Daten darstellen. Gerade im Interactive Mode.

Konkret migriere ich gerade meine Graphen/Statistiken in ein PDF. Um mit R portablen Output zu generieren ist knitr zum DeFacto Standard geworden. Möglich sind zum Beispiel Markdown und TeX. Allerdings funktioniert dort die einfache print() Methode für Daten nicht so gut, dafür gibts das Plugin xtable.

Man muss ja zum Glück kein TeX Gott sein um ein kleines Template zu ergoogeln. Wichtig ist nur der Teil am Ende. Das Einbetten von R Code in das Dokument.

Stats.Rnw
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
\documentclass[a4paper]{article}
\usepackage[british]{babel}
\begin{document}
\title{Quantifying Myself}
\author{Florian Baumann}
\maketitle\thispagestyle{empty}

\section{Runkeeper}

<<Biking_Table, echo=FALSE, results="asis">>=
source(file="../Sports/.R")
xtable(tail(a))
@

\end{document}

Das Plugin xtable versteht so ziemlich alle Datentypen und generiert natives TeX.

Um den R Teil im Dokument auszuführen wird das so-called .Rnw File durch R gejagt. Es ensteht pures TeX. Für die komplette Verarbeitung nutze ich ein R Script.

create.R
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/Rscript

# loading libraries
library(xtable)
library(knitr)

# Rnw to TeX
knit("Stats.Rnw", out="tmp/Stats.tex" )

# create and open pdf via system call
system("pdflatex -output-directory tmp/ Stats.tex && evince tmp/Stats.pdf")

Der Output:

Die auf Linux basierende Routerdistribution IPFire (http://www.ipfire.org/) besticht vor allem durch ihre Benutzerfreundlichkeit, was dazu führt das sie gerne und oft eingesetzt wird. Zum Projekt gehört dabei eine Wunschliste welche unter http://wishlist.ipfire.org/ zu finden ist.

Das IPFire Interface

Das IPFire Interface

Auf der Wunschliste können Projekte finanziert werden, so das sie anschließend bevorzugt implementiert werden. Vor allem der neuste Eintrag in der Wunschliste ist interessant: „Tor - Protecting Online Anonymity“ - bei diesem handelt es sich um die Integration des Anonymisierungsnetzwerkes Tor in IPFire, so das dass ganze für den Nutzer anschließend transparent abläuft. Dazu sollten ursprünglich knapp 1500 € gesammelt werden, mittlerweile sind es aber schon über 1600 €. Das bedeutet das wir uns in nächster Zeit auf eine IPFire Version mit Torintegration freuen dürfen, womit wir ein Schritt näher an benutzerfreundlicher und frustrationsfreier Sicherheit wären.

2. August 2013

Die Ubucon 2013 hat gestern die Anmeldung eröffnet. Die Ubuntu-Konferenz (bzw. eher Linux-Messe) findet dieses Jahr in Heidelberg vom 11. bis 13. Oktober statt. Neben der Anmeldung gibt es auch ein Gewinnspiel, bei dem man 3 Bücher von Galileo Computing und Eintrittskarten gewinnen kann.

Der Eintritt beträgt auch dieses Jahr wieder nur 10 Euro, wofür man ein ganzes Wochenende kostenlos Getränke und Essen erhält. Die Abendtreffen sind noch in Planung, es gibt Stadtführungen durch Heidelberg und ein illustres Programm, was aber noch etwas wachsen muss.

Ich freu mich jedenfalls drauf …

ajax loader

Musikfans ist der “loudness war” ein Begriff und es sträuben sich die Nackenhaare wenn sie daran denken. Damit CDs “lauter” klingen haben Toningenieure den Gesamtpegel der Alben angehoben und damit die Dynamik (dynamic range) reduziert. Das hat zur Folge, dass laute Stellen im Lied gar nicht wirklich laut sondern etwas kraftlos klingen, da sie relativ zum Rest des Liedes eben nicht mehr lauter sind. Außerdem sind Produktionen mit niedriger “dynamic range” auf Dauer anstrengend beim Hören.
Das ganze hat sich dann auch noch hochgeschaukelt, weil jede Band meinte ihr Album sollte eher lauter sein als das der anderen Bands, da man meinte ein leiseres Album wäre ein Album schlechterer Qualität. Dabei muss das Album nicht im Küchenradio möglichst laut sein wenn der Lautstärkenregler auf Anschlag steht sondern sollte auch bei guten Anlagen gut klingen. Die Lautstärke ist bei guten Anlagen egal, dafür gibt es den Verstärker.
Hier gibt es die Möglichkeit sich detailliert über dieses Thema zu informieren.
[Nachtrag 2013-08-02 17:50: Auf dieser Seite wird recht verständlich erklärt, warum Kompression ursprünglich nötig war (aber nicht, warum mittlerweile übertrieben wird).]

Auch als Metalfan hat man unter dem “loudness war” zu leiden. Gerade eine meiner Lieblings-Bands (Hypocrisy) bringt fürchterlich gemasterte Alben heraus. Hier ist jetzt das “brickwalling” ins Spiel zu bringen. Dieser Begriff beschreibt eine so niedrige Dynamik, dass eine regelrechte Musik-Wand entsteht. Wenn man sich dieses Hypocrisy-Lied anschaut sieht man, dass keinerlei Dynamik mehr vorhanden ist und es wie eine Mauer aussieht.

Nun hat Earache Records den Klassiker Scum von Napalm Death erneut als “Full Dynamic Range Edition” herausgebracht. Ein echter Lichtblick für alle “loudness war”-geplagten Metalfans. In dieser Grafik kann man deutlich den Unterschied der “dynamic range” sehen. Earache ist sich auch bewusst selbst üble Alben (bzgl. der “dynamic range”) verbrochen zu haben, wie man in deren Blog nachlesen kann.
Gut, dass sie es eingesehen haben und entgegen dem Trend nicht “laut” geremasterte Alben herausbringen (wie es oft bei Neuauflagen der Fall ist), sondern dem Musikliebhaber entgegen kommen und die Alben mit mehr Dynamik herausbringen.
Soweit ich gesehen habe sollen auch noch die Alben From Enslavement To Obliteration (Napalm Death), Realms Of Chaos (Bolt Thrower) und Heartwork (Carcass) folgen.
Eine positive Entwicklung, wie ich finde. Napalm Deaths “Scum” läuft bei mir die letzten Tage rauf und runter und Carcass’ “Heartwork” ist vorbestellt. Weiter so!

Seit Februar läuft zum dritten Mal Mozillas internationaler Kurzvideo-Wettbewerb Firefox Flicks, welcher Firefox-Fans und Filmemacher dazu einlädt, einen kurzen Videospot zu erstellen. In diesem Jahr steht Firefox Flicks unter dem Motto “Mobilisieren Sie sich”. Der Wettbewerb ist nun geschlossen. Ab sofort kann für das beste Video abgestimmt werden.

Neue Videos können für die diesjährige Ausgabe von Mozillas Kurzfilm-Wettbewerb Firefox Flicks nicht mehr eingereicht werden. Dafür kann nun bis zum 31. August abgestimmt werden. Die drei Gewinner des Publikumspreises erhalten eine Tasche mit Firefox Flicks-Fanartikeln und werden über die Kanäle von Mozilla Millionen Menschen bekannt gemacht. Die Jury kürt unabhängig davon die besten Filme der jeweiligen Regionen und wählt außerdem einen Gesamtsieger. Die Gewinner werden am 12. September beim Internationalen Film-Festival in Toronto bekanntgegeben.

1. August 2013

Anmeldung

Die Anmeldung für die diesjährige Ubucon ist ab sofort geöffnet. Die Ubucon 2013 startet am Freitag, den 11. Oktober, und endet am Sonntag, den 13. Oktober. Die Veranstaltungen findet am SRH Berufsförderungswerk in der Bonhoefferstraße 6 in Heidelberg statt.

Die Gebühr für Vorabanmeldungen beträgt 10 Euro. Der Betrag dient der Deckung der Verpflegungskosten in Form von Getränken und kleinen Snacks. Natürlich ist es noch möglich, sich auf der Ubucon vor Ort anzumelden. Der Unkostenbeitrag steigt dann auf 15 Euro.

Bitte benutzt zur Anmeldung dieses Formular. Wir freuen uns auf jeden Besucher!

Anreise und Übernachtung

Für die Anreise zur Ubucon haben wir eine Überssichtsseite erstellt, mit der jeder, der mit dem Auto, Zug oder Flugzeug unterwegs ist, hoffentlich nach Heidelberg findet.

Für die Übernachtungen konnten wir mit dem Gästehaus der SRH vereinbaren, dass einige Zimmer für Ubucon-Teilnehmer reserviert werden. Genaueres zur Buchung und alternative Unterkünfte findet man auf der Überssichtsseite.

Weitere Informationen für Besucher gibt es auf der Besucherseite.

Gewinnspiel

Pünktlich mit der Anmeldung zur Ubucon habt Ihr die Möglichkeit, drei Preise bestehend aus einem Buch und der Übernahme des Eintrittspreises zu gewinnen. Alles, was Ihr dafür tun müsst, ist die folgenden drei Fragen richtig beantworten und die Lösungen bis spätestens 11. August 2013, 23:59 Uhr an besucher@ubucon.de zu schicken oder einen Kommentar zu dieser News zu schreiben. (Die Kommentare werden aber erst mit Ablauf der Einsendefrist freigeschaltet.)

Die Fragen

Folgende drei Fragen müssen richtig beantwortet werden:

  1. Welches Betriebssystem nutzte Linus Torvalds vor der Programmierung von Linux?
  2. Nenne zwei Filme der Blender Foundation, die mit Hilfe von Blender erstellt wurden.
  3. In welchem Jahr ist die Mir abgestürzt?

Hinweis: Mitglieder des Organisationsteams der Ubucon sowie deren Freunde und Verwandte sind von dem Gewinnspiel ausgeschlossen. Der Rechtsweg ist ausgeschlossen.

Die Preise

Unter allen richtigen Einsendungen werden drei Gewinner ausgelost. Die Gewinner dürfen sich eines der drei folgenden Bücher aussuchen, die freundlicherweise vom Verlag Galileo Computing zur Verfügung gestellt wurden.


Shell-Programmierung – Das umfassende Handbuch von Jürgen Wolf und Stefan Kania

Dieses umfassende Handbuch bietet alles, was man zur Shell-Programmierung wissen muss. Behandelt werden: Variablen, Parameter und Argumente, Kontrollstrukturen, Terminal-Ein- und -ausgabe, Funktionen, Signale, Scripts und Prozesse, Fehlersuche und Debugging. Weiter geht's mit den wertvollen Helfern grep, sed und awk. Eine umfangreiche Linux-UNIX-Referenz bietet alle grundlegenden Kommandos in übersichtlicher Form.


Blender 2.6 – Das umfassende Training von Sebastian König (DVD)

Im Komplettpaket aus umfassender 3D-Schulung und Blender 2.6 erklärt der zertifizierte Blender-Trainer Sebastian König die faszinierende Welt der 3D-Grafiken und Animationsfilme. So lernt man die Oberfläche von Blender kennen, erstellt mit den Blender-Werkzeugen erste 3D-Objekte und erfährt alles über Material, Texturing und Rendering. Darüber hinaus zeigt Sebastian König zahlreiche Profi-Techniken, mit denen man einen 3D-Charakter erstellen und animieren kann.


Einstieg in Linux – Linux verstehen und einsetzen von Steffen Wendzel und Johannes Plötner

Die fünfte, aktualisierte Auflage des Linux-Bestsellers! Dieses Buch ist für Linux-Einsteiger geeignet, die die Möglichkeiten des Betriebssystems voll ausschöpfen möchten und keine Angst haben vor Administration, Shell oder Netzwerkkonfiguration.
Man erfährt alles Wichtige zu Installation, grundlegender Funktionsweise von Linux, Bootstrap-Vorgang, Programmen und Prozessen, Administration, Shell, vi, X11, Netzwerken, Drucken und Textverarbeitung sowie Multimedia.

Nun werde ich mich einem weiteren Projekt widmen, welches gleich eine eigene Kategorie bekommt: Heimautomatisierung. Da ich einen kleinen Raspberry PI in meinem Besitz habe, werde ich den Großteil der Automatisierung über diesen laufen lassen.

In diesem ersten Teil werde ich versuchen mein NAS automatisch mit dem HTPC (XBMC) starten zu lassen. Von Hause aus hat das eTrayZ NAS leider kein WOL (Wake On Lan), sodass ich mir über einen sehr unkonventionellen Weg helfen musste.

Der erste fehlgeschlagene Versuch: Steuerung über den Raspberry PI, einen Standby Killer und dem Infrarot Toy V2 bzw IRToy V2 (Details / Bezugsquelle)…
“Leider” war der Verbrauch des NAS zu niedrig, sodass der SBK immer wieder nach einer Minute vollständig abschaltete, da er annahm, das angehängte Gerät wäre im Standby. Also musste ein anderer Weg her.

Nun habe ich mir folgende Anleitung vorgenommen: [Raspberry Pi] erster Schritt zur Hausautomation (PDF) oder auf englisch (PDF)
Aber auch dieser Beitrag geht einen ähnlichen Weg: Funksteckdosen mit dem Raspberry Pi schalten (PDF)

Die Idee:

Beim Start des HTPC mit XBMC (auf Ubuntu Basis) wird ein Befehl an den Raspberry Pi gesendet, welcher nun per Funk die Funksteckdose des NAS aktiviert. Beim Abschalten wird wieder ein Befehl an den Raspberry Pi abgesetzt, welcher zuerst ein Shutdown-Script (z.B. von hierPDF) auf dem NAS aufruft, damit dieses sauber herunter fährt und nach einer vordefinierten Zeit wird der Befehl zum Abschalten an die Funksteckdose zum Strom trennen gesendet.

Der Einkauf:

Also habe ich mir aus dem Baumarkt für knapp 14 Euro ein Set Funksteckdosen von der Firma ELRO besorgt. Wichtig dabei war die Möglichkeit, die Funkeinheiten per Schalter auf einen Code zu konfigurieren. Weiterhin ein Funkmodul für 433Mhz (z.B. von eBay)

Sendemodul Sender Sendeeinheit 433 Mhz Funk Modul

Die Funktion der Scripte:

  • Zuerst einmal benötigen wir ein Script auf dem HTPC, welches nach dessen Start ein Script auf dem Pi aufruft das wiederum das Funksignal “anschalten” an die Funksteckdose des NAS sendet. Dieses Script muss allerdings auch nochmal bei Shutdown mit einem anderen Parameter aufgerufen werden um eben diesen auch wieder an den Pi weiter zu geben.Nennen wir dieses Script “raspberrysender
  • Nun benötigen wir ein weiteres Script, welches 1. die Funksteckdose(n) schaltet und das 2. NAS sauber herunter fährt.Dieses Script nennen wir “pi_gateway.php” und es liegt auf dem Pi. Es fungiert also wie oben beschrieben als eine Art Brücke zwischen dem HTPC und der Funksteckdose sowie NAS. Wer seinen Pi als XBMC nutzt, dürfte es hier etwas leichter haben.Das XBMC ruft also mit “an” (beim Start) oder “aus” (beim Herunterfahren) über raspberrysender die pi_gateway.sh auf dem Pi auf.
  • Letztendlich noch ein kleines Script auf dem NAS, welches eben diesen sauber herunter fährt. Dieses nennen wir “nas_shutdown.php” und es wird durch die pi_gateway.sh aufgerufen.

Ich habe mich bewusst für PHP Scripte entschieden, da ich auf dem NAS sowie dem Raspberry Pi jeweils einen Webserver laufen habe. Dadurch spare ich mir einen Umweg über eine Konsolen-Anmeldung. Wer eigene Scripte auf Basis von reinen Konsolen-Befehlen verwenden möchte, der kann sich unter folgendem Link über einen Befehl zur Anmeldung und anschließenden Ausführung von Scripten informieren: http://stackoverflow.com/questions/305035/how-to-use-ssh-to-run-shell-script-on-a-remote-machine

Das ganze als Skizze:
IMG_20130511_230824_20130511231626169

Wichtiger Hinweis: damit auf dem Raspberry Pi über das PHP-Script die “elro_wiringpi.py” angesteuert werden kann, müssen SUDO Rechte für diese gesetzt werden… und eben nur für dieses Verzeichnis, denn ein voller root-Zugang für den www-user wäre ein Sicherheitsrisiko.

sudo nano /etc/sudoers

ganz am Ende einfügen:

#fuer den elro_wiringpi.py Aufruf ueber php
www-data ALL=(ALL) NOPASSWD: /home/pi/wPi/./

Die Scripte:

nas_shutdown.php (NAS) (direkter Aufruf: http://192.168.xx.yy/nas_shutdown.php?a=ok ) – wir werden dieses Script mittels wget mit der Spider-Option aufrufen.

<html>
  <body>

<?php
if (!isset($_GET["a"]))
{
  echo "<b>Fehler</b>";
}
else
{
   if ($_GET["a"] === "ok")
   shell_exec("sudo /sbin/shutdown -h now");
}
?>

  </body>
</html>


pi_gateway.php (Pi)
(direkter Aufruf: http://192.168.xx.yy/pi_gateway.php?a=1 bzw. 0 bei Shutdown ) – wir werden auch dieses Script mittels wget mit der Spider-Option aufrufen. Erstellt mittels “nano /var/www/pi_gateway.php”

Zeile 17 bitte an die Adresse, Port und ggfls. htaccess Login-Daten anpassen.

<html>
  <body>

<?php
if (!isset($_GET["a"]))
{
  echo "<b>Fehler im Aufruf</b>";
}
else
{ 
   if ($_GET["a"] === "1"){
        echo "anschalten";
        echo trim(@shell_exec("sudo /home/pi/wPi/elro_wiringpi.py 2 1"));
   }
   if ($_GET["a"] === "0"){
      echo "abschalten";   
      echo trim(@shell_exec("wget --spider --user='***' --password='***' 'http://192.168.xx.yy:80/nas_shutdown.php?a=ok' > /dev/null"));
      echo trim(@shell_exec("sleep 30"));
      echo trim(@shell_exec("sudo /home/pi/wPi/elro_wiringpi.py 2 0"));
   }  
echo "<pre>$output</pre>";
}
?>

  </body>
</html>


raspberrysender (XBMC)
– wird im Ordner “/etc/init.d/” angelegt. Der Start und der Stopp erfolgen mittels der Parameter “start” bzw. “stop”
Diese lassen wir dann noch beim Start bzw. Shutdown aufrufen.
Zeile 9 und 13 bitte an die Adresse, Port und ggfls. htaccess Login-Daten anpassen.

#!/bin/sh
#/etc/init.d/raspberrysender

### BEGIN INIT INFO
# Required-Start: $local_fs $network $remote_fs
# Required-Stop: $local_fs $network $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
### END INIT INFO

touch /var/lock/raspberrysender

case "$1" in
start)
echo "Starting NAS "
sleep 1m
wget --spider --user='***' --password='***' 'http://192.168.xx.yy:80/pi_gateway.php?a=1' > /dev/null
;;
stop)
echo "STOPPING NAS "
wget --spider --user='***' --password='***' 'http://192.168.xx.yy:80/pi_gateway.php?a=0' > /dev/null
;;
*)
echo "Usage: /etc/init.d/raspberrysender {start|stop}"
exit 1
;;
esac
exit 0

“chmod +x raspberrysender” nicht vergessen.

Nur noch mittels folgendem Befehl in die entsprechenden update-rc.d:

sudo update-rc.d -f raspberrysender start 99 2 3 4 5 . stop 01 0 1 6 .

# Wer das Script wieder aus dem Start nehmen möchte:
# sudo update-rc.d -f  raspberrysender remove

Dabei wird der Start möglichst spät durchgeführt, damit das Netzwerk bereit ist und der Stopp erfolgt aus gleichem Grund so früh wie möglich.

Die Installation des Funk-Moduls:

Nach dem Verbinden des 433Mhz Funkmoduls mit dem Pi werden nun git, gcc, python-dev und python-setuptools nachinstalliert:

apt-get update
apt-get install git gcc python-dev python-setuptools

unter Raspbmc zusätzlich noch “make” installieren.

und weiter:

#Folgende Kommandos unter dem Benutzer root ausgeführen:
sudo su
cd /usr/local/src
apt-get install git-core
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build

git clone https://github.com/WiringPi/WiringPi-Python.git
cd WiringPi-Python
git submodule update --init
python setup.py install

Nun noch die Rechte anpassen:

sudo nano /etc/rc.local

und vor “exit 0″ folgendes schreiben:

sudo -u pi /usr/local/bin/gpio export 17 out

Den Code von “elro_wiringpi.py” in einer Datei speichern (z.B. mittels “sudo nano /home/pi/wPi/elro_wiringpi.py”) <- bitte den Pfad genau beachten, denn für diesen erlauben wir später einen root Aufruf direkt vom Webserver um das Python Script ansteuern zu können… mehr dazu unten)

Dabei den Hauscode (= Code in der Fernbedienung) in Zeile 96 anpassen.

#!/usr/bin/env python
"""
For switching Elro wall plugs using Python on Raspberry Pi with wiringPi Library. 
from Dirk J. 2013

Requirements:
-WiringPi-Python Library
-433 Mhz Transmitter connected
-Export of GPIO port: gpio export <pin> out (pin=Broadcom GPIO number. Pin with connection 
 to 'data' of an 433Mhz Transmitter)

Example
$ gpio export 17 out      # Exports pin 17 (e.g. in /etc/rc.local)
$ ./elro_wiringpi.py 8 1  # Switch D is turned on

This file uses wiringPi to output a bit train to a 433.92 MHz transmitter, allowing you
to control light switches from the Elro brand (AB440S). You need to export the pin before starting the
script. It does not require root permission

Credits:
This file is a just slightly modified version of "elropi.py" from by Heiko H. 2012:
   http://pastebin.com/aRipYrZ6
 It is changed to run without root by using WiringPi-Python instead of the RPi.GPIO library.
C++ source code written by J. Lukas:
   http://www.jer00n.nl/433send.cpp
and Arduino source code written by Piepersnijder:
   http://gathering.tweakers.net/forum/view_message/34919677
Some parts have been rewritten and/or translated.

This code uses the Broadcom GPIO pin naming.
For more on pin naming see: http://elinux.org/RPi_Low-level_peripherals

Version 1.0
"""

import time
import wiringpi

class RemoteSwitch(object):
   repeat = 10 # Number of transmissions
   pulselength = 300 # microseconds

   def __init__(self, unit_code, system_code=[1,1,1,1,1], pin=17):
      ''' 
      devices: A = 1, B = 2, C = 4, D = 8, E = 16  
      system_code: according to dipswitches on your Elro receivers
      pin: according to Broadcom pin naming
      '''      
      self.pin = pin 
      self.system_code = system_code
      self.unit_code = unit_code

   def switchOn(self):
      self._switch(wiringpi.HIGH)

   def switchOff(self):
      self._switch(wiringpi.LOW)

   def _switch(self, switch):
      self.bit = [142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 136, 128, 0, 0, 0]      

      for t in range(5):
         if self.system_code[t]:
            self.bit[t]=136   
      x=1
      for i in range(1,6):
         if self.unit_code & x > 0:
            self.bit[4+i] = 136
         x = x<<1

      if switch == wiringpi.HIGH:
         self.bit[10] = 136
         self.bit[11] = 142

      bangs = []
      for y in range(16):
         x = 128
         for i in range(1,9):
            b = (self.bit[y] & x > 0) and wiringpi.HIGH or wiringpi.LOW
            bangs.append(b)
            x = x>>1

      wiringpi.wiringPiSetupSys()
      wiringpi.pinMode(self.pin,wiringpi.OUTPUT)
      wiringpi.digitalWrite(self.pin,wiringpi.LOW)
      for z in range(self.repeat):
         for b in bangs:
            wiringpi.digitalWrite(self.pin, b)
            time.sleep(self.pulselength/1000000.)

if __name__ == '__main__':
   import sys

   # Change the system_code[] variable below according to the dipswitches on your Elro receivers.
   default_system_code = [1,1,1,1,1] 

   # change the pin accpording to your wiring
   default_pin =17

   if len(sys.argv) < 3:
      print "usage: python %s int_unit_code int_state (e.g. '%s 2 1' switches unit 2 on)" % \
         (sys.argv[0], sys.argv[0])  
      sys.exit(1)

   device = RemoteSwitch(  unit_code= int(sys.argv[1]), 
                     system_code=default_system_code, 
                     pin=default_pin)

   if int(sys.argv[2]):
      device.switchOn()
   else: 
      device.switchOff()

sudo chmod 755 elro_wiringpi.py

Der Aufruf erfolgt nun einfach mittels folgendem Terminal-Befehl:

/home/pi/wPi/elro_wiringpi.py 2 1

Wobei 2 für die Steckdosennummer steht und 1 (bzw. 0) für an- oder ausschalten. Diesen Befehl verwende ich in dem o.g. php Script auf dem Pi.

Quellen: http://m.dib0.nl/code/443-how-to-shutdown-your-server-with-php | http://stackoverflow.com/questions/305035/how-to-use-ssh-to-run-shell-script-on-a-remote-machine Run a script when shutdown computer http://ubuntuforums.org/showthread.php?t=185261 Wget Spider: http://www.klamm.de/forum/f28/cronjob-url-oeffnen-247398.html

ajax loader

Auf einem Desktopsystem mit ausreichend Ram will man eigentlich kein Swap, kein Äquivalent zur Auslagerungsdatei, benutzen. Statt also eine Swap-Datei anzulegen kann zram benutzt werden. Das ist im Kernel integriert und nutzt komprimierten Ram als Swap. Um es zu aktivieren muss unter Ubuntu nur das Paket zram-config installiert werden.

zram nutzt maximal die Hälfte des verfügbaren Arbeitsspeichers. Bei mir sind das 6GB, was vollkommen ausreicht. Aus der /etc/fstab kann dann der Verweis auf die alte Swappartition entfernt werden - zumindest, wenn kein Supend to Disk genutzt wird.

Warum nicht gleich ganz auf Swap verzichten, wenn doch eh nur der Arbeitsspeicher genutzt wird? Tatsächlich ist das eine Möglichkeit. Doch kommt das System tatsächlich mal in eine Situation, in der Swappen sinnvoll erscheint - z.B. weil viele große Dateien geladen werden - ist so durch die Komprimierung des Arbeitsspeichers noch eine Reserve da, die nur eben wesentlich schneller als ein Auslagern auf die Festplatte ist.

Und wenn man schon dabei ist sollte man auch gleich noch die swappinnes auf 0 setzen, damit der Swap möglichst selten gebraucht wird.

Das ganze führt nicht nur zu einem schnellen System, sondern hat einen angenehmen Nebeneffekt: Die Verschlüsselung des Swapspeichers kann man sich so sparen.

Auf einem Desktopsystem mit ausreichend Ram will man eigentlich kein Swap, kein Äquivalent zur Auslagerungsdatei, benutzen. Statt also eine Swap-Datei anzulegen kann zram benutzt werden. Das ist im Kernel integriert und nutzt komprimierten Ram als Swap. Um es zu aktivieren muss unter Ubuntu nur das Paket zram-config installiert werden.

zram nutzt maximal die Hälfte des verfügbaren Arbeitsspeichers. Bei mir sind das 6GB, was vollkommen ausreicht. Aus der /etc/fstab kann dann der Verweis auf die alte Swappartition entfernt werden - zumindest, wenn kein Supend to Disk genutzt wird.

Warum nicht gleich ganz auf Swap verzichten, wenn doch eh nur der Arbeitsspeicher genutzt wird? Tatsächlich ist das eine Möglichkeit. Doch kommt das System tatsächlich mal in eine Situation, in der Swappen sinnvoll erscheint - z.B. weil viele große Dateien geladen werden - ist so durch die Komprimierung des Arbeitsspeichers noch eine Reserve da, die nur eben wesentlich schneller als ein Auslagern auf die Festplatte ist.

Und wenn man schon dabei ist sollte man auch gleich noch die swappinnes auf 0 setzen, damit der Swap möglichst selten gebraucht wird.

Das ganze führt nicht nur zu einem schnellen System, sondern hat einen angenehmen Nebeneffekt: Die Verschlüsselung des Swapspeichers kann man sich so sparen.

Vor kurzem beschrieb ich, wie mit encfs die Dropbox verschlüsselt werden kann. Inzwischen hat sich mein System ein bisschen verändert und ich will diesen Ansatz nochmal beschreiben.

Homeverzeichnis

Erste Änderung: Das Homeverzeichnis ist ebenfalls mit encfs verschlüsselt. Dafür loggt man sich im Wiederherstellungsmodus ein, kopiert das bestehende Homeverzechnis und erstellt dann die Verschlüsselung:

encfs /home/.USER /home/USER

und kopiert alles wieder zurück.

Natürlich muss das aber automatisch beim Login eingehängt werden, die Lösung mit dem Shellskript greift zu spät. Daher war mein erster Schritt, jedweden Autologin zu deaktivieren. Da ich auch keinen Displaymanager habe, begrüßt mich beim Login das tty1 mit einer Loginaufforderung. Für den Automount installierte ich das Paket libpam-encfs installiert, in /etc/pam.d/common-auth

session required    pam_encfs.so 

und in /etc/pam.d/common-session

auth	sufficient        		pam_encfs.so

hinzugefügt, jeweils vor der Zeile mit pam_unix. Dann fehlt nur noch die /etc/security/pam_encfs.conf, bei der unten auf das Homeverzeichnis verwiesen werden muss:

onli    /home/.onli    /home/onli    -v      allow_other

Genauer wird das im Ubuntu-Wiki beschrieben.

Dropbox

So, die Dropbox ebenfalls automatisch einzuhängen ist kein Problem, dachte ich, einfach unter die Zeile schreiben die das Homeverzeichnis einhängt. Das aber funktioniert nicht, denn pam_encfs hängt nur ein einziges Verzeichnis ein, eine Information, die ich nur versteckt in der online-Readme fand.

Blieb der Weg über pam_mount. Dafür muss das Paket libpam-mount installiert werden. In /etc/pam.d/common-auth kommt ein

auth    optional    pam_mount.so

In /etc/pam.d/common-session

session optional    pam_mount.so

Jeweils ganz nach unten.

Dann fehlt noch die Konfiguration des Verzechnisses, diesmal mit einer XML-Datei namens /etc/security/pam_mount.conf.xml:

<pam_mount>
    <volume user="onli" fstype="fuse" path="encfs#/home/onli/Dropbox/encrypted" mountpoint="/home/onli/Dropbox-decrypted" />
</pam_mount>

Genau nachgelesen werden kann das hier und hier.

Wahrscheinlich könnte ich jetzt auf pam_encfs verzichten, aber immerhin ist so sichergestellt, dass das Homeverzeichnis zuerst eingehängt wird.

Vor kurzem beschrieb ich, wie mit encfs die Dropbox verschlüsselt werden kann. Inzwischen hat sich mein System ein bisschen verändert und ich will diesen Ansatz nochmal beschreiben.

Homeverzeichnis

Erste Änderung: Das Homeverzeichnis ist ebenfalls mit encfs verschlüsselt. Dafür loggt man sich im Wiederherstellungsmodus ein, kopiert das bestehende Homeverzechnis und erstellt dann die Verschlüsselung:

encfs /home/.USER /home/USER

und kopiert alles wieder zurück.

Natürlich muss das aber automatisch beim Login eingehängt werden, die Lösung mit dem Shellskript greift zu spät. Daher war mein erster Schritt, jedweden Autologin zu deaktivieren. Da ich auch keinen Displaymanager habe, begrüßt mich beim Login das tty1 mit einer Loginaufforderung. Für den Automount installierte ich das Paket libpam-encfs installiert, in /etc/pam.d/common-auth

session required    pam_encfs.so 

und in /etc/pam.d/common-session

auth	sufficient        		pam_encfs.so

hinzugefügt, jeweils vor der Zeile mit pam_unix. Dann fehlt nur noch die /etc/security/pam_encfs.conf, bei der unten auf das Homeverzeichnis verwiesen werden muss:

onli    /home/.onli    /home/onli    -v      allow_other

Genauer wird das im Ubuntu-Wiki beschrieben.

Dropbox

So, die Dropbox ebenfalls automatisch einzuhängen ist kein Problem, dachte ich, einfach unter die Zeile schreiben die das Homeverzeichnis einhängt. Das aber funktioniert nicht, denn pam_encfs hängt nur ein einziges Verzeichnis ein, eine Information, die ich nur versteckt in der online-Readme fand.

Blieb der Weg über pam_mount. Dafür muss das Paket libpam-mount installiert werden. In /etc/pam.d/common-auth kommt ein

auth    optional    pam_mount.so

In /etc/pam.d/common-session

session optional    pam_mount.so

Jeweils ganz nach unten.

Dann fehlt noch die Konfiguration des Verzechnisses, diesmal mit einer XML-Datei namens /etc/security/pam_mount.conf.xml:

<pam_mount>
    <volume user="onli" fstype="fuse" path="encfs#/home/onli/Dropbox/encrypted" mountpoint="/home/onli/Dropbox-decrypted" />
</pam_mount>

Genau nachgelesen werden kann das hier und hier.

Wahrscheinlich könnte ich jetzt auf pam_encfs verzichten, aber immerhin ist so sichergestellt, dass das Homeverzeichnis zuerst eingehängt wird.

Wie ich bereits im rsync-Beitrag beschrieben habe, habe ich meine Backups bisher manuell (und dadurch viel zu selten) durchgeführt. Da ich mittlerweile ein neues Notebook benutze, wurde mein altes arbeitslos. Das alte hatte zwar einige Probleme, weswegen ich es durch ein neues ersetzt habe, aber für irgendwelche kleinen Aufgaben als Server ist es immer noch gut genug. Da ich ungern Dinge wegwerfe und Elektroschrott produziere wollte ich daraus einen Server machen, auf den ich automatisiert ein tägliches Backup speichere. Eine ähnliche Einstellung hat auch der Blogger Apo und beschreibt in seinem Blog gambaru.de noch weitere mögliche Verwendungen für alte Hardware.

Ich werde hier keine detaillierte Schritt-für-Schritt, bzw. Kochrezept-Anleitung, für einen Backup-Server veröffentlichen. Davon gibt es bereits genug und was ich fabriziert habe ist eine Lösung, die für mich gut genug ist aber wahrscheinlich nicht die perfekte Lösung.

Meine Lösung sieht grob umrissen folgendermaßen aus:

– Einmal täglich startet mein Laptop (das Neue, mit dem ich arbeite) mein altes Laptop (im folgenden Server genannt) per Wake On LAN (WOL).
– Danach sichert es mittels rsync über SSH meinen /home-Ordner und /etc
– Abschließend wird der Server über SSH in den Ruhezustand versetzt

Ich habe per rsync rudimentär die Funkionalität von rsnapshot nachgebaut, da mir rsync besser gefällt bzw. ich es schon kenne, da ich bisher manuelle Backups damit durchgeführt habe. Außerdem kann ich mittels rsync Backups über SSH an den Server senden, bei rsnapshot ist dies nicht möglich. Bei rsnapshot müsste mein Server per SSH das Backup von meinem Laptop “abholen”. Ich möchte aber keinen SSH-Server als zusätzlichen Daemon auf meinem Laptop installieren.

Wie man im Ubuntuusers-Wiki nachlesenen kann, ist es möglich mit rsnapshot beliebig zu konfigurieren wie viele tägliche/wöchentliche/monatliche/jährliche Backup-Versionen man vorhalten möchte. Ich beschränke mich bei meiner Lösung auf ein Backup pro Monat für ein Jahr lang, wobei das tagesaktuelle Backup jeweils das des aktuellen Monats ist.

Nun ein grober Abriss meines Vorgehens:

Server installieren

Als Betriebssystem habe ich Debian Wheezy (das aktuelle Stable-Release) installiert. Dabei habe ich lediglich “Desktop” abgewählt, da mein Server keine GUI benötigt, und “SSH-Server” angewählt. Eine Debian-Installation ist so einfach, dass ich das hier nicht näher erläutern muss.

SSH einrichten

SSH habe ich nach dem Artikel im Arch-Wiki eingerichtet und auch den Passwortlosen Login konfiguriert.
Ich habe lediglich die Zeile

    AllowUsers BENUTERZAME@192.168.2.*

hinzugefügt um Logins nur aus meinem lokalen Netz zu erlauben. Die IP ist natürlich auf die lokalen Gegebenheiten und BENUTZERNAME auf den eigenen Benutzernamen auf dem Server anzupassen.

WOL einrichten

Um den Server, den ich täglich nur kurz für das Backup benötige, nicht ständig laufen zu lassen habe ich beschlossen Wake On LAN zu nutzen. Mein Laptop hängt per Netzwerkkabel an meinem Router und wird aufgeweckt in dem ich ein Kommando über mein per WLAN angebundes Notebook schicke. Dies habe ich nach einem Artikel im Ubuntuusers-Wiki eingerichtet.
In meinem Fall gab es noch ein kleines Problem, da meine Vodafone Easy.Box das Magic Packet (TM) blockiert. Lösen konnte ich dies indem ich im Konfigurations-Menu der Easy.Box bei Daten→NAT→Port Mapping, nach diesem Foren-Thread, folgendes eingetragen habe:\

    LAN IP: SERVER_IP
    Protokolltyp: UDP
    LAN-Port: 9
    Öffentlicher Port: 12345

Als SERVER_IP muss natürlich die IP des Servers im lokalen Netzwerk eingegeben werden. Port 9 ist der Standard-Port für WOL-Pakete. Anstatt 12345 kann man auch einen anderen Port wählen, diesen muss man aber später beim Senden des WOL-Paketes angeben. Zum Senden des WOL-Paketes verwende ich das Programm wakeonlan.
Vielen Dank an die hilfsbereiten, freundlichen und kompetenten User aus dem debianforum.de-Chat, die mir halfen das Problem zu lokalisieren und zu beheben.

Backup per rsync

Nun konnte ich per WOL meinen Server wecken und per SSH darauf zugreifen und es ging darum per rsync ein Backup auf den Server zu kopieren. Herausgekommen sind folgende Zeilen:\

    rsync -azP --delete --link-dest=../$(expr $(date +%-m) - 1) /home/USER_LOCAL USER_SERVER@SERVER_IP:backup/$(date +%-m)
    rsync -azP --delete --link-dest=../$(expr $(date +%-m) - 1) /etc USER_SERVER@SERVER_IP:backup/$(date +%-m)

USER_LOCAL → Benutzername auf meinem Laptop, dessen home-Ordner ich sichere.
USER_SERVER → Benutzername auf dem Server, auf dem ich das Backup ablege.
SERVER_IP → IP des Servers (surprise, surprise :D)
Die Optionen -azP sind relativ simpel und können leicht in der manpage von rsync nachvollzogen werden.
`backup/$(date +%-m)` gibt an, dass das Update auf dem Server im Unterordner backup in einem weiteren Unterordner abgelegt wird. Der weitere Unterordner wechselt monatlich, d.h. im Juli wird nach $/backup/7 gesichert, im August nach $/backup/8. Dadurch erhalte ich Ordner 1 – 12, die jeweils das letze Backup für den Monat enthalten und kann auf jeweils ein monatliches Backup des letzten Jahres zurückgreifen.
`--delete` sorgt dafür, dass Dateien welche ich lokal lösche auch aus dem Backup entfernt werden.
Mittels `--link-dest=` gebe ich einen Ordner an, indem nach Übereinstimmungen gesucht wird. Ist in diesem Ordner eine Datei vorhanden und im Vergleich zur zu sichernden Datei unverändert, wird diese Datei nicht erneut übertragen sondern ein Hardlink auf die vorhandene Datei gesetzt. Dadurch wird die Größe des Backups verringert (Deduplikation). `../$(expr $(date +%-m) - 1)` sorgt dafür, dass als Linkziel der Ordner gewählt wird, der das Backup des Vormonats enthält (z.B. im Juli $/backup/6, im August $/backup/7). Im Januar funktioniert dies natürlich nicht ordnungsgemäß, da 1 – 1 = 0 ergibt. Das habe ich recht hemdsärmelig gelöst indem ich einen Symlink von $/backup/0 auf $/backup/12 gelegt habe. Damit wird auch im Januar der Vormonat Dezember als Linkziel gewählt.

Ruhezustand

Abschließend wird der Server per `ssh root@SERVER_IP:"pm-suspend & exit"` in den Ruhezustand versetzt.

Automatisierung

Um mich nicht mehr um das Backup kümmern zu müssen, sondern dieses automatisiert ablaufen zu lassen habe ich ein Script erstellt und unter `/etc/cron.daily/` gespeichert, damit es täglich ausgeführt wird.
Dieses Script sieht vor den Server per WOL aufzuwecken, anschließend das Backup durchzuführen und am Ende den Server in Suspend zu schicken. Das Script funktioniert auch soweit, ist allerdings noch nicht optimal und verhält sich teilweise noch nicht ganz korrekt, weshalb ich es hier noch nicht veröffentliche. Sobald die Kinderkrankheiten ausgemerzt sind werde ich es hier veröffentlichen.

[Nachtrag 2013-09-12]

Mittlerweile habe ich ein Script, das nach einigen Änderungen alles tut was es soll.

#! /bin/sh

# Backup-Server hochfahren
wakeonlan -p WOL_PORT SERVER_MAC 1>/dev/null
# Auch unter /usr/local/bin/wol

# Warten bis Backup-Server bereit
sleep 10

if [ `ping -c 1 SERVER_IP | grep -wc 100%` -eq 0 ]
then

sudo -u martin notify-send -a Backup "Automatisches Backup wird durchgeführt."

# Bei Problemen zu Testzwecken auskommentieren
# ssh -v -p SSH_PORT martin@SERVER_IP /bin/true

# Backup per rsync
rsync -az --delete --rsh="ssh -p SSH_PORT" --link-dest=../$(expr $(date +%-m) - 1) --exclude=martin/.cache --exclude=martin/Videos /home/martin martin@SERVER_IP:backup/$(date +%-m)
rsync -az --delete --rsh="ssh -p SSH_PORT" --link-dest=../$(expr $(date +%-m) - 1) /etc martin@SERVER_IP:backup/$(date +%-m)
rsync -az --delete --rsh="ssh -p SSH_PORT" --link-dest=../$(expr $(date +%-m) - 1) /root martin@SERVER_IP:backup/$(date +%-m)

# Server nach Backup schlafen schicken
ssh root@SERVER_IP -p SSH_PORT "pm-suspend-hybrid & exit"
# Bei Servern, die per SSH vom Internet erreichbar sind sollte man sich überlegen den root-login zu sperren und stattdessen sudo für pm-suspend-hybrid zu nutzen.

else
echo "Backup konnte nicht durchgeführt werden. \nDer Server war nicht erreichbar." | mail -s "Backup fehlgeschlagen!" martin@hostname
fi

Ich werde demnächst auch noch im Detail erklären, warum ich das so gelöst habe. Im Moment fehlt mir dazu leider die Zeit.

Wie ich bereits im rsync-Beitrag beschrieben habe, habe ich meine Backups bisher manuell (und dadurch viel zu selten) durchgeführt. Da ich mittlerweile ein neues Notebook benutze, wurde mein altes arbeitslos. Das alte hatte zwar einige Probleme, weswegen ich es durch ein neues ersetzt habe, aber für irgendwelche kleinen Aufgaben als Server ist es immer noch gut genug. Da ich ungern Dinge wegwerfe und Elektroschrott produziere wollte ich daraus einen Server machen, auf den ich automatisiert ein tägliches Backup speichere. Eine ähnliche Einstellung hat auch der Blogger Apo und beschreibt in seinem Blog gambaru.de noch weitere mögliche Verwendungen für alte Hardware.

Ich werde hier keine detaillierte Schritt-für-Schritt, bzw. Kochrezept-Anleitung, für einen Backup-Server veröffentlichen. Davon gibt es bereits genug und was ich fabriziert habe ist eine Lösung, die für mich gut genug ist aber wahrscheinlich nicht die perfekte Lösung.

Meine Lösung sieht grob umrissen folgendermaßen aus:

– Einmal täglich startet mein Laptop (das Neue, mit dem ich arbeite) mein altes Laptop (im folgenden Server genannt) per Wake On LAN (WOL).
– Danach sichert es mittels rsync über SSH meinen /home-Ordner und /etc
– Abschließend wird der Server über SSH in den Ruhezustand versetzt

Ich habe per rsync rudimentär die Funkionalität von rsnapshot nachgebaut, da mir rsync besser gefällt bzw. ich es schon kenne, da ich bisher manuelle Backups damit durchgeführt habe. Außerdem kann ich mittels rsync Backups über SSH an den Server senden, bei rsnapshot ist dies nicht möglich. Bei rsnapshot müsste mein Server per SSH das Backup von meinem Laptop “abholen”. Ich möchte aber keinen SSH-Server als zusätzlichen Daemon auf meinem Laptop installieren.

Wie man im Ubuntuusers-Wiki nachlesenen kann, ist es möglich mit rsnapshot beliebig zu konfigurieren wie viele tägliche/wöchentliche/monatliche/jährliche Backup-Versionen man vorhalten möchte. Ich beschränke mich bei meiner Lösung auf ein Backup pro Monat für ein Jahr lang, wobei das tagesaktuelle Backup jeweils das des aktuellen Monats ist.

Nun ein grober Abriss meines Vorgehens:

Server installieren

Als Betriebssystem habe ich Debian Wheezy (das aktuelle Stable-Release) installiert. Dabei habe ich lediglich “Desktop” abgewählt, da mein Server keine GUI benötigt, und “SSH-Server” angewählt. Eine Debian-Installation ist so einfach, dass ich das hier nicht näher erläutern muss.

SSH einrichten

SSH habe ich nach dem Artikel im Arch-Wiki eingerichtet und auch den Passwortlosen Login konfiguriert.
Ich habe lediglich die Zeile

    AllowUsers BENUTERZAME@192.168.2.*

hinzugefügt um Logins nur aus meinem lokalen Netz zu erlauben. Die IP ist natürlich auf die lokalen Gegebenheiten und BENUTZERNAME auf den eigenen Benutzernamen auf dem Server anzupassen.

WOL einrichten

Um den Server, den ich täglich nur kurz für das Backup benötige, nicht ständig laufen zu lassen habe ich beschlossen Wake On LAN zu nutzen. Mein Laptop hängt per Netzwerkkabel an meinem Router und wird aufgeweckt in dem ich ein Kommando über mein per WLAN angebundes Notebook schicke. Dies habe ich nach einem Artikel im Ubuntuusers-Wiki eingerichtet.
In meinem Fall gab es noch ein kleines Problem, da meine Vodafone Easy.Box das Magic Packet (TM) blockiert. Lösen konnte ich dies indem ich im Konfigurations-Menu der Easy.Box bei Daten→NAT→Port Mapping, nach diesem Foren-Thread, folgendes eingetragen habe:\

    LAN IP: SERVER_IP
    Protokolltyp: UDP
    LAN-Port: 9
    Öffentlicher Port: 12345

Als SERVER_IP muss natürlich die IP des Servers im lokalen Netzwerk eingegeben werden. Port 9 ist der Standard-Port für WOL-Pakete. Anstatt 12345 kann man auch einen anderen Port wählen, diesen muss man aber später beim Senden des WOL-Paketes angeben. Zum Senden des WOL-Paketes verwende ich das Programm wakeonlan.
Vielen Dank an die hilfsbereiten, freundlichen und kompetenten User aus dem debianforum.de-Chat, die mir halfen das Problem zu lokalisieren und zu beheben.

Backup per rsync

Nun konnte ich per WOL meinen Server wecken und per SSH darauf zugreifen und es ging darum per rsync ein Backup auf den Server zu kopieren. Herausgekommen sind folgende Zeilen:\

    rsync -azP --delete --link-dest=../$(expr $(date +%-m) - 1) /home/USER_LOCAL USER_SERVER@SERVER_IP:backup/$(date +%-m)
    rsync -azP --delete --link-dest=../$(expr $(date +%-m) - 1) /etc USER_SERVER@SERVER_IP:backup/$(date +%-m)

USER_LOCAL → Benutzername auf meinem Laptop, dessen home-Ordner ich sichere.
USER_SERVER → Benutzername auf dem Server, auf dem ich das Backup ablege.
SERVER_IP → IP des Servers (surprise, surprise :D)
Die Optionen -azP sind relativ simpel und können leicht in der manpage von rsync nachvollzogen werden.
`backup/$(date +%-m)` gibt an, dass das Update auf dem Server im Unterordner backup in einem weiteren Unterordner abgelegt wird. Der weitere Unterordner wechselt monatlich, d.h. im Juli wird nach $/backup/7 gesichert, im August nach $/backup/8. Dadurch erhalte ich Ordner 1 – 12, die jeweils das letze Backup für den Monat enthalten und kann auf jeweils ein monatliches Backup des letzten Jahres zurückgreifen.
`--delete` sorgt dafür, dass Dateien welche ich lokal lösche auch aus dem Backup entfernt werden.
Mittels `--link-dest=` gebe ich einen Ordner an, indem nach Übereinstimmungen gesucht wird. Ist in diesem Ordner eine Datei vorhanden und im Vergleich zur zu sichernden Datei unverändert, wird diese Datei nicht erneut übertragen sondern ein Hardlink auf die vorhandene Datei gesetzt. Dadurch wird die Größe des Backups verringert (Deduplikation). `../$(expr $(date +%-m) - 1)` sorgt dafür, dass als Linkziel der Ordner gewählt wird, der das Backup des Vormonats enthält (z.B. im Juli $/backup/6, im August $/backup/7). Im Januar funktioniert dies natürlich nicht ordnungsgemäß, da 1 – 1 = 0 ergibt. Das habe ich recht hemdsärmelig gelöst indem ich einen Symlink von $/backup/0 auf $/backup/12 gelegt habe. Damit wird auch im Januar der Vormonat Dezember als Linkziel gewählt.

Ruhezustand

Abschließend wird der Server per `ssh root@SERVER_IP:"pm-suspend & exit"` in den Ruhezustand versetzt.

Automatisierung

Um mich nicht mehr um das Backup kümmern zu müssen, sondern dieses automatisiert ablaufen zu lassen habe ich ein Script erstellt und unter `/etc/cron.daily/` gespeichert, damit es täglich ausgeführt wird.
Dieses Script sieht vor den Server per WOL aufzuwecken, anschließend das Backup durchzuführen und am Ende den Server in Suspend zu schicken. Das Script funktioniert auch soweit, ist allerdings noch nicht optimal und verhält sich teilweise noch nicht ganz korrekt, weshalb ich es hier noch nicht veröffentliche. Sobald die Kinderkrankheiten ausgemerzt sind werde ich es hier veröffentlichen.

[Nachtrag 2013-09-12]

Mittlerweile habe ich ein Script, das nach einigen Änderungen alles tut was es soll.

#! /bin/sh

# Backup-Server hochfahren
wakeonlan -p WOL_PORT SERVER_MAC 1>/dev/null
# Auch unter /usr/local/bin/wol

# Warten bis Backup-Server bereit
sleep 10

if [ `ping -c 1 SERVER_IP | grep -wc 100%` -eq 0 ]
then

sudo -u martin notify-send -a Backup "Automatisches Backup wird durchgeführt."

# Bei Problemen zu Testzwecken auskommentieren
# ssh -v -p SSH_PORT martin@SERVER_IP /bin/true

# Backup per rsync
rsync -az --delete --rsh="ssh -p SSH_PORT" --link-dest=../$(expr $(date +%-m) - 1) --exclude=martin/.cache --exclude=martin/Videos /home/martin martin@SERVER_IP:backup/$(date +%-m)
rsync -az --delete --rsh="ssh -p SSH_PORT" --link-dest=../$(expr $(date +%-m) - 1) /etc martin@SERVER_IP:backup/$(date +%-m)
rsync -az --delete --rsh="ssh -p SSH_PORT" --link-dest=../$(expr $(date +%-m) - 1) /root martin@SERVER_IP:backup/$(date +%-m)

# Server nach Backup schlafen schicken
ssh root@SERVER_IP -p SSH_PORT "pm-suspend-hybrid & exit"
# Bei Servern, die per SSH vom Internet erreichbar sind sollte man sich überlegen den root-login zu sperren und stattdessen sudo für pm-suspend-hybrid zu nutzen.

else
echo "Backup konnte nicht durchgeführt werden. \nDer Server war nicht erreichbar." | mail -s "Backup fehlgeschlagen!" martin@hostname
fi

Ich werde demnächst auch noch im Detail erklären, warum ich das so gelöst habe. Im Moment fehlt mir dazu leider die Zeit.