Da mein Low-Cost XBMC im Schlafzimmer beim Streamen desöfteren Probleme gemacht hat habe ich mich nun durchgerungen ein Upgrade von OpenELEC 3 auf OpenELEC 5 durchzuführen.
Im Zuge dessen habe ich auch gleich das ganze System vom USB Stick ins Netzwerk verlagert.
Die meisten HOWTOs gehen davon aus, dass jeder Dienst auf ein und derselben Maschine läuft, daher habe ich kurz zusammengefasst welche Einstellungen für meine spezifische Konfiguration notwendig waren.
Netzwerkaufbau
Router: Linksys WRT54GL mit Tomato Firmware
- DHCP Server
Fileserver: Ubuntu 11.04
- TFTP Server
- NFS Server
NAS: Synology DiskStation DS213j
- NFS Server
Client: Zotac ZBOX-ID41 (Technische Daten)
- OpenELEC
OpenELEC Upgrade auf Version 5 und Datensicherung
Vor der Umstellung auf PXE-Boot habe ich OpenELEC auf dem USB Stick noch auf die aktuelle Version aktualisiert. Das Update geht relativ problemlos, muss aber manuell durchgeführt werden.
Ich habe sicherheitshalber zuerst das Update von Version 3 auf Version 4 durchgeführt und dann erst auf Version 5.
Für das manuelle Update müssen aus dem OpenELEC Archiv die Dateien SYSTEM
, SYSTEM.md5
, KERNEL
und KERNEL.md5
in das freigegebene Verzeichnis Update
kopiert werden. Nach einem Neustart wird das Update automatisch installiert.
Als das alles erledigt war habe ich mit dem OpenELEC Plugin unter XBMC/Kodi noch ein Backup angelegt um nach der Umstellung die Einstellungen wieder importieren zu können (die Sicherung kann man sich danach aus dem freigegebenen Ordner Backup
holen).
Konfiguration DHCP Server
Auf meinem Linksys Router läuft wie bereits erwähnt die Tomato Firmware und somit Dnsmasq. Um Anfragen an den TFTP Server weiterzuleiten reicht schon eine Zeile in der erweiterten Konfiguration, zu finden unter Advanced » DHCP / DNS » Dnsmasq Custom configuration:
dhcp-boot=pxelinux.0,,192.168.0.7
Syntax: Pfad zum Boot-Image, TFTP-Hostname, IP-Adresse des TFTP-Servers
Ich vergebe auch noch gleich eine statische IP Adresse für den Client um später eine spezifische Boot-Konfiguration festlegen zu können bzw. für die NFS Freigabe – da dieser sowieso gerade im Netz ist kann diese unter Status » Device List einfach eingestellt werden. Dazu einfach auf den kleinen Link „[static]“ bei der richtigen Mac Adresse klicken, danach auf „Add“ (wichtig) und abspeichern. Wenn der Rechner gerade nicht im Netz hängt kann die IP auch manuell eingegeben, dafür wird aber die MAC Adresse benötigt.
Konfiguration NFS auf dem Synology NAS
Die Einrichtung läuft unter DSM 4.3 relativ unkompliziert ab. Zuerst muss NFS aktiviert werden, das erledigt man im Control Panel unter „Win/Mac/NFS“. Im Reiter „NFS Service“ muss nur das Häcken bei „Enable NFS“ gesetzt werden.
Dann lege ich noch im Control Panel unter „Shared Folder“ eine Freigabe an, in meinem Fall nenne ich sie einfach nur „tftp“.
Die Freigabe per NFS wird dann per Rechtsklick auf die neue Freigabe unter Privileges » NFS Privileges aktiviert.
Die Rechte werden hier nicht nach Benutzernamen vergeben sondern per IP Adressen/Hosts – Zum Testen habe ich die Freigabe fürs ganze Netzwerk gesetzt, daraus ergeben sich bei mir folgende Einstellungen:
Hostname or IP: 192.168.0.0/24 Privilege: Read/Write Root squash: No mapping Security: sys [*] Enable asynchronous [ ] Allow Connections from non-privileged ports (ports higher than 1024
Wer möchte kann die Freigabe auch noch per Samba den Windows Clients zur Verfügung stellen.
Abschließend habe ich noch schnell ein Unterverzeichnis „xbmc-schlafzimmer“ angelegt, nur für den Fall dass ich später noch andere Clients einbinden möchte. Hier werden dann alle Daten von XBMC/Kodi landen.
Installation/Konfiguration TFTP & NFS auf dem Ubuntu Fileserver
Zuerstmal installieren wir die benötigten Pakete:
sudo apt-get install tftpd-hpa nfs-kernel-server syslinux
Die Boot Images liegen bei mir unter /mnt/storage/tftpboot
, das Home Verzeichnis für OpenELEC befindet sich auf dem Synology NAS.
Konfiguration NFS Server
Ich habe nur folgenden Eintrag der Datei /etc/exports
angehägt um den vom TFTP Server benötigten Pfad per NFS freizugeben:
/mnt/storage/tftpboot 192.168.0.0/255.255.255.0(ro,async,no_subtree_check,no_root_squash)
Nach der Änderung muss der Dienst mit service nfs-kernel-server restart
neu gestartet werden.
Konfiguration TFTP Server
sudo mkdir -m777 /mnt/storage/tftpboot sudo mkdir /mnt/storage/tftpboot/pxelinux.cfg sudo cp -p /usr/lib/syslinux/pxelinux.0 /mnt/tftpboot/ sudo mkdir /mnt/storage/tftpboot/openelec-x86_64-5.0.2
In das Verzeichnis /mnt/storage/tftpboot/openelec-x86_64-5.0.2
werden die Dateien KERNEL
und SYSTEM
aus dem OpenELEC Archiv kopiert, ich habe das auf die Schnelle einfach per WinSCP erledigt.
In der Datei /etc/default/tftpd-hpa
muss dann auch noch der Pfad zum TFTP Root angepasst werden, der Inhalt der Datei ist bei mir folgender:
TFTP_USERNAME="tftp" TFTP_DIRECTORY="/mnt/storage/tftpboot" TFTP_ADDRESS="0.0.0.0:69" TFTP_OPTIONS="--secure"
Konfguration des Bootmenüs
Das zu startende Image für die Netzwerkclients wird standardmäßig mit der Datei /mnt/storage/tftpboot/pxelinux.cfg/default
festgelegt – um nur OpenELEC zu booten reicht zum Beispiel folgender Inhalt:
# Zotac OpenELEC XBMC/Kodi Client DEFAULT openelec5 PROMPT 0 LABEL openelec5 KERNEL /openelec-x86_64-5.0.2/KERNEL APPEND ip=dhcp boot=NFS=192.168.0.7:/mnt/storage/tftpboot/openelec-x86_64-5.0.2 disk=NFS=192.168.0.240:/volume1/tftp/xbmc-schlafzimmer
Hier wird automatisch OpenELEC gebootet – wer mehrere Clients hat kann für jeden auch eine eigene Konfiguration festlegen und per Default ein Bootmenü anzeigen lassen, ich habe zum Beispiel verschiedene Diagnosetools noch im Standardmenü und für den einen Client wird generell nur OpenELEC gestartet wie in dem oben angeführten Beispiel auch.
Nun muss nur noch der TFTP Dienst mit service tftpd-hpa restart
neu gestartet werden.
Abschließende Worte
Wenn alle Pfade passen und die Dateien dort sind wo sie sein sollen müsste der PC nun übers Netzwerk mit der richtigen IP Adresse booten und direkt OpenELEC starten. Dann kann das zuvor erstellte Backup rüberkopiert werden und wiederhergestellt werden und alles (ausser dem Boot-Medium) sollte wieder sein wie vorher.
Bei mir hat sich zwar die Bootgeschwindigkeit weder verbessert noch verschlechtert, aber Thumbnails von YouTube werden nun beinahe ohne Verzögerung dargestellt, was ein großer Pluspunkt für mich ist. Wie lange der Bootvorgang dauert ist eher unerheblich, da der PC sowieso immer läuft und dann bei Nichtbenutzung nur noch im Standby ist – hat sich also auf jeden Fall für mich gelohnt.