Digital Video Recorder with mythtv
This page is currently only available in german!
Server
Netboot
Die diskless clients beziehen sich das Betriebssystem (Ubuntu) und das mythtv-Frontend über eine eigens eingerichtete Netboot-Umgebung, die wir zweckmäßigerweise in /var/lib/netboot/mythclient1 einrichten. TODO!dhcp3
Wenn der netboot-fähige Client ans Netz gehängt und angeschaltet wird, sollte man als erstes in /var/log/daemon.log nachsehen, mit welcher MAC-Adresse er sich vom DHCP-Server die IP-Adresse holen möchte. Die Ausgabe dieses Logfiles sieht wie folgt aus:Mar 18 21:00:18 christoph dhcpd: DHCPOFFER on 192.168.1.200 to 00:02:ff:01:1f:42 via eth0
Mar 18 21:00:18 christoph dhcpd: DHCPREQUEST for 192.168.1.200 (192.168.1.3) from 00:02:ff:01:1f:42 via eth0
Mar 18 21:00:18 christoph dhcpd: DHCPACK on 192.168.1.200 to 00:02:ff:01:1f:42 via eth0
Mar 18 21:00:25 christoph dhcpd: DHCPDISCOVER from 00:02:ff:01:1f:42 via eth0
Mar 18 21:00:25 christoph dhcpd: DHCPOFFER on 192.168.1.200 to 00:02:ff:01:1f:42 via eth0
Mar 18 21:00:25 christoph dhcpd: DHCPREQUEST for 192.168.1.200 (192.168.1.3) from 00:02:ff:01:1f:42 via eth0
Mar 18 21:00:25 christoph dhcpd: DHCPACK on 192.168.1.200 to 00:02:ff:01:1f:42 via eth0
option space PXE;
option PXE.mtftp-ip code 1 = ip-address;
option PXE.mtftp-cport code 2 = unsigned integer 16;
option PXE.mtftp-sport code 3 = unsigned integer 16;
option PXE.mtftp-tmount code 4 = unsigned integer 8;
option PXE.mtftp-delay code 5 = unsigned integer 8;
option PXE.discovery-control code 6 = unsigned integer 8;
option PXE.discovery-mcast-addr code 7 = ip-address;
option domain-name "your.private.domain";
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.200 192.168.1.220;
option domain-name "your.private.domain";
option routers 192.168.1.254;
option broadcast-address 192.168.1.255;
default-lease-time 600;
max-lease-time 7200;
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
option vendor-class-identifier "PXEClient";
vendor-option-space PXE;
option PXE.mtftp-ip 0.0.0.0;
filename "/var/lib/tftpboot/pxelinux.0";
option root-path "192.168.1.3:/var/lib/netboot/root";
next-server 192.168.1.3;
}
}
host pxeclient {
hardware ethernet 00:02:ff:01:1f:42;
fixed-address 192.168.1.7;
}
tftpd
Um diskless clients mit dem Betriebssystem und dem mythtv-Frontend zu versorgen, muß auf dem Master-Server ein tftp-Daemon eingerichtet und konfiguriert werden. Hierfür wird das Paket tftpd-hpa verwendet.In der /etc/inetd.conf muß folgende zeile ergänzt bzw. korrigiert werden:
Der Bootvorgang wird dabei in /var/lib/tftpboot/pxelinux.cfg/default folgendermaßen konfiguriert:
LABEL ubuntu
kernel mythtv/vmlinuz-2.6.27-11-generic
append initrd=mythtv/initrd.img-2.6.27-11-generic rwnfs=192.168.1.3:/var/lib/netboot/mythclient1/config aufs=nfs nfsroot=192.168.1.3:/var/lib/netboot/mythclient1/root ro
IPAPPEND
PROMPT 1
TIMEOUT 10
mysql
Um die Datenbank den Clients zugängig zu machen, muß die mysql.cnf geändert werden. Wichtig dabei ist, daß die ZeileEPG-Datenimport via EIT
DVB-T-Sender senden in ihrem Datenstrom die EPG-Daten der nächsten 7 Tage. Diese werden in mythtv importiert, in dem als Provider EIT angegeben wird.EPG-Datenimport via nxtvepg
Auch für analog zu empfangende Programme gibt es einen EPG, der aktuell auf Kabel 1 mitgesendet wird. Um diese Daten zu empfangen, wird das Paket nxtvepg verwendet.Einmal täglich werden die Daten mit folgendem (Cron-)job geholt und importiert:
nxtvepg -provider d92 -dump xml > /tmp/nxtvepg.xml
mythfilldatabase --file 2 /tmp/nxtvepg.xml
Wichtig: Der cronjob muß zu einer Zeit laufen, zu der unter Garantie niemand sonst, vor allem keine Aufnahme, auf den Analog-Tuner zugreift!
Client
Netboot-fähiges DOM
Einhängen des DOMs in das System
Das DOM wird in einen freien IDE-Slot eines Rechners gesteckt; der Stromadapter an die rot-schwarzen Pins eines Molex-Steckers gehängt.Nun sucht man am besten mit Hilfe des Befehls dmesg, als welches Device das DOM dem System bekannt gemacht wurde. Die Ausgabe enthält dabei unter anderem:
[ 3.446801] scsi 0:0:0:0: Direct-Access ATA DMSTORAGE FDM032 1.1 PQ: 0 ANSI: 5
...
[ 3.825360] sd 0:0:0:0: [sda] 62496 512-byte hardware sectors (32 MB)
[ 3.825379] sd 0:0:0:0: [sda] Write Protect is off
[ 3.825382] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[ 3.825414] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[ 3.825501] sd 0:0:0:0: [sda] 62496 512-byte hardware sectors (32 MB)
[ 3.825515] sd 0:0:0:0: [sda] Write Protect is off
[ 3.825517] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[ 3.825538] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[ 3.825541] sda: sda1
[ 3.827509] sd 0:0:0:0: [sda] Attached SCSI disk
Befehl (m für Hilfe): p
Platte /dev/sda: 31 MByte, 31997952 Byte
16 Köpfe, 63 Sektoren/Spuren, 62 Zylinder
Einheiten = Zylinder von 1008 × 512 = 516096 Bytes
Disk identifier: 0x00000000
Gerät boot. Anfang Ende Blöcke Id System
/dev/sda1 1 62 31216+ 6 FAT16
Befehl (m für Hilfe): q
Sichern des Original-DOM-Images
Das Sichern des Original-DOM-Images passiert folgendermaßen:# dd if=/dev/sda of=/home/youruser/DOM_sicherung.img
-rw-r--r-- 1 root 31997952 2009-03-18 20:21 DOM_sicherung.img
Beschreiben des DOMs mit dem Netboot-Image
Das DOM in /dev/sda wird folgendermaßen mit dem Netboot-Image versehen:62496+0 Datensätze ein
62496+0 Datensätze aus
31997952 Bytes (32 MB) kopiert, 34,9466 s, 916 kB/s
Befehl (m für Hilfe): p
Platte /dev/sda: 31 MByte, 31997952 Byte
16 Köpfe, 63 Sektoren/Spuren, 62 Zylinder
Einheiten = Zylinder von 1008 × 512 = 516096 Bytes
Disk identifier: 0x00000000
Gerät boot. Anfang Ende Blöcke Id System
/dev/sda1 * 1 1 472+ 83 Linux
/dev/sda2 2 62 30744 82 Linux Swap / Solaris
Befehl (m für Hilfe): q