[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
    # in das neu installierte System wechseln
    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
    # die Zeitzone konfigurieren
    dpkg-reconfigure tzdata
    Code
    # Pakete installieren
    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
    # e-tobis vdr Pakete haben Priorität
    cat >> /etc/apt/preferences << EOF
    Package: *
    Pin: release o=e-tobi.net
    Pin-Priority: 1001
    EOF
    
    
    # Paketlisten aktualisieren
    aptitude update

    c. debian-multimedia.org

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

    d. Pakete installieren

    Code
    # temporäre Dateien löschen
    rm *all.deb
    
    
    # Pakete aktualisieren
    aptitude safe-upgrade
    Code
    # Pakete installieren
    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
    #
    [ -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
    # ASYNCMOUNTNFS abschalten, da /video sonst nicht eingehangen wird
    # siehe auch man rcS
    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
    umount /proc/; umount /sys; umount /dev/pts
    aptitude clean
    exit


    SERVER

    9. Client-Backup

    Code
    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
    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
    /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
    # alte SSH Schlüssel auf das neue System kopieren
    cp /srv/netboot/nfsroot/vdr_hardy/etc/ssh/ssh_host_*key* /srv/netboot/nfsroot/vdr_lenny/etc/ssh/
    # alte MOTD auf neues System kopieren
    cp /srv/netboot/nfsroot/vdr_hardy/etc/motd.tail /srv/netboot/nfsroot/vdr_lenny/etc/
    # altes root home Verzeichnis auf das neue System kopieren
    cp -a /srv/netboot/nfsroot/vdr_hardy/root /srv/netboot/nfsroot/vdr_lenny/
    # altes kilroy home Verzeichnis auf das neue System kopieren
    cp -a /srv/netboot/nfsroot/vdr_hardy/home/kilroy/ /srv/netboot/nfsroot/vdr_lenny/home/
    # altes vdr .ssh Verzeichnis auf das neue System kopieren
    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
    cat > /etc/motd.tail << EOF
    
    
      Willkommen auf dem
    EOF
    figlet -f big VDR >> /etc/motd.tail
    
    uname -snrvm > /var/run/motd && [ -f /etc/motd.tail ] && cat /etc/motd.tail >> /var/run/motd

    14. LIRC

    LIRC aus dem Repository installieren.

    Code
    aptitude install lirc help2man automake1.7 autoconf libtool dialog setserial
    
    
    # lirc deaktivieren - es wird die CVS Variante genutzt
    /etc/init.d/lirc stop
    update-rc.d -f lirc remove
    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
    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
    /etc/init.d/setserial restart

    LIRC aus dem CVS herunterladen.

    Code
    cd /usr/local/src
    cvs -d:pserver:anonymous@lirc.cvs.sourceforge.net:/cvsroot/lirc login
    cvs -z8 -d:pserver:anonymous@lirc.cvs.sourceforge.net:/cvsroot/lirc co lirc
    cd lirc
    ./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
    ./setup.sh
    # 1  Driver configuration 
    # 2  Software configuration 
    # 3  Save configuration & run configure
    make
    make install

    Einfaches lirc-cvs Startskript

    lirc automatisch starten

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

    Beispiel-Konfigurationsdatei für irexec

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

    Die Fernbedienung auswählen.

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

    LIRC starten.

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

    LIRC mittels irw testen.

    Code
    irw

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

    Code
    00000000a0a020df 00 1 lircd.conf
    00000000a0a020df 01 1 lircd.conf
    00000000a0a0a05f 00 2 lircd.conf
    00000000a0a0a05f 01 2 lircd.conf
    00000000a0a0609f 00 3 lircd.conf
    00000000a0a0609f 01 3 lircd.conf
    00000000a0a010ef 00 4 lircd.conf
    00000000a0a010ef 01 4 lircd.conf
    00000000a0a03ac5 00 OK lircd.conf
    00000000a0a03ac5 01 OK lircd.conf

    15. VDR

    VDR Pakete installieren. Beispiel:

    Code
    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
    # 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
    # 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
    /etc/init.d/vdr stop
    zcat /usr/share/doc/vdr/examples/channels.conf.cable.gz > /var/lib/vdr/channels.conf
    /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
    /etc/init.d/vdr stop
    wget --quiet http://www.on-luebeck.de/kilroy/vdr_lenny_howto/remote.conf.harmony-655 -O /var/lib/vdr/remote.conf
    chown vdr.vdr /var/lib/vdr/remote.conf
    /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
    vi /etc/vdr/plugins/plugin.burn.conf

    Beispiel:

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

    b. vdr-plugin-dvd

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

    Code
    rm /var/cache/vdr/dvd
    mkdir /var/cache/vdr/dvd

    c. vdr-plugin-graphlcd

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

    Code
    adduser vdr lp

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

    Code
    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
    cat /etc/vdr/plugins/plugin.graphlcd.conf
    -c /etc/graphlcd.conf -d simlcd
    
    
    sed -i 's/ -d simlcd//' /etc/vdr/plugins/plugin.graphlcd.conf
    
    
    cat /etc/vdr/plugins/plugin.graphlcd.conf
    -c /etc/graphlcd.conf

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

    Code
    /etc/init.d/vdr restart

    d. nvram-wakeup

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

    16. HG DVB Treiber

    Code
    # Kerneltreiber wiederherstellen
    rm -rf /lib/modules/$(uname -r)/kernel/drivers/media/*
    cp -a /lib/modules/media-$(uname -r)/* /lib/modules/$(uname -r)/kernel/drivers/media/
    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

    #67

    Debian 5 - 64bit diskless - Linux 2.6.33-rc4 - 1.6.0-13ctvdr2 - DVB Kernel - FuSi DVB-C 4MB, FW f12623 - TT C1500 - AC Light - 2x DVB-T
    EP-8KDA7I & Sempron64 - 62W - Harmony 655 - lirc-0.8.6-CVS - gLCD Umbau - TV: Samsung LE40B750 U1 PXZG SQ01 - PS3 slim für Blu-Ray - DLNA: MiniDLNA 1.0.16.3
    obsolet:AMD Geode & M811

    Edited 40 times, last by kilroy (March 4, 2010 at 10:56 PM).

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

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

    #67

    Debian 5 - 64bit diskless - Linux 2.6.33-rc4 - 1.6.0-13ctvdr2 - DVB Kernel - FuSi DVB-C 4MB, FW f12623 - TT C1500 - AC Light - 2x DVB-T
    EP-8KDA7I & Sempron64 - 62W - Harmony 655 - lirc-0.8.6-CVS - gLCD Umbau - TV: Samsung LE40B750 U1 PXZG SQ01 - PS3 slim für Blu-Ray - DLNA: MiniDLNA 1.0.16.3
    obsolet:AMD Geode & M811

  • Update auf Linux Kernel 2.6.32.3 eingepflegt.

    ACPI wakeup Patch für Kernel >= 2.6.32 hinzugefügt.

    #67

    Debian 5 - 64bit diskless - Linux 2.6.33-rc4 - 1.6.0-13ctvdr2 - DVB Kernel - FuSi DVB-C 4MB, FW f12623 - TT C1500 - AC Light - 2x DVB-T
    EP-8KDA7I & Sempron64 - 62W - Harmony 655 - lirc-0.8.6-CVS - gLCD Umbau - TV: Samsung LE40B750 U1 PXZG SQ01 - PS3 slim für Blu-Ray - DLNA: MiniDLNA 1.0.16.3
    obsolet:AMD Geode & M811

  • 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.

    #67

    Debian 5 - 64bit diskless - Linux 2.6.33-rc4 - 1.6.0-13ctvdr2 - DVB Kernel - FuSi DVB-C 4MB, FW f12623 - TT C1500 - AC Light - 2x DVB-T
    EP-8KDA7I & Sempron64 - 62W - Harmony 655 - lirc-0.8.6-CVS - gLCD Umbau - TV: Samsung LE40B750 U1 PXZG SQ01 - PS3 slim für Blu-Ray - DLNA: MiniDLNA 1.0.16.3
    obsolet:AMD Geode & M811

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!