[HOWTO] VDR NFS Client auf Debian 5.0 (64bit) lenny mit debootstrap Installation - 2010.03.04

  • Im Zuge meiner Server-Aktualisierung (Debian 4.0 32bit wurde durch Debian 5.0 64bit ersetzt) wollte
    ich auch den diskless VDR durch Debian 5.0 lenny ersetzen.


    Voraussetzung für diese Installation ist ein funktionsfähiger Fileserver mit NFSd, DHCPd und TFTPd. Das
    Aufsetzen dieser Dienste wird z.B. im alten
    [HOWTO] VDR Client via Netz per NFS booten (Neu: mit debootstrap Installation) beschrieben.


    Für den VDR nutze ich die Pakete, welche Tobi dankenswerterweise in einem Repository für Debian 5.0
    bereit stellt:


    [UPDATE] Lenny + Sid


    Zusätzlich wird der jeweils aktuelle vanilla Kernel von kernel.org und LIRC aus dem CVS genutzt.


    Stand: 2010.03.04


    Linux Kernel 2.6.33
    vdr 1.6.0-13ctvdr3
    lirc-0.8.6 CVS



    Inhaltsverzeichnis


    SERVER: Der Client


    1. Grundsystem
    2. Nutzerverwaltung
    3. Repositories

    a. Debian
    b. VDR
    c. debian-multimedia.org
    d. Pakete installieren
    4. Netzwerk
    5. Dateisysteme
    6. Auslagerungsdatei
    7. Kernel

    a. DVB-Karten-Module
    b. DVB-Karten-Firmware

    8. chroot Ende


    SERVER


    9. Client-Backup
    10. NFS-Freigabe
    11. tftp Dämon
    12. Daten-Übernahme


    CLIENT


    13. MOTD
    14. LIRC
    15. VDR

    a. vdr-plugin-burn
    b. vdr-plugin-dvd
    c. vdr-plugin-graphlcd
    d. nvram-wakeup

    16. HG DVB Treiber
    17. Kernel Update

    a. Kernel
    b. LIRC
    c. HG DVB Treiber



    SERVER: Der Client


    Die folgenden Befehle sind, soweit nicht anders erwähnt, als User root auszuführen.


    1. Grundsystem


    Auf dem Server (bei mir ebenfalls mit Debian 5.0 lenny bestückt) wird das Paket debootstrap installiert,
    ein Verzeichnis für den VDR Client eingerichtet und debootstrap ausgeführt, welches das Grundsystem
    aufspielt. Mittels chroot wechselt man in das neue System.


    Ausgabe:


    Code
    1. # in das neu installierte System wechseln
    2. chroot /srv/netboot/nfsroot/vdr_lenny


    Nun werden ein paar spezielle Verzeichnisse eingebunden, locales und die Zeitzone eingerichtet, die
    Paketverwaltung aktualisiert und einige wichtige Pakete installiert. vim läßt sich gegen den bevorzugten
    Editor austauschen.


    Code
    1. # die Zeitzone konfigurieren
    2. dpkg-reconfigure tzdata
    Code
    1. # Pakete installieren
    2. aptitude install wget debconf devscripts vim


    2. Nutzerverwaltung


    Jetzt erfolgt das Erstellen der Gruppe und des Nutzers vdr. Wer bereits ein Videoverzeichnis mit alten
    Aufnahmen besitzt, sollte uid und gid entsprechend setzen.



    Das root Passwort und der Nutzer kilroy werden eingerichtet. Damit 'kilroy' u.a. aus syslog lesen kann,
    wird er in die Gruppe adm eingetragen.




    3. Repositories


    a. Debian 5.0


    Als nächstes werden die Einträge für die Paketverwaltung vorgenommen und es werden die aktuellen
    Updates sowie ein paar weitere Programme installiert.



    b. VDR


    Code
    1. # e-tobis vdr Pakete haben Priorität
    2. cat >> /etc/apt/preferences << EOF
    3. Package: *
    4. Pin: release o=e-tobi.net
    5. Pin-Priority: 1001
    6. EOF
    7. # Paketlisten aktualisieren
    8. aptitude update


    c. debian-multimedia.org


    Code
    1. # debian-multimedia.org einrichten
    2. wget --quiet http://www.debian-multimedia.org/pool/main/d/debian-multimedia-keyring/debian-multimedia-keyring_2008.10.16_all.deb
    3. dpkg -i debian-multimedia-keyring_2008.10.16_all.deb
    4. echo "deb http://www.debian-multimedia.org lenny main" > /etc/apt/sources.list.d/debian-multimedia.org.list
    5. # Paketlisten aktualisieren
    6. aptitude update


    d. Pakete installieren


    Code
    1. # temporäre Dateien löschen
    2. rm *all.deb
    3. # Pakete aktualisieren
    4. aptitude safe-upgrade


    Code
    1. # Pakete installieren
    2. aptitude install udev openssh-server anacron less mc portmap at ntp rsync powernowd exim4 mutt bzip2 build-essential libncurses5-dev kernel-package nfs-common cvs man-db manpages pciutils figlet
    3. #
    4. [ -f /var/log/exim4/paniclog ] && rm /var/log/exim4/paniclog


    4. Netzwerk


    Diese Einträge dienen der Funktionsfähigkeit des Netzwerkes.


    Wer mehr als eine Netzwerkkarte nutzt, muss die Datei interfaces u.U. anpassen.



    5. Dateisysteme


    Die Datei /etc/fstab wird wie nachfolgend aufgeführt erstellt. Auf das Verzeichnis /video mounte ich
    die Aufnahmen, welche auf dem Server liegen. /dev/loop0 dient dem Swap-Bereich.



    Code
    1. # ASYNCMOUNTNFS abschalten, da /video sonst nicht eingehangen wird
    2. # siehe auch man rcS
    3. echo "ASYNCMOUNTNFS=no" >> /etc/default/rcS


    6. Auslagerungsdatei


    Mittels der nächsten Befehlsfolge wird eine Swap-Datei eingerichtet, welche per loop-Device eingehängt wird.



    7. Kernel


    Im nächsten Schritt wird der derzeit aktuelle vanilla Kernel heruntergeladen, ggf. für AMD Geode NX 1750
    gepatcht, übersetzt und installiert. Die verwendete .config sollte man nicht ungeprüft übernehmen.




    a. DVB-Karten-Module


    Ich lade die Module für die DVB Karten in einer vorgegebenen Reihenfolge.



    b. DVB-Karten-Firmware


    Jetzt wird die benötigte Firmware für die FujitsuSiemens FF DVB-Karte geladen. Andere DVB-Karten
    benötigen ggf. weitere Firmware-Dateien.



    8. chroot Ende


    Jetzt die chroot Umgebung verlassen.


    Code
    1. umount /proc/; umount /sys; umount /dev/pts
    2. aptitude clean
    3. exit



    SERVER


    9. Client-Backup


    Code
    1. tar cvjf /tmp/vdr_lenny.tar.bz2 /srv/netboot/nfsroot/vdr_lenny/


    10. NFS-Freigabe


    Auf dem Server muss das root Verzeichnis für den VDR per nfs freigegeben werden.


    Code
    1. echo "/srv/netboot/nfsroot/vdr_lenny 172.17.42.0/255.255.255.0(rw,no_root_squash,no_all_squash,sync,no_subtree_check)" >> /etc/exports
    2. /etc/init.d/nfs-kernel-server reload


    11. tftp Dämon


    Es folgen die Einträge für die PXELINUX Konfigurationsdatei.



    12. Daten-Übernahme


    Ich übernehme diverse Daten des alten Systems auf das Neue.


    Code
    1. # alte SSH Schlüssel auf das neue System kopieren
    2. cp /srv/netboot/nfsroot/vdr_hardy/etc/ssh/ssh_host_*key* /srv/netboot/nfsroot/vdr_lenny/etc/ssh/
    3. # alte MOTD auf neues System kopieren
    4. cp /srv/netboot/nfsroot/vdr_hardy/etc/motd.tail /srv/netboot/nfsroot/vdr_lenny/etc/
    5. # altes root home Verzeichnis auf das neue System kopieren
    6. cp -a /srv/netboot/nfsroot/vdr_hardy/root /srv/netboot/nfsroot/vdr_lenny/
    7. # altes kilroy home Verzeichnis auf das neue System kopieren
    8. cp -a /srv/netboot/nfsroot/vdr_hardy/home/kilroy/ /srv/netboot/nfsroot/vdr_lenny/home/
    9. # altes vdr .ssh Verzeichnis auf das neue System kopieren
    10. cp -a /srv/netboot/nfsroot/vdr_hardy/var/lib/vdr/.ssh /srv/netboot/nfsroot/vdr_lenny/var/lib/vdr/


    Zu diesem Zeitpunkt sollte man den VDR mit dem tatsächlich dafür vorgesehenen Computer starten.
    Für "Trockentests" kann das System auch mit VMware oder VirtualBox gestartet werden.



    CLIENT


    Auf dem gestarteten VDR Client sollte man sich nun anmelden und zum User root wechseln.


    13. MOTD


    Code
    1. cat > /etc/motd.tail << EOF
    2. Willkommen auf dem
    3. EOF
    4. figlet -f big VDR >> /etc/motd.tail
    5. uname -snrvm > /var/run/motd && [ -f /etc/motd.tail ] && cat /etc/motd.tail >> /var/run/motd


    14. LIRC


    LIRC aus dem Repository installieren.


    Code
    1. aptitude install lirc help2man automake1.7 autoconf libtool dialog setserial
    2. # lirc deaktivieren - es wird die CVS Variante genutzt
    3. /etc/init.d/lirc stop
    4. update-rc.d -f lirc remove
    5. aptitude hold lirc


    Den vorhandenen "/dev/ttyS0" (für die erste, serielle Schnitstelle) Eintrag in /var/lib/setserial/autoserial.conf gegen "/dev/ttyS0 uart none" austauschen.


    Code
    1. grep ^"/dev/ttyS0" /var/lib/setserial/autoserial.conf >/dev/null && sed -i 's$^/dev/ttyS0$#/dev/ttyS0$' /var/lib/setserial/autoserial.conf && echo "/dev/ttyS0 uart none" >> /var/lib/setserial/autoserial.conf
    2. /etc/init.d/setserial restart


    LIRC aus dem CVS herunterladen.


    Code
    1. cd /usr/local/src
    2. cvs -d:pserver:anonymous@lirc.cvs.sourceforge.net:/cvsroot/lirc login
    3. cvs -z8 -d:pserver:anonymous@lirc.cvs.sourceforge.net:/cvsroot/lirc co lirc
    4. cd lirc
    5. ./autogen.sh


    Für einen seriellen "Home-brew" Empfänger an der ersten seriellen Schnittstelle folgendes auswählen:


    • remote configuratio: Home-brew (16x50 UART compatible serial port)
    • IR transmitter: None
    • serial device: /dev/ttyS0


    Code
    1. ./setup.sh
    2. # 1 Driver configuration
    3. # 2 Software configuration
    4. # 3 Save configuration & run configure
    5. make
    6. make install


    Einfaches lirc-cvs Startskript



    lirc automatisch starten


    Code
    1. mkdir /etc/lirc-cvs
    2. chmod 755 /etc/init.d/lirc-cvs
    3. update-rc.d lirc-cvs defaults 20


    Beispiel-Konfigurationsdatei für irexec


    Code
    1. wget --quiet http://www.on-luebeck.de/kilroy/vdr_lenny_howto/lircrc -O /etc/lirc-cvs/lircrc


    Die Fernbedienung auswählen.


    Code
    1. cp remotes/logitech/lircd.conf.logitech /etc/lirc-cvs/lircd.conf # Beispiel
    2. #wget --quiet http://www.on-luebeck.de/kilroy/vdr_lenny_howto/lircd.conf.harmony-655 -O /etc/lirc-cvs/lircd.conf


    LIRC starten.


    Code
    1. /etc/init.d/lirc-cvs start


    LIRC mittels irw testen.


    Code
    1. irw


    Wenn alles korrekt arbeitet, sieht die Ausgabe in etwa wie folgt aus.


    Code
    1. 00000000a0a020df 00 1 lircd.conf
    2. 00000000a0a020df 01 1 lircd.conf
    3. 00000000a0a0a05f 00 2 lircd.conf
    4. 00000000a0a0a05f 01 2 lircd.conf
    5. 00000000a0a0609f 00 3 lircd.conf
    6. 00000000a0a0609f 01 3 lircd.conf
    7. 00000000a0a010ef 00 4 lircd.conf
    8. 00000000a0a010ef 01 4 lircd.conf
    9. 00000000a0a03ac5 00 OK lircd.conf
    10. 00000000a0a03ac5 01 OK lircd.conf


    15. VDR


    VDR Pakete installieren. Beispiel:


    Code
    1. aptitude install vdr vdr-plugin-burn vdr-plugin-cinebars vdr-plugin-dvd vdr-plugin-dvdswitch vdr-plugin-epgsearch vdr-plugin-graphlcd vdr-plugin-streamdev-server vdr-plugin-sudoku vdr-plugin-vbox nvram-wakeup
    2. # aptitude install vdr vdr-plugin-burn vdr-plugin-cinebars vdr-plugin-dvd vdr-plugin-dvdswitch vdr-plugin-epgsearch vdr-plugin-graphlcd vdr-plugin-streamdev-server vdr-plugin-sudoku vdr-plugin-vbox vdr-burnbackgrounds vdr-enigmang-icons vdr-genindex vdr-plugin-extrecmenu vdr-plugin-femon vdr-plugin-screenshot vdr-plugin-skinenigmang vdradmin-am vdr-addon-acpiwakeup
    3. # ln -s /usr/lib/vdr/svdrpsend.pl /usr/local/bin/svdrpsend.pl


    Als nächstes ist ggf. eine passende channels.conf nach /var/lib/vdr/channels.conf zu kopieren.
    Beispiel für DVB-C Nutzer:


    Code
    1. /etc/init.d/vdr stop
    2. zcat /usr/share/doc/vdr/examples/channels.conf.cable.gz > /var/lib/vdr/channels.conf
    3. /etc/init.d/vdr start


    An dieser Stelle kann man VDR noch etwas an die eigenen Bedürfnisse anpassen.



    Wer seine Fernbedienung bereits angelernt hat, kann seine alte remote.conf nutzen.


    Code
    1. /etc/init.d/vdr stop
    2. wget --quiet http://www.on-luebeck.de/kilroy/vdr_lenny_howto/remote.conf.harmony-655 -O /var/lib/vdr/remote.conf
    3. chown vdr.vdr /var/lib/vdr/remote.conf
    4. /etc/init.d/vdr start


    a. vdr-plugin-burn


    Wenn kein DVD laufwerk im VDR vorhanden ist, benötigt das burn Plugin ein Ziel-Verzeichnis.


    Code
    1. vi /etc/vdr/plugins/plugin.burn.conf


    Beispiel:


    Code
    1. grep ^"--" /etc/vdr/plugins/plugin.burn.conf
    2. --iso=/video/isos


    b. vdr-plugin-dvd


    Wenn kein DVD laufwerk im VDR vorhanden ist, sollte folgende Änderung vorgenommen werden.


    Code
    1. rm /var/cache/vdr/dvd
    2. mkdir /var/cache/vdr/dvd


    c. vdr-plugin-graphlcd


    Für das graphlcd Plugin muß VDR auf die parallele Schnittstelle zugreifen dürfen.


    Code
    1. adduser vdr lp


    Es wird eine zum LCD passende graphlcd.conf benötigt.


    Code
    1. wget --quiet http://www.on-luebeck.de/kilroy/vdr_lenny_howto/graphlcd.conf -O /etc/graphlcd.conf


    Wenn man nur ein LCD in der graphlcd.conf konfiguriert hat, ist folgende Änderung notwendig.
    Ansosnten ist simlcd entsprechend zu ersetzen.


    Code
    1. cat /etc/vdr/plugins/plugin.graphlcd.conf
    2. -c /etc/graphlcd.conf -d simlcd
    3. sed -i 's/ -d simlcd//' /etc/vdr/plugins/plugin.graphlcd.conf
    4. cat /etc/vdr/plugins/plugin.graphlcd.conf
    5. -c /etc/graphlcd.conf


    Nach einer Änderung an einer Plugin-Konfiguration muß der VDR neu gestartet werden.


    Code
    1. /etc/init.d/vdr restart


    d. nvram-wakeup


    nvram-wakeup Konfigurationsdatei für das PC-Chips M811:



    16. HG DVB Treiber



    Code
    1. # Kerneltreiber wiederherstellen
    2. rm -rf /lib/modules/$(uname -r)/kernel/drivers/media/*
    3. cp -a /lib/modules/media-$(uname -r)/* /lib/modules/$(uname -r)/kernel/drivers/media/
    4. depmod -a



    17. Kernel Update


    Bei einem Kernel Update müssen sowohl der Kernel als auch LIRC und die HG DVB Treiber
    neu übersetzt werden.


    a. Kernel


    Der Kernel kann auf dem meist performanterem Server übersetzt werden.



    Nach dem Verlassen der chroot Umgebung mittels exit wird der neue Kernel in die PXELINUX
    Konfigurationsdatei eingetragen.



    Jetzt muß der VDR CLient Rechner neu gestartet werden. Es wird mit dem neuen
    Kernel gestartet.



    b. LIRC


    Auf dem neu gestarten VDR Rechner wird nun LIRC neu übersetzt.



    Alternativ LIRC auf dem Server übersetzen.



    c. HG DVB Treiber


  • Damit weitere NFS mounts (z.B. /video) zuverlässig eingehangen werden, ist in /etc/default/rcS
    ASYNCMOUNTNFS=no zu setzen.


    Code
    1. # ASYNCMOUNTNFS abschalten, da /video sonst nicht eingehangen wird
    2. # siehe auch man rcS
    3. echo "ASYNCMOUNTNFS=no" >> /etc/default/rcS
  • Update auf Linux Kernel 2.6.33-rc4 eingepflegt.


    ACPI wakeup Problem wurde in diesem Kernel gefixt. Bitte beachten, dass es sich bei dieser Kernel Version um ein "release candidate" handelt.