Mit wenig Aufwand lassen sich auch kostengünstige, plattenlose Barebones als vollwertiger MythTV-Client einsetzen. So bleibt’s im Wohnzimmer aufgeräumt und leise.
Der MythTV-Grundlagenartikel in der Dezember-Ausgabe von LinuxUser [1] hat die Installation und Konfiguration eines MythTV-Backends und des passenden PC-Frontends vorgestellt. Der vorliegenden Teil der losen Serie zeigt eine kostengünstige Möglichkeit, ein vorhandenes MythTV-Backend-System um ein separates Frontend zu erweitern. Dabei dient einen preiswerter Barebone-PC ohne Festplatte als Client fürs Wohnzimmer. Das Betriebssystem bezieht er via Netzwerk vom selben Server, der auch als MythTV-Backend im Keller oder einer Abstellkammer seinen Dienst versieht.
Serie MythTV
| Basis-Installation | LU 12/2010, S. 30 | https://www.linux-community.de/22109 |
| Diskless Client | LU 03/2011, S. 54 |
Hardware
Als Hardware für den Abspiel-Client taugt im Prinzip jede Linux-fähige PC-Hardware, sofern sie eine Netzwerkkarte mitbringt, die über das LAN booten kann. Über diese Fähigkeit verfügen heute die meisten NICs. Für das Wohnzimmer eignen sich aus naheliegenden Gründen vor allem kompakte und in einem schicken Gehäuse verpackte Barebone-Systeme.
In dem System sollte eine Grafikkarte mit Nvidia-Chipsatz zum Einsatz kommen: Sie kann die HDTV-Dekodierung auf dem Grafikchip vornehmen. Diese vom Nvidia-Linux-Treiber unterstützte Erweiterung nennt sich VDPAU (“Video Decode and Presentation API for Unix”, [2]). Eine Liste von Grafikchips, die diese Methode unterstützen, hält die englischsprachige Wikipedia vor [3]. Falls Sie planen, HDTV oder in H.246 kodierte Videodateien wiederzugeben und eine Grafikkarte einsetzen, die diesen Standard nicht unterstützt, fällt eine entsprechende höhere CPU-Belastung an.
Als Speicherausstattung für den Barebone genügt 1 GByte RAM, ein DVD-Laufwerk sollte zur Wiedergabe entsprechender Medien nicht fehlen. Für die Ausgabe zum Fernseher oder AV-Receiver (falls vorhanden) verwenden Sie ein HDTV-Kabel. Falls der Barebone nicht über einen HDTV-Ausgang verfügt, können Sie auch mittels eines entsprechenden Kabels von DVI auf HDTV umsetzen.
Die Audio-Ausgabe (sofern von der Hardware unterstützt) lässt sich via HDMI-Kabel übertragen. Besteht seitens der Hardware diese Möglichkeit nicht, empfiehlt es sich, die Tonausgabe per digitalem S/PDIF-Kabel an einen passenden Verstärker anzuschließen. Falls keine separaten Boxen vorhanden sind, sollten Sie den Line-Out-Anschluss mittels eines normalen Audiokabels an den Line-In-Eingang des Fernsehers anschließen.
Zur Bedienung des MythTV-Frontends empfiehlt sich eine Fernbedienung mit Infrarot-Empfänger: Zwar erfüllt eine Tastatur prinzipiell den selben Zweck, lässt sich aber von der Wohnzimmercouch aus nur etwas umständlich nutzen. Eine mögliche Alternative bieten Bluetooth-Tastaturen mit entsprechender Reichweite. Für die Ansteuerung per Infrarot benötigen Sie einen vom LIRC-Projekt (“Linux Infrared Remote Control”) unterstützten serieller oder USB-Empfänger – eine Liste solcher Geräte finden Sie auf der Website des Projekts [4].
Als einfacher und funktioneller Empfänger hat sich beispielsweise das “Windows Media Center Remote” bewährt, das es im Elektronikgroßmarkt oder bei eBay günstig zu erwerben gibt. Von seriellen Empfängern sollte Sie besser die Finger lassen: Die meisten neueren PCs verfügen über keinen seriellen Anschluss, und den Betrieb an einem USB-Seriell-Adapter unterstützt LIRC nicht.
Software-Komponenten
Es erfordert einige Netzwerkdienste, um einen PC via PXE übers Netzwerk zu booten. Deren Installation und Konfiguration erklären wir im Folgenden am Beispiel von OpenSuse, bei anderen Distributionen verläuft sie aber analog. Die für den Netzwerkstart notwendigen Komponenten hängen von der gewählten Boot-Methode und der Distribution ab, die Sie über das Netzwerk starten wollen.
Die folgenden Ausführungen beschreiben den Netzwerkstart mittels PXELINUX [5] via DHCP und TFTP), die Bereitstellung der Linux-Systemdateien und MythTV-Programmdateien mittels NFS und der Konfigurationsdateien über HTTP. Der Startprozess über Netzwerk stellt sich hier wie folgt dar (Abbildung 1):
- Das BIOS des PCs sendet eine BOOTP-Anfrage an den DHCP-Server.
- Der DHCP-Server teilt dem BIOS die IP-Adresse des TFTP-Servers mit sowie die Stelle, an welcher der PXELINUX-Bootloader auf dem TFTP-Server liegt. Anschließend lädt das BIOS den PXELINUX-Bootloader vom TFTP-Server.
- Der PXELINUX-Bootloader wiederum lädt die zugehörige Konfigurationsdatei. Aus dieser erfährt er dem zu ladenden Linux-Kernel und fordert diesen bei TFTP-Server an.
- Daneben umfasst die Konfigurationsdatei auch die Lokation des Root-Laufwerks, das der Client zu guter Letzt per NFS einbindet.
Zunächst gilt es die notwendigen Softwarepakete installieren. In OpenSuse erledigen Sie das am zügigsten über das Kommandozeilentool Zypper mithilfe des Befehls
# zypper in dhcp-server yast2-tftp-server tftp yast2-nfs-server
Um über den DHCP-Server die entsprechenden Parameter zum Netzwerkstart bereitzustellen, passen Sie dessen Konfigurationsdatei /etc/dhcpd.conf so an, wie in Listing 1 zusehen. In OpenSuse müssen Sie zusätzlich noch in der Datei /etc/sysconfig/dhcpd den Parameter DHCPD_INTERFACE auf das interne Netzwerk-Interface setzen, meist also:
DHCPD_INTERFACE="eth0".
Nun konfigurieren Sie den DHCP-Server noch mittels des Kommandos chkconfig dhcpd on für den automatischen Start. Da Sie nur einen DHCP-Server im Netzwerk betreiben können, müssen Sie eventuell vorhandene weitere DHCP-Server nun deaktivieren (etwa jenen des Internet-Routers) und die Optionen für das LAN im neuen DHCP-Server konfigurieren (/etc/dhcpd.conf).
Listing 1
# Default-Domain des LANs (ermittelt per "dnsdomainname")
option domain-name "mynetwork.net";
# DNS-Server (im LAN oder extern)
option domain-name-servers 10.10.10.1;
# Default-Router im LAN (Gateway ins Internet)
option routers 10.10.10.1;
# Timeserver (im LAN oder extern - zwingend notwendig!)
option ntp-servers 10.10.10.1;
# Korrekte Zeitzonenübermittlung sicherstellen
option tcode code 101 = text;
option tcode "Europe/Berlin";
# BOOTP-Protokoll erlauben
allow bootp;
# Bereitgestelltes Subnetz (hier: 10.10.10.0)
netmask 255.255.255.0 {
# Netzwerkbereich per DHCP
range 10.10.10.100 10.10.10.200;
default-lease-time 14400;
max-lease-time 172800;
}
# Parameter für den Netzwerkstart
group {
# Hostname für den Client bereitstellen
use-host-decl-names on;
host mythclient1 {
# Hostname
option host-name "mythclient1";
# MAC-Adresse
hardware ethernet 00:30:1b:81:7a:5d;
# DHCP/TFTP Server
next-server 10.10.10.1;
# fixe IP Adresse vorgeben
fixed-address 10.10.10.50;
# Dateiname für den Bootloader
filename "PXEClient/pxelinux.0";
}
}
Als nächstes aktivieren Sie den TFTP-Server, der die notwendigen Bootdateien im Netzwerk bereitstellt. Das erledigen Sie in YaST unter Network Services | TFTP Server. Als Boot Image Directory: geben Sie hier /tftpboot an.
Nun laden Sie vom SYSLINUX-Projekt [5] das aktuelle Programmarchiv (zu Redaktionsschluss syslinux-4.03.tar.gz) herunter, das auch PXELINUX enthält. Legen Sie im Verzeichnis /tftpboot das Verzeichnis PXEClient an und kopieren sie aus dem SYSLINUX-Tarball die beiden Dateien core/pxelinux.0 und com32/menu/menu.c32 dorthin. Außerdem legen Sie in PXEClient je ein Verzeichnis für die Konfigurationsdatei des Bootloaders (PXEClient/pxelinux.cfg) und für den Kernel (PXEClient/kernel) an. Unter pxelinux.cfg erstellen Sie eine Textdatei default mit dem Inhalt aus Listing 2. Am der selben Stelle können Sie bei Bedarf auch verschiedene Konfigurationsdateien für unterschiedliche Linux-Systeme anlegen [6].
Listing 2
# pxelinux.cfg/default PROMPT 1 DEFAULT minimyth-nfs DISPLAY messages TIMEOUT 5 label minimyth-nfs KERNEL kernel/kernel APPEND ro root=/dev/nfs ip=dhcp nfsroot=10.10.10.1:/minimyth/minimyth-fs/rootfs
Für den Client müssen Sie außerdem einen NTP-Zeitserver zur Synchronisation bereitstellen. Dazu wählen Sie in YaST Network Services | NTP Konfiguration: “Now and On Boot” und bestätigen mit OK.
Minimyth
Nun gilt es noch das Betriebssystem bereitzustellen, das der Client über das Netzwerk booten soll. Dazu gibt es prinzipiell zwei Möglichkeiten: Entweder lädt man nur den Kernel übers Netzwerk und greift auf die restlichen Linux-Systemdateien per NFS zu (wie in diesem Beispiel), oder man überträgt die komplette Distribution in den Speicher des Barebones und startet das Linux von dort. Die Variante, das Linux-System über NFS zu starten, ist die schnellere. Sie können auf diesem Weg auch andere für den Netzwerkstart ausgelegte Distributionen konfigurieren, etwa um ein Knoppix via PXE auf einem anderen Rechner zu starten.
Als gute Wahl für unseren Zweck erweist sich Minimyth [7], eine speziell für MythTV angepasste Distribution zum Booten übers LAN. Laden Sie von der Projektseite die zu Ihrer MythTV-Version passende Version für NFS herunter [8]. Erstellen Sie das Verzeichnis /minimyth, aus dem Sie später das die Linux-Systemdateien und MythTV-Programmdateien für den Netzwerkclient per NFS bereitstellen. Darin legen Sie nun einen Ordner minimyth-fs an und entpacken mit
$ tar xvjf nfs-minimyth-Version.tar.bz2 --strip-components=1 -C minimyth-fs
das heruntergeladenen Minimyth-Archiv. Verschieben Sie die Datei kernel nach /tftpboot/PXEClient/kernel/. Wechseln Sie dann ins Verzeichnis minimyth-fs und entpacken Sie die dort Datei rootfs.tar.bz2. Die Datei themes.tar.bz2 entpacken sie mit folgendem Befehl in das entsprechende Verzeichnis:
$ tar xvjf themes.tar.bz2 -C rootfs/rootfs-ro/usr/share/mythtv
Um dem Client den Zugriff auf die Systemdateien zu ermöglichen, geben Sie nun das Verzeichnis per NFS frei. Am einfachsten starten Sie dazu in YaST via Network Services die NFS Server Konfiguration und setzen die Option auf Start. Auf der nächsten Konfigurationsseite fügen Sie mit Add Directory das Verzeichnis /minimyth/minimyth-fs/rootfs mit den Standardoptionen hinzu und schließen die Konfiguration ab.
PXE aktivieren
Im BIOS des Barebone müssen Sie die Startoption für PXE einstellen, was je nach verwendeter Hardware und BIOS-Version etwas unterschiedlich funktioniert. In Abbildung 2 sehen Sie die Einstelloptionen eines Shuttle-Barebone mit Award-BIOS. Hier gilt es die Optionen Onboard Lan Boot ROM auf Enabled und First Boot Device auf NVIDIA Boot Age zu setzen.

Abbildung 2: Für PXE müssen Sie die entsprechenden Optionen im BIOS des Clients aktivieren. Hier sehen Sie die Einstellungen im Award-BIOS eines Shuttle-Barebones.
Nun sollten Sie einen ersten Bootversuch mit dem Client unternehmen. Funktioniert alles, bootet der Rechner nun via PXE. Klappt der Startvorgang wider Erwarten nicht, kontrollieren sie als erstes die Datei /var/log/messages auf entsprechende Hinweise.
Falls der Client dagegen mit dem Hinweis minimyth.conf not found den Startvorgang beendet, ist der PXE-Netzwerkstart korrekt eingerichtet. Im nächsten Schritt gilt es nun das Minimyth-System zu konfigurieren.
Minimyth konfigurieren
Damit der neue Client auf die MythTV-Backend-Datenbank zugreifen kann, müssen Sie dort den Zugriff übers Netzwerk erlauben, sofern noch nicht geschehen. Die entsprechenden Befehle zeigt Listing 3. Das Kommando in Zeile 2 gewährt allen Rechnern im Netz 10.10.10.0 Zugriff. Um den Zugriff von allen Netzwerkadressen aus zu erlauben, müssten Sie hier "10.10.10.%" durch ein schlichtes "%" ersetzen.
Listing 3
$ mysql -u root mythconverg mysql> grant all on mythconverg.* to mythtv@"10.10.10.%" identified by "mythtv"; mysql> flush privileges; mysql> exit
In den Konfigurationsdateien für Minimyth passen Sie die Parameter wie Grafikauflösung, Soundkarte und Fernbedienung an. Dazu legen Sie unter /tftpboot/PXEClient/ das Verzeichnis conf/default/ an und laden die Beispielvorlage von [9] dorthin. Diese passen Sie nun mit einem Texteditor entsprechend der Hardware an. Grundsätzlich funktioniert die automatische Konfiguration des Systems sehr gut. Sie müssen nur wenige Parameter in der Konfigurationsdatei zwingend setzen (siehe Listing 4). Eine genaue Beschreibung aller Parameter finden Sie unter [7].
Listing 4
# bei vorhandener Grafikkarte mit VDPAU MM_VIDEO_DECODER='vdpau' # Seitenverhältnis (16:9 oder 4:3) MM_VIDEO_ASPECT_RATIO='16:9' # Tonausgabe: 'digital' für SP/DIF, 'analog' für Klinkenstecker MM_AUDIO_TYPE='digital' # Bildausgang: MM_X_OUTPUT_HDMI, ..._DVI, ..._VGA, ..._TV MM_X_OUTPUT_HDMI='auto' # Bildauflösung (HD: 1920x1080, TV: 720x480, 720x576, ...) MM_X_MODE='1920x1080' # Theme fuer Minimyth MM_THEME_NAME='metallurgy' MM_THEMEOSD_NAME='Titivillus-OSD' # nur vor MythTV 0.24 MM_THEMECACHE_URL='auto'
Bei einem erneuten Startversuch läuft nun auf dem Client das Minimyth-System an und präsentiert eine Sprachauswahl. Damit sind Sie nun in der Lage, auf dem neuen Client Aufnahmen und DVDs abzuspielen oder Live-TV zu nutzen.
Medienverzeichnisse
Um auch andere Medien auf dem neuen Client abzuspielen, gilt es noch die entsprechenden Verzeichnisse für MP3s, Videos etc. mit dem Client zu verbinden. Für per Windows freigegebene Verzeichnisse erstellen Sie dazu im Verzeichnis conf eine Konfigurationsdatei namens credentials_cifs mit den Zugriffsberechtigungen (Listing 5). Die zu verbindenden Verzeichnisse geben Sie in der Datei minimyth.conf über einige Konfigurationsparameter an (Listing 6). Nach einem Neustart des Clients stehen die entsprechenden Dateien dann unter den Menüpunkten Musik hören, Videos ansehen und Bilder ansehen zur Verfügung.
Listing 5
username=ernst password=geheim domain=WORKGROUP
Listing 6
MM_SECURITY_FETCH_CREDENTIALS_CIFS='yes'
# fuer Bilder - 'pictures' ist das per Windows/Samba freigegebene Verzeichnis
MM_MEDIA_GALLERY_URL="cifs://${MM_TFTP_SERVER}/pictures?credentials=/etc/cifs/credentials_cifs"
# fuer Videos
MM_MEDIA_VIDEO_URL="cifs://${MM_TFTP_SERVER}/videos?credentials=/etc/cifs/credentials_cifs"
# fuer Musik -- hier per NFS vom Server
MM_MEDIA_MUSIC_URL="nfs://${MM_TFTP_SERVER}/data/mp3"
Glossar
-
PXE
-
Preboot Execution Environment, von Intel entworfenes Verfahren zum Booten via Netzwerk. Der PXE-Code befindet sich im BIOS der Netzwerkkarte und ermöglicht die Kommunikation mit einem DHCP- und einem PXE-Server. PXE nutzt die Protokolle TCP/IP, UDP, DHCP und TFTP.
-
TFTP
-
Trivial File Transfer Protocol (RFC 1350). Verbindungsloses, paketorientiertes Übertragungsprotokoll zum Lesen und Schreiben von Dateien; bietet keine erweiterten Funktionen wie das Übermitteln von Verzeichnisinhalten, Authentifizierung, Kompression oder Verschlüsselung.
Infos
[1] MythTV einrichten: Ernst Reiter, “Großes Theater”, LU 12/2010, S. 30, https://www.linux-community.de/22109
[2] VDPAU: http://de.wikipedia.org/wiki/VDPAU
[3] Nvidia-Chips mit VDPAU: http://en.wikipedia.org/wiki/Nvidia_PureVideo
[4] LIRC-Projekt: http://www.lirc.org
[5] PXELINUX: http://syslinux.zytor.com/wiki/index.php/PXELINUX
[6] PXELINUX-Wiki: http://syslinux.zytor.com/wiki/index.php/PXELINUX
[7] Minimyth: http://www.minimyth.org
[8] Minimyth herunterladen: http://www.minimyth.org/download/test/
[9] Minimyth-Konfigurationsdatei: http://www.minimyth.org/conf/minimyth.conf






