Donnerstag, 23. Juni 2016

Raspbian Konfiguration ohne Monitor und Keyboard

Als intensiver Raspberry Pi Benutzer hat man eigentlich für alle Fälle ein Image mit einem passenden OS rumliegen. Meine Images sind beispielsweise alle für meine privaten Netzwerke vorkonfiguriert und ich muss diese einfach nur auf eine SD Karte kopieren und in den Raspberry stecken. Dann kann es direkt losgehen – mit was auch immer. Die Konfiguration eines neuen Rasbians kann man meist auch erledigen, indem der kleine Einplatinencomputer mit einem Netzwerkkabel ins LAN gebracht wird.

Es gibt aber Gegebenheiten, in welchen diese Ansätze nicht weiterhelfen und die Umstände es nicht ermöglichen den Raspberry über das Netzwerkkabel ins Netz zu bringen und nur WLAN zur Verfügung steht. Es gibt einen einfachen Weg, diese Konfiguration an einem Laptop direkt nach dem Kopieren des Raspbian Image auf die SD Karte vorzunehmen. Die einzelnen Schritte beschreibe ich für Windows, Linux und (bald auch) OSX.
Ich beziehe mich hier auf das Standard Rasbian, das Howto geht NICHT mit Raspbian lite. (Stand 2016-05-27-raspbian-jessie-lite.img)
Das Image wird von https://www.raspberrypi.org/downloads/raspbian/ heruntergeladen.

Konfiguration unter Windows
Konfiguration unter Linux (Ubuntu)

Konfiguration unter Windows

Das heruntergeladene Image wird mit dem WinDiskImager32 auf die SD Karte kopiert.

Anschließend ist ein Teil (eine von zwei Partitionen) des kopierten Images im Windows Explorer sichtbar.

 In diesen Bereich wird eine neue Datei erstellt, die wpa_supplicant.conf genannt wird. In diese Datei werden die folgenden Informationen eingefügt (zum Editieren verwende ich gern Notepad++ oder Textpad)

update_config=1
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

network={
   &nbsp ssid="SSID"
    psk="Passwort"
}

Ist die Datei gespeichert kann diese im Raspberry verwendet werden. Wird der Raspberry gestartet, bekommt er vom WLAN eine IP Adresse zugewiesen über welche auf den Raspberry zugegriffen werden kann. Die meisten Router oder Access Points haben ein Web Frontend über das man die IP Adresse des Raspberry herausfinden kann. Ist das nicht möglich, hilft ein Netzwerkscanner. Mit Windows Bordmitteln ist ein Scann des gesamten Netzwerks nicht (so einfach) möglich. Auf iOS und Android Smartphones habe ich dafür Fing.


Konfiguration unter Linux

Unter Linux kann man das Image mit dd auf die SD Karte kopieren. Zuerst wird geschaut, wie der Gerätename der SD Karte unter Linux ist. Bevor die Karte eingesteckt wird werden die gemounteten Speichergeräte aufgelistet. Dies erfolgt mit dem Befehl:

df -h

Anschliessend wird die SD Karte eingesteckt und der Befehl

df -h

erneut ausgeführt. In der Rückgabe sollte

/dev/mmcblk0p1

oder

/dev/sdd1

stehen. Ich verwende hier weiter den mmcblk0p1. Anschließend wird das Device mit umount ausgehangen. Sollten mehrere Partitionen auf der SD Karte sein (erkenntlich an mmcblk0p2, mmcblk0p3, …), müssen diese auch alle ausgehangen werden.
Anschließend kann das Image auf die SD Karte kopiert werden. Wichtig ist dabei, das hier auf die SD Karte und nicht auf eine Partition kopiert wird. Deswegen ist der Name auf den kopiert wird /dev/mmcblk0 oder /dev/sdd und nicht/dev/mmcblk0p1 bzw /dev/sdd1.
Der Befehl zum Kopieren lautet:

dd bs=4M if=2016-05-27-raspbian-jessie.img of=/dev/mmcblk0

Das Kopieren geht natürlich auch mit einer GUI mit einem aktuellen Ubuntu (16.x) geht dies recht einfach mit dem usb-imagewriter. Dieser muss gegeben falls nach installiert werden.
Nach dem die Karte beschrieben wurde, muss die SD Karte neu gemountet werden. Am einfachsten kurzzeitig entfernen und neu einstecken. Mit

df -h

erkennt man, dass die Karte zwei Partitionen hat. Eine Partition heißt /dev/mmcblk0p1 und die andere /dev/mmcblk0p2. Hier ist die kleinere Partition mit einer Größe von ca 50 bis 100MB interessant. Auf diese werden wir die WLAN Informationen kopieren, die später beim ersten Start von Raspbian im Raspberry an die richtige Stelle verschoben werden.
Im Terminal wird mit dem Befehl:

sudo wpa_passphrase testwifi testpassword >> /dev/ mmcblk0p1/wpa_supplicant.conf

werden die relevanten Informationen in die wpa_supplikant Datei geschrieben. Wer mag kann diese dann öffnen und folgende (fett geschriebenen) Informationen voranstellen, so dass die Datei dann folgenden Inhalt hat.

update_config=1
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
network={
    ssid="testwifi"
    #psk="testpassword"
    psk=d28f6e7bcc45536a1930c0010f1d8a8e16c5dc154cc1309ae97859f2586924df
}

Um sich später mit dem Raspberry verbinden zu können, muss die IP Adresse in Erfahrung gebracht werden. Wenn die MAC Adresse (oder der Herstellercode) bekannt ist, wird der Raspberry gestartet und nach einigen Momenten mit nMap nach dem Raspberry gescannt. Den Herstellercode (OUI genannt) kann man unter http://aruljohn.com/mac.pl herausfinden. Bei der Eingabemaske auf vendor lookup klicken und den Hersteller der Karte eingeben.

Die MAC Adressteil 80:F1:02 steht hier exemplarisch für meinen Edimax WIFI USB Adapter.

nmap -sP 192.168.50.0/24 | awk '/^Nmap/{ip=$NF}/80:F1:02/{print ip}'


Damit hat man alle Informationen, um sich mit SSH auf den Raspberry zu verbinden.

Mittwoch, 10. Februar 2016

Schlüssel basierte SSH Verbindung zum Raspberry

Wird mit dem Raspberry remote und ohne GUI gearbeitet, kommt SSH zum Einsatz. Mit dem Benutzernamen und dem Passwort kann man sich mit dem Raspberry verbinden. Unter Windows wird für diese Verbindung Putty verwendet bei Unix,Linux und macOS/OSX kann man das mit Bordmitteln.
Putty kann man von http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html herunterladen.
Diese Verbindung statt mit einem Passwort mit einem SSH Schlüssel aufzubauen hat einige Vorteile wie z.B.
  • Das Passwort wird nicht über das Netzwerk übertragen
  • Wenn der Raspberry im Internet steht, wird die Wahrscheinlichkeit von erfolgreichen Brute-Force Angriffen erheblich reduziert
  • man kann sich automatisiert und ohne Passwort mit dem Raspberry verbinden

Erstellen der Schlüssel

Um unter Windows einen Schlüssel zu erstellen wird von der Putty Webseite der PuttyGen geladen und gestartet. Anschließend wird geprüft ob der Schlüsseltyp auf SSH2 RSA steht und ob die Schlüssellänge ausreichend erscheint. Wobei 2048 ausreichend sein sollte. Zum Erstellen des Schlüssels wird auf Generate geklickt.

Ist der Schlüssel erzeugt, werden im PuttyGen Informationen zum Schlüssel angezeigt.

Wer mag kann unter Key Comment einen Kommentar zu diesem Schüssel einfügen, damit man später den Verwendungszweck wieder erkennen kann. Zusätzlich kann man seinen Schlüssel mit einem Passwort schützen, dies muss dann bei jeder Verbindung zum Raspberry eingegeben werden. Ich verwende dies in diesem Fall nicht, da ich den Vorteil eines schnellen, automatisierbaren und passwortfreien Verbindungsaufbau haben möchte.
Sind alle Informationen so vollständig wie man sich das wünscht, wird der Privatschlüssel gespeichert, indem auf Save Private Key geklickt wird. Normalerweise ist die Dateiendung ppk.
Man kann ebenfalls den Öffentlichen Schlüssel, den public Key speichern, notwendig ist dies hier nicht. Wir verwenden den Keystring aus dem PuttyGen und des Weiteren kann dieser öffentliche Schlüssel bei Bedarf immer aus dem privaten Schlüssel erzeugt werden.
Da der öffentliche Schlüssel später noch verwendet wird, wird PuttyGen erst mal nicht geschlossen.


Raspberry für SSH Keys konfigurieren

Davon ausgehend, daß der Raspberry läuft, wird mit Putty eine Nutzer/Passwort Verbindung aufgebaut.


In diesem Beispiel wird die Konfiguration für den Standardnutzer pi vorgenommen. Nach dem einloggen wird das Verzeichnis für den öffentlichen SSH Schlüssel erzeugt. Die erfolgt mit dem Befehl:

mkdir -p ~/.ssh

Danach wird die Datei für alle mit dem Nutzer verknüpften Schlüssel geöffnet (und falls nicht vorhanden erzeugt)

sudo nano ~/.ssh/authorized_keys

Aus dem PuttyGen wird der vollständige öffentliche Schlüssel markiert und kopiert. Dieser wird in dem Puttyfenster mit einem Rechtsklick wieder eingefügt. Der Schlüssel darf dabei nur auf einer Zeile stehen. Mit der Ende Taste sollte man an das Ende der Zeile springen und schauen dies mit dem Ende des Schlüssels in PuttyGen übereinstimmt.

Die Datei wird mit der Tastenkombination CTRL X anschließend Y und Enter gespeichert. Ist die Datei gespeichert wird diese mit folgenden Befehlen gesichert:

sudo chmod 644 ~/.ssh/authorized_keys
sudo chown pi:pi ~/.ssh/authorized_keys
sudo chmod 700 ~/.ssh

Der öffentliche Schlüssel befindet sich auf dem Raspberry, jetzt muss noch geprüft werden ob die Konfiguration für SSH passt. Dazu wird die Konfigurationsdatei mit

sudo nano /etc/ssh/sshd_config

geöffnet und geprüft ob die folgenden Einstellungen so in der Datei stehen (wahrscheinlich an unterschiedlichen Stellen in der Datei). Gegeben falls müssen voranstehende # Symbole entfernt werden.

PermitRootLogin no
AllowUsers pi
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
UsePAM no

Mussten an der Datei Änderungen vorgenommen werden, wird diese mit der Tastenkombination CTRL X anschließend Y und Enter gespeichert. Anschließend wird der SSH Deamon neu gestartet:

sudo systemctl restart sshd

Putty für die Verbindung mit SSH Key konfigurieren

Zu guter Letzt muss noch der Putty als SSH Client konfiguriert werden. Im Putty müssen unter Session die IP Adresse oder der Hostname eingegeben werden. Unter der Kategorie Connection->Data wird der Benutzername eingegeben und bei Connection->SSH->Auth den Pfad und Dateinamen des privaten Schlüssels. Siehe die folgenden drei Screenshots:
Abschliessend werden die Einstellungen gespeichert, indem unter Session ein Sessionname gewählt wird und auf Save geklickt wird.
 Später kann die Session mit einem Doppelklick gestartet werden. Wenn eine SSH Verbindung mit dem Schlüssel aufgebaut, sieht man die Erfolgsmeldung abschließend in der Konsole.
Über Kommentare und Hinweise zu dem Post freue ich mich :)

Sonntag, 1. März 2015

Raspberry als Shairport Empfänger 2015

Shairport läuft und läuft. Derzeit habe ich Shairport auf drei Rapsberrys in der Wohnung. Das läuft so stabil, das ich mich mit dem Projekt auch kaum beschäftigt habe.
Mittels RSS Feed habe ich aber die Entwicklung von Shairport auf github weiter verfolgt und so auch die Nachricht des Entwicklers gelesen, dass Shairport nicht weiter entwickelt wird.
ShairPort is no longer maintained
As I no longer use Shairport myself, I am no longer maintaining or supporting Shairport. Thanks to everyone who has contributed over the years; it's been a great experience. For the ongoing user, there are a great many forks and ports to choose from now, many of which are of a very high quality and well maintained. — James 
Dabei verweist der Entwickler auf Forks, also Entwicklungszweige, von denen es fast 400 gibt. Die ernsthaft weiterentwickelten Forks sind wohl so eine Handvoll. Eine der am konsequentesten betriebenen Forks scheint der von Mike Brady zu sein.

Da ich jetzt einige meiner Raspbians auf Jessie aktualisiert habe, habe ich mich entschlossen auch für einen der Shairport diesen Schritt zu gehen und dabei Shairport von abrasive (James) auf diesen Fork von Mike Brady zu setzen.

Nach dem der Raspberry mit einem neuen Image von Raspbian bespielt wurde habe alle nicht benötigten Pakete aus dem Image entfernt und auf Raspbian Testversion Jessie aktualisiert.

Anschließend werden die notwendigen Pakete installiert

apt-get install autoconf libtool libdaemon-dev libasound2-dev libpopt-dev

Mike Brady empfiehlt auch Avahi zu verwenden, welches mit

apt-get install avahi-daemon libavahi-client-dev

installiert wird. Man kann auch auf SSL zurückgreifen wobei man die Auswahl zwischen OpenSSL und PolarSSL hat. Da OpenSSL sowieso schon auf dem System ist muss kein weiteres Paket installiert werden. Eine weitere Option ist das Resamplen mit SoXR. Dies möchte ich hier übergehen, da es für mich nicht notwendig ist. Jetzt sind alle Voraussetzungen für Shairport-Sync auf dem Raspberry – benötigt wird nun der Shairport selbst, der mit dem folgenden Befehl heruntergeladen wird:

git clone https://github.com/mikebrady/shairport-sync.git

Wenn der Download heruntergeladen ist, wechseln wir in das entsprechende Verzeichnis

cd shairport-sync

Dort werden zuerst mit autoreconf die Konfigurationsdateien für die Installation erstellt.

autoreconf –i –f

Wenn dieser Schritt abgeschlossen ist wird die Konfiguration gestartet und die entsprechenden Parameter der Konfiguration übergeben. Für meine Konfiguration sieht der Befehl so aus:

./configure --with-alsa --with-avahi --with-ssl=openssl

Ist die Konfiguration abgeschlossen, wird mit

make

Shairport-Sync erstellt und anschließend mit

make install

in die entsprechenden Verzeichnisse installiert. Dabei wird auch ein Start Skript erstellt, damit der Shairport-Sync beim Start des Raspberry mitstartet. Da wir aber auf Raspbian Jessie gesetzt haben funktioniert das so nicht mehr. Also wird ein systemd Startskript benötigt, welches Shairport-sync für uns startet und stoppt. Dazu erstellen wir folgende Datei:

nano /etc/systemd/system/shairport-sync.service

dort wird dann folgender Text eingefügt:

[Unit]
Description=Shairport AirTunes receiver
After=sound.target
Requires=avahi-daemon.service
After=avahi-daemon.service
[Service]
Type=simple
ExecStart=/usr/local/bin/shairport-sync -a "MyShairport"
Restart=always
[Install]
WantedBy=multi-user.target

MyShairport ersetzt ihr durch den Namen, welcher euer Shairport Empfänger im Netzwerk haben soll. Die Datei wird gespeichert und anschliessend Shairport-Sync zu den Systemdiensten hinzugefügt:

systemctl enable shairport-sync.service

Ist das geschehen, kann der Shairport gestartet werden. Dies erfolgt über

systemctl start shairport-sync.service

und mit dem Befehl

systemctl status shairport-sync.service

kann geprüft werden ob Shairport läuft. Die Ausgabe sollte ungefähr so aussehen:

shairport-sync.service - Shairport AirTunes receiver
Loaded: loaded (/etc/systemd/system/shairport-sync.service; enabled)
Active: active (running) since Sun 2015-03-01 17:33:51 UTC; 3s ago
Main PID: 3040 (shairport-sync)
CGroup: /system.slice/shairport-sync.service
           ââ3040 /usr/local/bin/shairport-sync -a MyShairport

Mar 01 17:33:51 spi03 systemd[1]: Started Shairport AirTunes receiver.
Mar 01 17:33:51 spi03 shairport-sync[3040]: startup

Zu letzt kann man noch testen, ob nach einem Reboot Shairport-Sync auch läuft. Damit wäre das Tutorial Shairport-Sync auf Rasbian Jessie auch vollständig. Viel Spass beim Was-auch-immer-hören

Freitag, 27. Februar 2015

DIY Budget NAS Server 2015 für Zuhause: Teil 1 (Einleitung)

Ich werde das Do It Yourself NAS Projekt als kleine Serie schreiben und möchte, bevor ich loslege die einzelnen Abschnitte vorstellen:


Was wollt Ihr den?


Wenn ich in NAS Foren Vorschläge für Eigenbau Server lese, kommen meist deutlich über 500€ ohne Festplatten zusammen. Gut diese Konfigurationen sind recht beeindruckende Zusammenstellungen und bieten Stromsparend Power. Ich bin jedoch nicht auf der Suche nach einem Luxus NAS sondern ich möchte meine Daten Stromsparend im heimischen LAN halten. Eventuell, später über OwnCloud für mich und meine Familie im Internet. Aber das ist Zukunft. Streaming im Netz ist erst mal nicht vorgesehen, da die HomeEntertainment Anlage schon einen Medienplayer hat.

Die Anforderungen an das Künftige NAS sind schlussendlich:
  • günstiger Preis! Ohne Platten sollte das NAS unter 200€ kosten.
  • mindesten 3 Platten, damit im RAID5 die Daten relativ sicher gehalten werden
  • Stromverbrauch. im Normalbetrieb soll der Verbrauch des NAS nicht allzu hoch sein. Inklusive 3 oder 4 Festplatten sollten wir um die 30-40 Watt bei Last liegen.
  • GB LAN 
Bei den Budgetvorgaben muss nachgeschaut werden was ich nicht benötige. Wo kann ich sparen?
  • ein Punkt auf den ich verzichten kann sind viele externe Anschlüsse. Video und Tastatur sind nur für die erste Konfiguration notwendig. Somit reicht da einfachstes HDMI, DFI oder gar VGA. Für eine Tastatur reicht eigentlich ein USB oder PS2 Anschluss 
  • die Festplatten können ins Gehäuse geschraubt werden. Hotpluging für Festplatten soll es nicht geben. Wenn ich an die Platten will, muss ich halt ans Gehäuse und schrauben...
  • WLAN das NAS hat LAN das reicht. 
  • Das Betriebssystem kommt auf einen USB Stick, wir werden keine eigene Systempartition als HDD oder SSD verwenden.

Das NAS soll mit einer Linux oder BSD Distribution laufen. Doch auch hier gibt es schon Einschränkungen bei der Auswahl. Weitere Einschränkungen werden sichtbar wenn ich mich dem Dateisystem zuwende. ZFS wird nicht möglich sein. Aufgrund der Preisgrenze ist kein ECC Ram möglich. Schade aber das Ziel bei 200€ bleibt!



Donnerstag, 26. Februar 2015

DIY Budget NAS Server 2015 für Zuhause: Teil 2 (Hardwareauswahl)

Wenn ich die Eckpunkte des einleitenden Artikels berücksichtige und mich am Markt umschaue, stechen zwei Mainboards mit CPU ins Auge. Beide sind von ASROCK. Das eine ist das E350M1, welches mit AMD E-350 daher kommt, es bietet zwei Steckplätze für DDR3 Ram und liegt so bei 18W TDP. Nicht schlecht! Das andere Board ist das ASROCK C70M1. Es hat den C70 Prozessor von AMD verbaut, welcher vergleichbar it dem E350M1 ist. Auch die restlichen Spezifikationen sind vergleichbar. Ich habe mich für das letztere Board entschieden da es nur die Hälfte an Energie benötigt und mit 9 W TDP auskommt. Dazu ist es auch noch einige Euros günstiger.

Bei Arbeitsspeicher reichen 4 GB aus, da künftig kein ZFS eingesetzt wird. Ich habe eigentlich schon immer Corsair verbaut, deswegen fiel die Wahl auf 2 mal 2GB Riegel DDR3 welche mit 1333MHz getaktet sind.

Einen alten Netzwerkspeicher den ich mit dem hier Vorgestellten System ablösen möchte läuft seit Jahren stabil von einem USB Stick. Um den Stick zu schonen, wird nach dem Boot eine RAM Disk eingerichtet und viel benutzte Verzeichnisse in der Ramdisk gehalten. Bisher habe ich recht gute Erfahrungen gesammelt, Stromausfälle hat das SAN gut überstanden und einen bisher hatte ich noch keine Probleme mit dem Stick. Ich habe mich für Sandisk's Cruzer Ultra entschieden damit das Teil nicht so weit aus dem Gehäuse schaut.

Den geringen Strombedarf beziehe ich aus einem Be Quiet Netzteil. Mit dem Hersteller habe ich bisher keine Probleme gehabt. Man kann Gut und Günstig gemeinsam haben. Ich habe mich  für ein 300 Watt Netzteil entschieden, welches selbst bei Volllast extrem überdimensioniert ist. Bei der Evaluierung der Mainboards hatte ich zwischendurch ein Asrock mit Intel Celeron angeschaut welchen an einem Notebooknetzteil läuft. Das ist natürlich auch genial, da eine Menge Platz im Gehäuse bleibt. Aber naja... Das Mainboard mit Notebooknetzteil ist halt doppelt so teuer und damit raus. Und Be Quiet ist die Wahl.

Schlussendlich wollen wir die ganzen Komponenten zusammen in ein Gehäuse stecken. Ich habe mich für das Cooler Master  Elite 120 entschieden da die technischen Spezifikationen und der Preis dem Entsprechen was ich suche. Ästhetisch… darüber lässt sich streiten. Da das Ding im Keller seinen Dienst verrichten wird, werde ich es aber nicht so häufig zu sehen bekommen.

Zusammen aufgelistet und bei Amazon geklickt liegt der Warenkorb bei 188,66 und damit unter der Vorgabe von 200€. Ich habe alle Produkte unten aufgeführt und zu Amazon verlinkt.

KategorieProdukt*Preis**
BoardASRock C70M151,33 €
RAMCorsair 4GB (2x2GB) DDR3 1333 MHz47,18 €
FlashSanDisk Cruzer Ultra Fit 16GB USB 3.09,99 €
GehäuseCooler Master Elite 120 Advanced44,29 €
NetzteilBe quiet! BN140 System Power 7 Stromversorgung35,87 €
Summe188,66 €



Ein wesentlicher Aspekt für ein NAS wurde bisher noch nicht angeführt! Festplatten! Da in dem NAS Gehäuse 3 Festplatten laufen können und 4 Anschlüsse auf dem Board sind, habe ich beschlossen die alten Platten aus dem NAS welches ich ersetzen möchte weiter zu verwenden.  Wer sich neue Platten kaufen möchte findet diese in jeglicher Größe. Derzeit wird viel auf NAS Platten von WD geschworen. Diese als RED Serie bezeichneten Platten findet man in Größen von 1,2,3,4,5 und 6 TB in dem NAS mit Raid 5 kann man somit je nach Platten einen Speicher von 2 bis 12 TB für das heimische Netz bereitstellen.

Wie der NAS Server zusammengebaut wird und welche Software zum Einsatz kommt und die Konfigurationen wird in den kommenden Tagen ausführlich beschrieben.

Mehr Informationen zu der Serie (welche sich noch im Aufbau befindet:)



Samstag, 21. Februar 2015

Raspbian auf Jessie upgraden

[Post erstellt am 21.02.2015]
Bei Debian steht ein Versionswechsel in Haus. In Naher Zukunft wird die aktuelle Version "Wheezy" durch "Jessie" ersetzt. Raspbian, als speziell auf den Raspberry zugeschnittene Version von Debian wird diese Aktualisierung auch erfolgen.
In diesem Artikel möchte ich beschreiben wie der Umstieg von dem derzeit als Stable geltenden Wheezy auf die „Testing“ Version Jessie erfolgt. Das der Stabile Betrieb des Raspberrys nicht garantiert werden kann wird in vielen Foren ausführlich erörtert. Ich möchte darauf hier nicht weiter eingehen :-)
Okay bevor es losgeht, sollte sichergestellt werden das alle wichtigen Daten gebackupt wurden... oder am besten das ganze Image von der SD Karte einmal auf einen anderen Rechner sichern.

Anschliessend schauen wir welche version von Raspbian auf unserem Raspberry läuft:

sudo lsb_release -a

Die Ausgabe ist so wie erwartet:

No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 7.6 (wheezy)
Release:        7.6
Codename:       wheezy


Das Upgrade von Wheezy auf Jessie ist bei mir problemfrei durchgelaufen. Als erstes müssen die Paketlisten auf das Jessie umgestellt werden:

sudo nano /etc/apt/sources.list

Im Normalfall ist dort nur eine Zeile anzupassen:

deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi

sollten weitere Zeilen einkommentiert sein, welche auf raspbian.org verweisen, sollten diese auch von Wheezy auf Jessie geändert werden:

deb-src http://mirror.ox.ac.uk/sites/archive.raspbian.org/archive/raspbian/ jessie main contrib non-free rpi

Alle Sourcen welche nicht auf raspbian.org zeigen müssen geprüft individuell werden. Da ich eine neue Wheezy Installation verwende habe ich noch keine fremden Sourcen.
Anschließend werden die angepassten Paketlisten neu eingelesen und das System aktualisiert.

sudo apt-get update && sudo apt-get dist-upgrade

Während des upgrade Prozesses werden einige Abfragen zur Konfiguration von Jessie gemacht. Wie lange das Upgrade dauert kann ich nicht sagen, da ich nicht regelmäßig auf die Shell geschaut habe und so das Dist-Upgrade bei Nachfragen auf mich warten musste.Insgesamt hat das wohl ungefähr zwei Stunden gedauer, ich habe in der Zeit aber andere Dinge getan und nur ab und an mal auf den Putty Screen geschaut.

Sobald das Dist-Upgrade durchgelaufen ist wird der Raspberry rebootet und geprüft ob alle Dienste wie geplant gestartet wurden.

Es ist noch zu empfehlen, nach dem Upgrade die nichtmehr benötigten werden:

sudo apt-get autoremove
sudo apt-get autoclean 

Da alles sauber läuft noch der letzte Beweis, das der Raspberry mit Jessie  läuft:

sudo lsb_release -a

und... siehe da:

No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 8.0 (jessie)
Release:        8.0
Codename:       jessie

Sobald ich eine Aussage zur Stabilität und zur Performance machen kann werde ich das hier berichten.


Samstag, 14. Februar 2015

Lighttpd aus Rasbian für die Verwendung von OwnCloud 8 patchen

Der Raspberry Pi 2 B+ hat jetzt ausreichend Leistung um auch etwas anspruchvollere Aufgaben zu übernehmen. Der Einsatz als Owncloud-Server ist eine davon. Nur eine Woche nach der Vorstellung der Raspberry Pi2 wurde auch OwnCloud 8 veröffentlicht. Das zwängt sich einem als kleines Nebenprojekt auf :)

Für die Verwendung von Owncloud 8 in Kombination wird Lighttpd auf einem aktuellen Rasbian Wheezy stehen wir vor einer kleinen aber lösbaren Herausforderung. Owncloud 8 benötigt die  HTTP Patch Methode, welche in Lighttpd erst in Version 1.4.32 eingeführt wurde. Das Standard Rasbian Whezey setzt verwendet die Lighttpd Version 1.4.31.

Um den Webserver mit dem Patch auszustatten sind einige Vorbereitungen notwendig. Zuerst werden die Packages Quilt, patch und Devscripts installiert.  dies Erfolgt mit dem Befehl:

apt-get install quilt patch devscripts

Anschließend werden für den Lighttpd alle Build-Abhängigkeiten installiert, das heißt alle Pakete, welche für ein eigenen Build notwendig sind.

apt-get build-dep lighttpd

Wenn alle Abhängigkeiten auf dem installiert sind werden die Sourcen von Lighttpd geladen.

apt-get source lighttpd


Jetzt wird noch der Patch benötigt. Dazu wird ein Verzeichnis erstellt und der Patch dort gespeichert.

mkdir lighttpd-1.4.31
cd  lighttpd-1.4.31
wget http://redmine.lighttpd.net/attachments/download/1370/patch.patch

Wenn der Patch auf der SD Karte ist, teilen wir Quilt mit, an welchen Platz der Patch  abgelegt werden soll. Dies erfolgt mit :

export QUILT_PATCHES=debian/patches

Mit dem Befehl
Quilt new http-patch.patch

Wird ein neuer Patch erzeugt. Anschließend wird Quilt angewiesen, die Änderungen, welche durch uns vorgenommen werden zu überwachen. Mit dem Befehl

patch –p1 –i  /verzeichnis/zum/Donwload/patch.patch

wird der Patch des Webservers durchgeführt.  Dabei sollte der Pfad zum heruntergeladenen Patch vollständig angegeben werden. Der Patch wird abgeschlossen, in die Informationen von  Quilt aktualisiert werden.

Quilt refresh

Um zu verhindern das apt-get upgrade wieder die Version ohne Patch einspielt wird die Paktetversion angepasst bzw. ein neuer Changelog Eintrag erzeugt.
Dies erfolgt mit dem Befehl:

dch –i

wen man mag kann man hier noch Informationen zum Patch angeben.
Anschließend wird das Debian Paket erzeugt :

debuild -us -uc

Dieses sollte sich im Verzeichnis über unserem Patch befinden

ls –df ../*

sollte jetzt eine Datei lighttpd_1.4.31.dep  oder ähnlich enthalten.
Da wir alle Abhängigkeiten für lighttpd schon installiert haben sollte die Installation des gepatchten Paketes mit

Dpkg –i /Pfad/zum/Paket/lighttpd.deb

problemfrei durchlaufen.

Fertig! Der gepatchte Paket ist installiert und wir können mit

service lighttpd restart

neu starten. Von einem Browser ist der lighttpd nun unter der IP Adresse oder des Domainnames des Raspberry erreichbar.

Wenn dir der Post weitergeholfen hat, oder du Verbesserungsvorschläge hast, würde ich mich über einen Kommentar sehr freuen.