VDR Portal
Register Calendar Members List Team Members Search Frequently Asked Questions Gallery Go to the Main Page

VDR Portal » Video Disk Recorder » HOWTOS / F.A.Q.s » Aufsetzen eines schlanken HD-VDRs unter Debian mit passender Entwicklungsumgebung » Hello Guest [Login|Register]
Last Post | First Unread Post Print Page | Recommend to a Friend | Add Thread to Favorites
Pages (3): [1] 2 3 next » Post New Thread Post Reply
Go to the bottom of this page Aufsetzen eines schlanken HD-VDRs unter Debian mit passender Entwicklungsumgebung 3 Votes - Average Rating: 10.003 Votes - Average Rating: 10.003 Votes - Average Rating: 10.003 Votes - Average Rating: 10.003 Votes - Average Rating: 10.00
Author
Post « Previous Thread | Next Thread »
geronimo
Freiherr


images/avatars/avatar-1704.jpg

Registration Date: 05.06.2005
Posts: 1,583
Herkunft: 7 07 51 31 110

Aufsetzen eines schlanken HD-VDRs unter Debian mit passender Entwicklungsumgebung Reply to this Post Post Reply with Quote Edit/Delete Posts Report Post to a Moderator       Go to the top of this page

... oder auch: immer schön sauber bleiben smile

Vorwort

    Wer Debian einsetzt, tut dies, weil er das Paketsystem und die Updatepolitik für das Beste hält, was es unter Linux gibt. Warum also beim VDR darauf verzichten und das System durch selbstübersetzte Pakete verunreinigen?
    Deshalb habe ich nach einem Weg gesucht, selbst Pakete übersetzen zu können, ohne die geniale Paketverwaltung von Debian umgehen zu müssen. Ganz klar – ein Entwicklungssystem braucht nur, wer auch am VDR entwickeln will – also z.B. ein Plugin bauen oder anpassen. Wer das nicht vorhat, braucht überhaupt nichts zu übersetzen.
    Mit etwas Sinn für Ordnung lässt sich so ein Entwicklungssystem relativ einfach aufsetzen und warten. Andererseits ist der Paketbau unter Debian alles andere als trivial. Deshalb habe ich an einigen Stellen Zugeständnisse an die 2-Gleisigkeit des VDR, sowie an mein fehlendes Wissen gemacht.
    Diese Beschreibung soll dabei helfen, ein sauberes Entwicklungssystem und ein schlankes Produktivsystem synchron pflegen zu können.
    Sie ist eine Mischung aus Kilroys Howto, Auszügen aus dem Wiki, den Beschreibungen von wbreu, Tips von hummingbird_de und natürlich eigenen Erfahrungen - das Ganze ausprobiert und in die richtige Reihenfolge gebracht. Selbstverständlich bedanke ich mich auch bei allen, die geholfen haben und die ich jetzt vergaß zu erwähnen!

    Hinweise zu Hintergrundinformationen finden sich am Ende der Beschreibung.

    Wer allerdings den Computer-Desktop auf den Fernsehr bringen will, wird vermutlich von dieser Beschriebung enttäuscht. Hier geht es - NUR - darum, HD-Fernsehen und HD-Aufnahmen zu ermöglichen. Der Rest soll am Computer bleiben.
    Viele Miniboards haben keinen Anschluss mehr für Floppy oder PATA-Laufwerke – da bietet sich ein USB-Stick als Installationsmedium geradezu an. Mit unetbootin (http://unetbootin.sourceforge.net) lässt sich ein bootbarer USB-Stick einrichten. Bei Debian stable gibt es unetbootin noch nicht als Paket, aber es lässt sich recht einfach bauen: http://sourceforge.net/apps/trac/unetbootin/wiki/compile
    Wer viel mit USB-Stick Installationen experimentiert, dem wird es sicher auch mal passieren, dass grub auf dem Stick anstatt auf der Festplatte installiert wird. Danach wird es unentspannt mit dem Stick zu booten – denn er wird vom BIOS bereits als Festplatte erkannt und eingebunden. Da hilft nur ein beherztes

    code:
    1:
    
    mkdosfs -I /dev/sdx
    (/dev/sdx gegen das Device des Sticks austauschen). Danach wird der Stick wieder als Bootmedium akzeptiert.

    Noch ein Hinweis zu den Skripten, die nebenbei erzeugt werden. Wenn in einem Skript Variablen verwendet werden (Text bei dem $ der erste Buchstabe ist), werden die gelöscht oder ersetzt, wenn per copy/paste in der Befehlszeile gearbeitet wird.

    Wird statt dessen der vi mit dem Dateinamen geöffnet und mit i der Eingabemodus aktiviert, kann das Skript per copy/paste per Umschalt+Einfügetaste übernommen werden.

Grundinstallation (für Produktiv-VDR und Entwicklungssystem gleichermaßen)
    Zum Zeitpunkt des Schreibens gab es keine Installationsmedien für Debian-Sid, weshalb die Installation mit Stable-Netinst erfolgt und später auf Sid gewechselt wird.
    Also mit Netinst booten und dem Installer folgen (Sprachauswahl, etc.). Als Benutzer wird ein persönlicher Benutzer verwendet, nicht vdr (der wird später angelegt!).
    Bei Softwareauswahl wird alles abgewählt (also Vorgabe von Desktop und Standard entfernen). Nach Abschluss der Installation grub installieren lassen und neu booten.

Rechner zugänglich machen
    Ich arbeite am liebsten an „meinem“ Desktop, d.h. als erstes sorgen wir dafür, dass der Rechner per Fernwartung bedient werden kann. Um halbwegs sicher zu sein, verwenden wir ssh.

    code:
    1:
    
    apt-get install openssh-server

    Wer Produktiv und Entwicklungssystem auf einem Rechner mit verschiedenen Partitionen betreibt, mag vielleicht mit statischen IP-Adressen arbeiten, wobei Produktiv- und Entwicklungssystem unterschiedliche Adressen bekommen. Danach kann die Konsole mit exit geschlossen werden. Den Rest erledigen wir aus der Ferne, von unserem Desktop aus.

Versionswechsel

    Per ssh verbinden wir uns jetzt mit dem Rechner. Wer mag, kann gleich die .bashrc an seine Vorlieben, bzw. seinen Geschmack anpassen. Bei mir gibt es folgende Einträge:
    Zuerst aktiviere ich die Farbausgabe für ls:

    code:
    1:
    2:
    3:
    
    export LS_OPTIONS='--color=auto'
    eval "`dircolors`"
    alias ls='ls $LS_OPTIONS'

    Dann gibt es ein paar Kürzel für nützliche ls-Varianten (ll – für die Langform, la für die Langform mit versteckten Dateien und ltr für die zeitlich sortierte Langform):

    code:
    1:
    2:
    3:
    
    alias ll='ls $LS_OPTIONS -l'
    alias la='ls $LS_OPTIONS -la'
    alias ltr='ls $LS_OPTIONS -ltr'
    Jetzt folgen ac für die Debian-Paketsuche, ai zum Installieren, ii für die Prüfung, ob ein Paket bereits installiert ist und pi für die Paketinfo.

    code:
    1:
    2:
    3:
    4:
    5:
    6:
    
    alias c='clear'
    alias ac='apt-cache -n search'
    alias ai='apt-get install'
    alias ii='dpkg -l | grep -i'
    alias pi='apt-cache show'
    alias dist-upgrade='apt-get update && apt-get dist-upgrade'
    Aktiviert werden die neuen Einstellungen über

    code:
    1:
    
      . ./.bashrc
    Danach widmen wir uns wieder der Grundinstallation:
    Dazu werden in der Datei /etc/apt/sources.list alle Vorkommnisse von lenny gegen sid ausgetauscht. Die Einträge von security.debian.org und [/font]volatile.debian.org[/font] werden auskommentiert, bzw. gelöscht, da die nur für stable existieren. Somit sieht die neue sources.list etwa so aus:

    code:
    1:
    2:
    
    deb http://ftp.de.debian.org/debian/ sid main non-free contrib
    deb-src http://ftp.de.debian.org/debian/ sid main non-free contrib
    Mit einem

    code:
    1:
    
    apt-get update && apt-get dist-upgrade
    starten wir den Versionswechsel. Wenn der durchgelaufen ist, kann mit

    code:
    1:
    
    upgrade-from-grub-legacy
    auf den neuen Bootmanager gewechselt werden. Wer mag, kann vorher noch booten, um zu sehen, ob's auch klappt.

Firmware für r8169
    Beim Versionswechsel kommt die Warnung, dass die Firmware für r1869 fehlen würde. Der Kernel wird gerade aufgeräumt, sodass einige Firmware nach non-free musste. Laut Aussage der Debian-ML funktioniert ein Treiber auch weiterhin, der bisher getan hat.
    Bei mir traf das zu – ich musste keine Firmware nachinstallieren.

Benutzer anlegen
    zuerst die Gruppe vdr anlegen:

    code:
    1:
    
    addgroup -system vdr

    Das -system bewirkt, dass die Gruppe die Nummer < 1000 erhält. Anschließend wird noch der Benutzer vdr angelegt:

    code:
    1:
    
    adduser -system -ingroup vdr vdr


Basispakete installieren
    Ich habe jetzt verschiedene Konstellationen durchgespielt und es sieht so aus, als wäre die Kombination aus nodm und fluxbox schlank und zuverlässig – deshalb für mich die erste Wahl. Vi ist meine Hausmarke, wer es nicht mag, kann ja seinen Lieblingseditor eintragen.

    code:
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    
    cat > basePkgs.list << EOF
    less
    alsa-utils
    bzip2
    xterm
    xorg
    nodm
    x11-xserver-utils
    ffmpeg
    fluxbox
    mc
    vim
    nfs-common
    nfs-kernel-server
    pciutils
    EOF
    
    apt-get install $( < basePkgs.list )


Ballast abwerfen
    Einige Pakete werden bei einem „normalen“ VDR nicht unbedingt benötigt. Manche Pakete werden auf dem Entwicklungssystem später wieder mit installiert, aber das ist ok so. Liste bitte überprüfen und nach eigenem Geschmack anpassen.

    code:
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    19:
    20:
    21:
    22:
    23:
    24:
    25:
    26:
    27:
    28:
    29:
    
    cat > pkgs.2remove << EOF
    aptitude
    dictionaries-common
    ding
    doc-linux-de
    ghostscript
    ghostscript-x
    gs-common
    gsfonts
    info
    ingerman
    ispell
    javascript-common
    man-db
    manpages
    manpages-de
    manpages-dev
    mime-support
    nano
    radeontool
    trans-de-en
    vim-tiny
    wngerman
    wwwconfig-common
    EOF
    
    apt-get purge $( < pkgs.2remove )
    
    apt-get autoremove


Paketrepository um e-tobi und multimedia erweitern
    Schlüssel für e-tobi holen und einbinden.

    code:
    1:
    2:
    
    wget --quiet http://e-tobi.net/vdr-experimental/pool-lenny/binary/base/e-tobi-keyring_2008.03.08_all.deb
    dpkg -i e-tobi-keyring_2008.03.08_all.deb
    Da wir selbst bauen, kommentieren wir die deb-Zeilen aus und verwenden nur die deb-src Zeilen:

    code:
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    
    cat > /etc/apt/sources.list.d/vdr.list << EOF
    # release = vdr-experimental | vdr-testing
    # dist    =  etch | lenny | sid
    # section = base | backports | addons | vdr-standard | vdr-extensions |vdr-multipatch
    # wir sind nur an Quältexten interessiert ...
    #deb http://e-tobi.net/vdpau-xine1.1-vdrdevel sid base vdr-multipatch
    #deb http://e-tobi.net/vdpau-xine1.1 sid base vdr-multipatch
    
    deb-src http://e-tobi.net/vdpau-xine1.1-vdrdevel sid base vdr-multipatch
    deb-src http://e-tobi.net/vdpau-xine1.1 sid base vdr-multipatch
    
    # keine amd64-Pakete
    #deb http://e-tobi.net/vdrdevel-experimental lenny base vdr-multipatch
    #deb http://e-tobi.net/vdr-experimental lenny addons
    
    deb-src http://e-tobi.net/vdrdevel-experimental lenny base vdr-multipatch
    deb-src http://e-tobi.net/vdr-experimental lenny base addons vdr-multipatch
    EOF
    e-tobis vdr Pakete haben Priorität vor Debian Paketen ...

    code:
    1:
    2:
    3:
    4:
    5:
    
    cat > /etc/apt/preferences.d/etobi.prefs << EOF
    Package: *
    Pin: release o=e-tobi.net
    Pin-Priority: 1001
    EOF
    Schlüssel für Debian-multimedia.org holen ...

    code:
    1:
    2:
    
    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
    Debian-multimedia.org einrichten

    code:
    1:
    2:
    3:
    4:
    
    cat > /etc/apt/sources.list.d/debian-multimedia.org.list << EOF
    deb http://www.debian-multimedia.org sid main
    deb-src http://www.debian-multimedia.org sid main
    EOF
    aufräumen ...

    code:
    1:
    2:
    
    rm *.deb
    apt-get update
    Ab hier trennen sich die Installationswege von Entwicklungssystem und Produktivsystem. Da unser Produktivsystem von den Ergebnissen unseres Entwicklungssystems abhängt, beschäftigen wir uns zuerst mit dem Entwicklungssystem und dem Bau der eigenen Pakete.

    Beim Produktivsystem wird noch ein weiteres Repository hinzugefügt, doch dazu später mehr.

Entwicklungssystem
    Ein HD-Vdr ist ein komplexes Client-Server Gebilde, bei dem quasi 2 VDR Instanzen vorkommen. Bei der Entwicklung trennen wir auch auf zwischen dem Backend, also der VDR-Instanz, die die DVB-Daten empfängt, oder Aufnahmen zum Abspielen aufbereitet und dem Frontend, welches Bild und Ton ausgibt und Tastatureingaben entgegen nimmt und an das VDR-Backend weiterleitet. Front- und Backend können auf einem Rechner oder auf verschiedenen Rechnern laufen. Wenn beide Teile auf dem gleichen Rechner laufen sollen, muss dies z.B. beim Kernelbau etc. berücksichtigt werden. Ansonsten kann man jede Schiene für sich bauen.

Basispakete für die Entwicklung
    code:
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    19:
    20:
    21:
    22:
    23:
    24:
    25:
    26:
    27:
    
    cat > devBase.list << EOF
    autoconf
    automake
    automake1.9
    build-essential
    ccache
    checkinstall
    cvs
    devscripts
    doxygen
    gettext
    git-core
    git-buildpackage
    kernel-package
    libopenjpeg-dev
    libtool
    libx11-dev
    libncurses-dev
    mercurial
    pkg-config
    pristine-tar
    subversion
    texi2html
    yasm
    EOF
    
    apt-get install $( < devBase.list )


Backend
    Das Backend braucht die DVB-S2-Treiber für den Empfang und somit einen selbstgebauten Kernel.

Kernelbau für Backend
    Wir verwenden jeweils den neuesten Kernel von www.kernel.org – im Augenblick ist 2.6.32.2 aktuell.

    code:
    1:
    2:
    3:
    4:
    
    cd /usr/src
    wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.2.tar.bz2
    tar -jxf linux-2.6.32.2.tar.bz2
    cd linux-2.6.32.2

    Wer neu ist im Kernelbau, fängt am Besten mit der Konfiguration des laufenden Systems an:

    code:
    1:
    2:
    
    cp /boot/config-2.6.32-trunk-amd64 .config
    make oldconfig
    Dabei alle Vorgaben, bei denen man es nicht besser weiß, einfach so akzeptieren, wie sie angeboten werden. Wer mag kann die entstandene .config sichern, sodass man für die spätere Entschlackung des Kernels eine funktionierende Ausgangsbasis hat. Bei einem make mrproper (make clean für den Kernel) wird die .config gelöscht.

    Jetzt wieder für alle – wir starten die Menüauswahl des Kernels und deaktivieren den kompletten Bereich „multimedia support“ unter „device drivers“.

    code:
    1:
    
    make menuconfig
    Denn der multimedia-Bereich wird später von dem DVB-S2-Treiber abgedeckt, den wir auch selbst bauen wollen. Wenn wir den Bereich im Kernel nicht deaktivieren, kommt es später zu Konflikten.
    Der Kernelbau ist eine sehr langwierige Geschichte – wer's also etwas flotter mag, kann make die Anzahl der CPUs mitteilen:

    code:
    1:
    
    export CONCURRENCY_LEVEL=4

    Wer vorhat regelmäßig den Kernel zu bauen, baut die Zeile am besten ins System ein:

    code:
    1:
    2:
    3:
    
    cat >> /etc/profile << EOF
    export CONCURRENCY_LEVEL=4
    EOF
    Den Kernelbau starten wir mit:

    code:
    1:
    
    make-kpkg --append-to-version -vdr --initrd kernel_image kernel_headers

    Danach installieren wir den neuen Kernel und das Headers-Paket auch gleich mit:

    code:
    1:
    2:
    3:
    
    cd /usr/src
    dpkg -i linux-image-2.6.32.2-vdr*.deb
    dpkg -i linux-headers-2.6.32.2-vdr*.deb
    Vor dem Booten kontrollieren wir, ob auch ein initrd.img-2.6.32.2-vdr angelegt wurde. An der Ecke scheint es gerade etwas zu klemmen, sodass evtl ein

    code:
    1:
    2:
    
    update-initramfs -ck 2.6.32.2-vdr
    update-grub
    nachgeschoben werden muss. Anschließend booten wir, um den Kernel zu aktivieren.

Eigenes Repository aufsetzen
    Die Pakete, die wir auf dem Entwicklungssystem bauen, sollen ja wie normale Debianpakete auf dem Produktivsystem installiert werden können. Dazu packen wir alle *.deb-Dateien in eine Verzeichnis-Struktur, die von apt-get akzeptiert wird.

    Ein Repository kann per ftp[1][2], http[3] oder per Dateiprotokoll veröffentlicht werden. Wenn man Entwicklungssystem und Produktivsystem auf einem Rechner (z.B. auf 2 verschiedenen Festplatten oder Partitionen) aufbaut, ist das Dateiprotokoll die einfachste Möglichkeit. Letzteres verwende ich.

    Bei Debian liegen Daten, die anderen Rechnern über Dienste zur Verfügung gestellt werden unter /srv – deshalb leben wir unsere Paketquelle auch dort an. Da die Anzahl unserer selbstgebauten Pakete überschaubar bleibt, legen wir nur ein gemeinsames Pool-Verzeichnis an:

    code:
    1:
    2:
    
    mkdir -p /srv/debian/dists/sid/main/binary-amd64
    mkdir -p /srv/debian/pool
    Fehlt noch eine Beschreibung für unsere Paketquelle:

    code:
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    
    cat > /srv/debian/dists/sid/Release << EOF
    Origin: myself
    Label: the freshest sauces around
    Suite: unstable
    Codename: sid
    Date: Fri, 19 Dec 2009 06:00:00 UTC
    Archtectures: amd64
    Components: main
    Description: my own vdr packages – not released
    EOF
    Anschließend veröffentlichen wir den Pfad unserer Paketquelle für div. Tools:

    code:
    1:
    2:
    3:
    
    cat >> /etc/profile << EOF
    export APT_REPOSITORY='/srv/debian'
    EOF
    Jetzt legen wir uns noch ein script an, mit dem wir unsere Paketquelle aktualisieren können:

    code:
    1:
    2:
    
    vi /usr/local/bin/update-repository
    i

    Den folgenden Skript-Inhalt in den Editor einfügen und mit :wq speichern.

    code:
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    
    #!/bin/sh
    arch=amd64
    release=sid
    if [ „x$APT_REPOSITORY“ == „x“ ]; then
       echo „no repository root defined! Please set APT_REPOSITORY“
       exit -1
    fi
    echo „gonna refresh apt-repository: $APT_REPOSITORY“
    cd $APT_REPOSITORY
    dpkg-scanpackages pool /dev/null | gzip -9c > dists/$release/main/binary-$arch/Packages.gz
    dpkg-scanpackages pool /dev/null | bzip2 > dists/$release/main/binary-$arch/Packages.bz2

    Anschließend das Skript noch ausführbar machen

    code:
    1:
    
    chmod +x /usr/local/bin/update-repository
    Jetzt können wir es gleich ausprobieren:

    code:
    1:
    2:
    3:
    4:
    
    export APT_REPOSITORY='/srv/debian'
    cd /usr/src
    mv linux-*.deb $APT_REPOSITORY/pool
    update-repository
    Dabei sollte der Hinweis kommen, dass 2 Pakete in Ausgabedatei geschrieben wurden.

DVB-S2-Treiber
    Hier müssen wir zuerst die „alte“ Firmware rausschmeißen, sonst bricht nachher die Installation mit einem Fehler ab:

    code:
    1:
    
    apt-get purge firmware-linux-free
    Dann bauen wir die neuen Treiber mit:

    code:
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    
    cd /usr/local/src
    hg clone http://mercurial.intuxication.org/hg/s2-liplianin/
    cd s2-liplianin
    cd linux/include/linux
    ln -s /usr/src/linux-headers-`uname -r`/include/linux/compiler.h .
    cd ../../..
    make -j 4
    Wer eine abweichende Anzahl von CPUs hat, sollte die Ziffer nach -j daran anpassen.

    Jetzt kommt die erste Änderung, die unsere eigene Paketquelle betrifft. Anstatt make install auszuführen, fangen wir alle Ausgaben ab und bauen davon ein Debianpaket. Glücklicherweise gibt es bei Debian das Hilfsmittel dazu bereits frei Haus:

    code:
    1:
    
    checkinstall make install
    checkinstall bietet die Möglichkeit, mittels --review-control sich die erzeugte control-Datei anzuschauen, da aber die Paketerstellung scheitert, wenn man die control-Datei zu diesem Zeitpunkt noch ändert, lasse ich den Parameter lieber weg. Sämtliche Einträge lassen sich über das Menü von checkinstall bearbeiten ...

    Zuerst gibt es den Hinweis, dass es bei dem Paket noch keine Dokumentation gibt, verbunden mit der Frage, ob die Vorgabedoku erstellt werden soll. Hier ist y eine gute Antwort. Anschließend kann man eine Beschreibung für das zu erstellende Paket eingeben.
    Wir geben hier DVB S2-Treiber vom <Datum der Erstellung> ein. Eine leere Zeile beendet die Beschreibung. Auch dieses Paket kommt in unsere Paketquelle:

    code:
    1:
    2:
    3:
    
    cp *.deb $APT_REPOSITORY/pool
    update-repository
    dpkg -i dvb-s2-liplianin*.deb


Aufräumen vor dem Neubau aller Pakete
    Wenn die Pakete neu gebaut werden sollen (weil sich was geändert hat oder ein Fehler auftrat), muss vorher etwas aufgeräumt werden. Bei debian-spezifischen Bau der Pakete werden Änderungen protokolliert und es werden noch weitere Dateien unter /usr/local/src erstellt. Falls ein Fehler die Ursache für den Neubau ist, könnten diese Zwischendateien für Probleme sorgen.

    Deshalb setzen wir vor dem (Neu-)bau der Pakete folgenden Befehl ab:

    code:
    1:
    2:
    
    cd /usr/local/src
    rm *
    Wichtig dabei, dass rm keinerlei Optionen erhält, insbesondere kein -r denn wir wollen ja die Verzeichnisse unterhalb von /usr/local/src behalten.

VDR für Backend bauen
    Wer beim Frontend libxine-1.2 einsetzen will, sollte den Bau von xine vorziehen, denn das Plugin xineliboutput hat eine Abhängkeit auf libxine-dev. Wenn wir jetzt eine libxine-dev installieren und später beim Frontend die libxine selbst bauen – gibt es Probleme.
    Da bei Quelltext-Paketen nicht zwischen den Versionen 1.6x und 1.7x unterschieden wird, schreiben wir die Pakete als vdr-Pakete und nicht als vdrdevel-Pakete – auch wenn wir letzteres wollen. Liste der Plugins bitte an eigenen Geschmack anpassen.

    code:
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    
    cat > backendPlugins.list << EOF
    vdr-plugin-dvd
    vdr-plugin-dvdselect
    vdr-plugin-epgsearch
    vdr-plugin-markad
    vdr-plugin-skinelchi
    vdr-plugin-xineliboutput
    EOF
    Damit können wir die Quelltexte ausfassen:

    code:
    1:
    2:
    
    cd /usr/local/src
    apt-get source vdr $( < ~/backendPlugins.list )
    Gleich noch die Abhängigkeiten für den Bau der Pakete auflösen.

    code:
    1:
    
    apt-get build-dep vdr $( < ~/backendPlugins.list )
    Beim Bau der aktuellen VDR-Pakete werden die Quältexte beim Bau verändert. Dafür benötigen wir das Skript make-special-vdr:

    code:
    1:
    2:
    3:
    
    apt-get source make-special-vdr
    cp make-special-vdr-1.4/make-special-vdr /usr/local/bin
    chmod +x /usr/local/bin/make-special-vdr
    Der Bau von vdr und Plugins ist ne Menge Tipparbeit – zumindest die Debian-Variante. Um Tippfehler o.ä. zu vermeiden und auch hier wiederholbare Ergebnisse zu bekommen, legen wir uns wieder ein Skript an:

    code:
    1:
    2:
    
    vi /usr/local/bin/buildVDR
     i
    Danach wieder den Skript-Inhalt in den Editor einfügen und mit :wq beenden.

    code:
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    19:
    20:
    21:
    22:
    23:
    24:
    25:
    26:
    27:
    28:
    29:
    30:
    31:
    32:
    33:
    34:
    35:
    36:
    37:
    38:
    39:
    40:
    41:
    42:
    43:
    44:
    
    #!/bin/bash
    # set -x
    vdr_package=`ls -l | grep ^d | awk '{ print $9; }' | grep "^vdr-1"`
    vdr_plugins=`ls -l | grep ^d | awk '{ print $9; }' | grep "^vdr-plugin"`
    vdr_src_dir='/usr/local/src'
    debug=1
    
    if [ "x$1" != "x" ]; then
       debug=0
    fi
    
    if [ "x$APT_REPOSITORY" == "x" ]; then
       echo "no repository root defined! Please set APT_REPOSITORY"
       exit -1
    fi
    
    echo "gonna build $vdr_package"
    if [ "x$debug" != "x1" ]; then
       pkgdir="$vdr_src_dir/$vdr_package"
       cd $pkgdir
       PATCHVARIANT=multipatch SPECIAL_VDR_SUFFIX=devel fakeroot dpkg-buildpackage -b -uc -tc -Rmake-special-vdr
       # need to install vdr immediatelly, as all plugins rely on it
       cd ..
       dpkg -i vdrdevel_1.7.*.deb
       dpkg -i vdrdevel-dev_1.7.*.deb
    fi
    
    echo "build plugins for: $vdr_package"
    for vdrpkg in ${vdr_plugins}; do
       echo "gonna build $vdrpkg"
       if [ "x$debug" != "x1" ]; then
          pkgdir="$vdr_src_dir/$vdrpkg"
          cd $pkgdir
          PATCHVARIANT=multipatch SPECIAL_VDR_SUFFIX=devel fakeroot dpkg-buildpackage -b -uc -tc -Rmake-special-vdr
       fi
    done
    
    if [ "x$debug" != "x1" ]; then
       echo "buid done - gonna update repository ..."
       cd /usr/local/src
       cp *.deb $APT_REPOSITORY/pool
       update-repository
    fi
    echo "done." 
    Fehlt noch das Skript ausführbar zu machen:

    code:
    1:
    
    chmod +x /usr/local/bin/buildVDR
    Wenn das Script kontrolliert und ausführbar gemacht wurde, können wir es erst testen und dann den Bau starten:

    code:
    1:
    2:
    
    buildVDR
    buildVDR really
    Das Skript baut alle Pakete, kopiert sie in unsere Paketquelle und aktualisiert diese. Bei mir kommt die Meldung, dass 15 Pakete in die Ausgabedatei geschrieben wurden. Bei abweichenden Plugins ist die Zahl natürlich eine andere.

Hilfsmittel für die Kanalsuche bauen
    Die Kanallisten kann man sich von irgendjemand aus dem Netz besorgen, oder man lässt den Rechner selbst rausfinden, welche Kanäle verfügbar sind. Dazu brauchen wir das Hilfsmittel von Wirbel:

    code:
    1:
    2:
    3:
    4:
    5:
    6:
    
    cd /usr/local/src
    wget http://wirbel.htpc-forum.de/w_scan/w_scan-20091118.tar.bz2
    tar -jxf w_scan-20091118.tar.bz2
    cd w_scan-20091118
    ./configure
    make
    Danach bauen wir uns wieder ein Päckchen:

    code:
    1:
    2:
    3:
    
    checkinstall make install
    cp *.deb $APT_REPOSITORY/pool
    update-repository


Frontend
    Das Frontend braucht z.B. die VDPAU-Treiber und ein xine-System, welches diese Treiber verwendet.

Hilfsmittel für die Kanalsuche bauen
    Der Nvidia-Treiber benötigt „nur“ die Kerneldeklarationen, d.h. falls das Frontend auf einem separaten Rechner laufen soll, ist kein Kernelbau notwendig. Es genügt ein

    code:
    1:
    
    apt-get install linux-headers-2.6.32.2-trunk-amd64
    Kernelversion ggf. an den verwendeten Kernel anpassen.

NVIDIA-Treiber installieren
    Wer den Treiber nicht selbst übersetzen (lassen) will, kann den von e-tobi nehmen:

    code:
    1:
    
    apt-get install nvidia-glx-dev

    Bei wem das nicht funktioniert (Abhängkeitsproblem), oder wer den neuesten Treiber von NVidia nehmen möchte (auf Datum achten, da Nummerierung zwischen stable und unstable verschieden ist) installiert wie folgt (z.Z. ist 190.53 der aktuellste Treiber):

    code:
    1:
    2:
    3:
    4:
    5:
    
    cd /usr/local/src
    mkdir nvidia
    cd nvidia
    wget ftp://download.nvidia.com/XFree86/Linux-x86_64/190.53/NVIDIA-Linux-x86_64-190.53-pkg2.run
    sh NVIDIA-Linux-x86_64-190.53-pkg2.run
    Nach der Installation kann man über man nvidia-xconfig Informationen über die Konfigurationsmöglichkeiten des XServers erhalten. Ob der Treiber geladen und aktiv ist, kann man so rausfinden:

    code:
    1:
    2:
    3:
    
    grep NVIDIA /var/log/syslog
    
       ... NVRM: loading NVIDIA UNIX x86_64 Kernel Module  190.53  Wed Dec  9 15:29:46 PST 2009


XServer aktivieren
    Um nodm zu aktivieren, muss die Datei /etc/default/nodm angepasst werden:

    code:
    1:
    2:
    
    NODM_ENABLED=true
    NODM_USER=vdr
    Bevor wir den Xserver starten kontrollieren wir noch die /etc/X11/xorg.conf – im Abschnitt „Device“ sollte nvidia als Driver eingetragen sein. Im Abschnitt Monitor sollten die Werte von HorizSync und VertRefresh den Werten des angeschlossenen Monitors (siehe Handbuch des Monitors) entsprechen! Dann sollte noch das Composite abgeschaltet werden:

    code:
    1:
    2:
    3:
    4:
    5:
    6:
    
    cat >> /etc/X11/xorg.conf << EOF
    
    Section "Extensions"
        Option         "Composite" "Disable"
    EndSection
    EOF

    code:
    1:
    2:
    3:
    
    cat >> /etc/profile << EOF
    export DISPLAY=':0.0'
    EOF

    code:
    1:
    2:
    3:
    
    cat >> /home/vdr/.xhosts << EOF
    127.0.0.1
    EOF
    Anschließend ein /etc/init.d/nodm start oder rebooten, je nach Gusto.

vdpinfo bauen
    Wir wollen ja nicht nur Pakete übersetzen, sondern auch prüfen, ob der Bau einen Wert hatte ...
    vdpinfo ist dafür da, die Installation des Nvidia-Treibers zu überprüfen.

    code:
    1:
    2:
    3:
    4:
    5:
    6:
    
    cd /usr/local/src
    wget http://www.cs.rug.nl/~wladimir/vdpinfo/vdpinfo-0.0.5.tar.gz
    tar -zxf vdpinfo-0.0.5.tar.gz
    cd vdpinfo
    make
    cp vdpinfo /usr/local/bin
    Vor dem Test müssen wir noch den Xserver bekannt machen

    code:
    1:
    
    export DISPLAY=':0.0'
    Danach können wir den Test starten mit vdpinfo
    Wenn die Fähigkeiten der Grafikkarte angezeigt werden, sollte der Nvidia-Treiber funktionieren.

VDR für Frontend bauen
    Wer xine von Debian nehmen kann und mag, braucht nicht viel zu bauen.
    Für das Frontend scheint es keine Unterschiede zwischen 1.6x und 1.7x zu geben. Demzufolge bauen wir ein Frontend für 1.6:

    code:
    1:
    2:
    3:
    4:
    
    cd /usr/local/src/vdr-plugin-xineliboutput-1.0.4+cvs20091215.2049
    PATCHVARIANT=multipatch fakeroot dpkg-buildpackage -b -uc -tc
    cp xine*.deb $APT_REPOSITORY/pool
    update-repository
    Da die Ergebnisse nicht gerade berauschend waren, entschloss ich mich die xinelib1.2 auch selbst zu bauen. Dafür gibt es aber noch keine VDR-Anpassung für Debian, sodass etwas Handarbeit notwendig ist.

Bau von ffmpeg
    Das Herz der meisten Videoanwendungen heißt ffmpeg und dessen Entwicklung schreitet viel schneller voran, als die ganzer Betriebssysteme. Deshalb macht es Sinn, diese Entwickelung aufzugreifen und zu integrieren. Seit ich ffmpeg selbst gebaut habe, laufen zumindest die „normalen“ Sender zufriendenstellend. Wir holen die Quellen mit

    code:
    1:
    2:
    
    cd /usr/local/src
    apt-get source ffmpeg
    X264 ist der wichtigste Codec für HD-Video und der wird von ffmpeg verwendet. Also müssen wir den zuerst bauen. Dazu klauen wir uns die Bauanleitung vom offiziellen Debian-Paket:

    code:
    1:
    2:
    3:
    4:
    5:
    6:
    
    apt-get source libx264
    rm x264*
    git clone git://git.videolan.org/x264.git
    cp -a x264-0.svn20091125/debian x264/debian
    rm -rf x264-0.svn*
    cd x264 
    Anschließend laden wir die Datei debian/rules in den Editor und erweitern confflags (Zeile 30) um:

    code:
    1:
    
    --enable-asm und --enable-pic
    Die extra-cflags exportieren wir ins Environment und bauen das Paket:

    code:
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    
    export CFLAGS=“-mtune=native -march=native -mfpmath=sse -O4 -pipe"
    fakeroot dpkg-buildpackage -uc -tc
    cd ..
    dpkg -i libx264-dev_0.svn20091125-0.1_amd64.deb
    dpkg -i libx264-79_0.svn20091125-0.1_amd64.deb
    dpkg -i x264_0.svn20091125-0.1_amd64.deb
    mv {lib,}x264*.deb $APT_REPOSITORY/pool
    update-repository
    Genauso verfahren wir mit dem ffmpeg-Paket. Wir nehmen die Quellen von svn und klauen uns die Bauanleitung vom offiziellen Paket:

    code:
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    
    cd /usr/local/src
    svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg.svn
    cp -a ffmpeg-dmo*/debian ffmpeg.svn/debian
    rm ffmpeg*
    rm -rf ffmpeg-dmo*
    
    cd ffmpeg.svn
    export CFLAGS="-mtune=native -march=native -mfpmath=sse -O4 -pipe"
    fakeroot dpkg-buildpackage -uc -tc
    cd ..
    
    cp *.deb $APT_REPOSITORY
    update-repository
    ls -tr *.deb > ~/ffmpeg.pkg.list
    ls -ltr
    Wir laden die so erzeugte Liste in den Editor und entfernen alles, was nicht beim Bau von ffmpeg entstand:

    code:
    1:
    
    vi ~/ffmpeg.pkg.list

    Anschließend installieren wir alle erzeugten Pakete:

    code:
    1:
    
    for i in $( < ~/ffmpeg.pkg.list ); do dpkg -i $i; done


Bau der xinelib-1.2
    Der Autor der xinelib-1.2 hat ganze Arbeit geleistet und seiner Lib bereits ein debian-Verzeichnis spendiert. Trotzdem ist das Bauen der Xine-Pakete recht komplex insbesondere im VDR-Kontext. xinelib1.2 ist noch nicht offiziell in Debian integriert, deshalb ist etwas Handarbeit notwendig.
    Das Ausfassen und Patchen der Quellen ist nur das erste Mal notwendig.

    code:
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    
    cd /usr/local/src/
    hg clone http://hg.debian.org/hg/xine-lib/xine-lib-1.2 xine-lib-1.2
    wget http://www.jusst.de/vdpau/files/xine-lib-1.2/xine-lib-1.2-vdpau-r286.diff.bz2
    bzip2 -d xine-lib-1.2-vdpau-r286.diff.bz2
    wget http://durchflieger.dachsweb.de/vdpau-extensions/v11/xine-lib-1.2-vdpau-r286-extensions-v11.diff.gz
    gunzip xine-lib-1.2-vdpau-r286-extensions-v11.diff.gz
    cd xine-lib-1.2
    patch -p1 < ../xine-lib-1.2-vdpau-r286.diff
    patch -p1 < ../xine-lib-1.2-vdpau-r286-extensions-v11.diff
    Vor dem Bau müssen noch die abhängigen Pakete für den Bau installiert werden. Mit

    code:
    1:
    
    dpkg-checkbuilddeps
    erhält man eine Liste der abhängigen Pakete. Die Ausgabe in eine Paketliste für apt-get umzuwandeln ist etwas lästig, deshalb habe ich die Liste hier aufgeführt:

    code:
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    19:
    20:
    21:
    22:
    23:
    24:
    25:
    26:
    27:
    28:
    29:
    30:
    31:
    32:
    33:
    34:
    35:
    36:
    37:
    38:
    39:
    40:
    41:
    42:
    43:
    44:
    45:
    46:
    
    cat > ~/xine.depends << EOF
    libxcb-xv0-dev
    libxcb-shm0-dev
    libxcb-shape0-dev
    libxinerama-dev
    libxv-dev
    libxvmc-dev
    libxt-dev
    libasound2-dev
    libaa1-dev
    libcaca-dev
    libmodplug-dev
    libjack-dev
    libpulse-dev
    libartsc0-dev
    libmagick9-dev
    libpng12-dev
    libfreetype6-dev
    libogg-dev
    libvorbis-dev
    libtheora-dev
    libesd0-dev
    libgnomevfs2-dev
    liblircclient-dev
    libdirectfb-dev
    libgtk2.0-dev
    libflac-dev
    libsdl1.2-dev
    libwavpack-dev
    libsmbclient-dev
    libspeex-dev
    libmng-dev
    libmad0-dev
    libmpcdec-dev
    libcdio-dev
    libvcdinfo-dev
    zlib1g-dev
    w3m
    xmlto
    librsvg2-bin
    EOF
    
    
    apt-get install $( < ~/xine.depends )
    
    dpkg-checkbuilddeps 
    sollte keine Pakete mehr aufführen. Damit VDPAU auch wirklich verwendet wird, ändern wir die Datei debian/rules – dort gibt es einen Bereich CONFIGURE_FLAGS := \ bei den darauf folgenden Zeilen fügen wir eine noch hinzu (aufpassen, dass kein Leerzeichen nach dem \ am Zeilenende kommt):

    code:
    1:
    
    --with-vdpau \
    Danach können wir endlich den Bau starten mit

    code:
    1:
    
    fakeroot dpkg-buildpackage -uc -tc
    Anschließend installieren wir die erstellten Pakete gleich und kopieren sie in unseren Paketpool:

    code:
    1:
    2:
    3:
    4:
    
    cd /usr/local/src
    for i in libxine*.deb; do dpkg -i $i; done
    mv libxine*.deb $APT_REPOSITORY/pool
    update-repository


VDR-Frontend für xinelib-1.2
    Ein Blick in die control-Datei der neu gebauten xinelib-1.2 verrät uns, dass die lib als libxine2 firmiert. Also müssen wir unser Plugin daran anpassen. Für das Backend haben wir das xineliboutput-Plugin bereits übersetzt. Es hängt nur von libxine-dev ab, deshalb brauchen wir es jetzt nicht nochmal bauen.
    Für den Bau des Frontends müssen wir allerdings die Steuerungsdatei patchen. Die Datei debian/rules laden wir in den Editor, suchen „xinegroßes Grinsen epends“ und ersetzen libxine1 mit libxine2. Ferner ändern wir auch bei XINEPLUGINDIR das libxine1 gegen libxine2.
    Die Frontends werden nur gebaut, wenn wir das Paket für vdr-1.6 bauen. Dann stimmt aber die Abhängigkeit der lib nicht, deshalb müssen wir selbst patchen. Wir sichern (nur beim ersten Mal!) die Steuerungsdatei doppelt:

    code:
    1:
    2:
    3:
    
    cd /usr/local/src/vdr-plugin-xineliboutput-1.0.4+cvs20091215.2049
    cp debian/control ~/control.xlop.backend
    cp debian/control ~/control.xlop.frontend
    Erste Sicherung ist dafür, falls wir das Backend nochmal bauen wollen/müssen. Die zweite laden wir jetzt in einen Editor und ändern bei der Beschreibung von libxineliboutput-sxfe in der Depends-Zeile vdr-plugin-xineliboutput (= ${binary:Version}) gegen vdrdevel-plugin-xineliboutput (>= ${binary:Version}) – gleiches machen wir für libxineliboutput-fbfe.
    Anschließend ändern wir alle Vorkommnisse von xine1 in xine2:

    code:
    1:
    2:
    
    :1,$s/xine1/xine2/g
    :wq
    Jetzt müssen noch die Installationsanweisungen angepasst werden:

    code:
    1:
    
    cp debian/libxine1-xvdr.install debian/libxine2-xvdr.install
    Danach aktivieren wir unsere Änderungen mit:

    code:
    1:
    
    cp ~/control.xlop.frontend debian/control
    Fehlt noch der Bau der Pakete:

    code:
    1:
    
    PATCHVARIANT=multipatch fakeroot dpkg-buildpackage -uc -tc
    und auch diese Pakete installieren wir umgehend

    code:
    1:
    2:
    3:
    4:
    
    cd ..
    dpkg -i libxine2-xvdr*.deb
    dpkg -i libxineliboutput-sxfe*.deb
    dpkg -i xineliboutput-sxfe*.deb
    Zur Kontrolle schauen wir uns an, was alles von Xine installiert ist:

    code:
    1:
    
    dpkg -l | grep xine
    Es darf kein libxine1 in der Liste auftauchen! Sonst ist beim Bau was schief geganen. Die Ausgabe sollte eher so aussehen:

    code:
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    
    ii  libxine-dev                             1.2.0~hg-0
    ii  libxine2                                1.2.0~hg-0
    ii  libxine2-dbg                            1.2.0~hg-0
    ii  libxine2-doc                            1.2.0~hg-0
    ii  libxine2-xvdr                           1.0.4+cvs20091215.2049-2
    ii  libxineliboutput-sxfe                   1.0.4+cvs20091215.2049-2
    ii  libxinerama-dev                         2:1.0.3-2
    ii  libxinerama1                            2:1.0.3-2
    ii  vdrdevel-plugin-xineliboutput           1.0.4+cvs20091215.2049-2
    ii  x11proto-xinerama-dev                   1.1.2-5
    ii  xineliboutput-sxfe                      1.0.4+cvs20091215.2049-2
    Falls doch ein libxine1 auftraucht, für jedes Paket, welches mit libxine1 anfängt ein apt-get purge absetzen und nochmal ab dem Bau der xinelib1.2 anfangen. Wer das Plugin erneut übersetzen muss/will, sollte vorher alle Dateien aus /usr/local/src die mit vdr-plugin-xine anfangen löschen.

Die eigenen Pakete testen
    Bevor wir uns daran machen, das Produktivsystem hoch zu ziehen, können wir bereits am Entwicklungssystem ausprobieren, ob die gebauten Pakete funktionieren. Dafür sollte eine Budgetkarte im Entwicklungssystem vorhanden sein.
    Wenn alle Pakete das erste Mal erstellt wurden, ist es nicht verkehrt, vor dem Test einmal kräftig durch zu booten smile
    Dann prüfen wir, ob auch alle Pakete korrekt gebaut wurde und ihre Abhängigkeiten aufgelöst wurden:

    code:
    1:
    2:
    3:
    4:
    
    cd
    ls $APT_REPOSITORY/pool | grep -v linux | grep -v vdr-plugin > mystuff.list
    cd $APT_REPOSITORY/pool
    for i in $( < ~/mystuff.list ); do dpkg -i $i; done
    Dabei sollte es keine Fehler über nicht aufgelöste Abhängigkeiten geben. Ein anschließendes

    code:
    1:
    
    apt-get install 
    schafft Klarheit. Wenn jetzt irgendwelche Pakete installiert oder entfernt werden sollen, dann passen die Pakete noch nicht.

    Gehen wir davon aus, dass alle Pakete passen ...

    Dann schauen wir, ob die Budgetkarte erkannt wurde.

    code:
    1:
    
    ls -l /dev/dvb/adapter0
    Die Ausgabe sollte ungefär so aussehen:

    code:
    1:
    2:
    3:
    4:
    5:
    
    crw-rw----+ 1 root video 212, 4 22. Dez 06:00 ca0
    crw-rw----+ 1 root video 212, 0 22. Dez 06:00 demux0
    crw-rw----+ 1 root video 212, 1 22. Dez 06:00 dvr0
    crw-rw----+ 1 root video 212, 3 22. Dez 06:00 frontend0
    crw-rw----+ 1 root video 212, 2 22. Dez 06:00 net0
    Daraus folgt, dass der Benutzer vdr auf jeden Fall der Gruppe video zugeordnet werden muss. Wir nehmen audio und cdrom gleich mit dazu:

    code:
    1:
    
    usermod -G video,audio,cdrom vdr
    Falls der vdr bereits angestartet wurde (überprüfen mit ps -ef | grep vdr), beenden wir ihn (sonst wird die DVB-Karte blockiert und die Kanalsuche scheitert):

    code:
    1:
    
    /etc/init.d/vdrdevel stop
    Anschließend lassen wir uns eine Kanalliste[6] erzeugen. Vorher stellen wir sicher, dass wir uns in unserem Home-Verzeichnis befinden:

    code:
    1:
    2:
    
    cd
    w_scan -fs -s S19E2 -o 7 > channels.raw
    oder z.B. für Kabel Deutschland:

    code:
    1:
    
    w_scan -fc -c DE > channels.raw
    Da kommen schnell ein paar Hundert Kanäle zusammen. Um auch hier den Überblick zu behalten, gibt es wieder ein kleines Skript, das Ordnung schafft (sortChannels.pl). Schließlich hat jeder einen anderen Geschmack, so auch bei der Reihenfolge der Sender. Dafür kann dem Skript eine Vorgabeliste mitgegeben werden – bitte nach eigenem Geschmack anpassen.

    code:
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    19:
    20:
    21:
    22:
    
    cat > channels.preset << EOF
    Das Erste
    ZDF
    SWR Fernsehen BW
    ZDFtheaterkanal
    SAT 1
    RTL Television
    ProSieben
    kabel eins
    3sat
    arte
    ...
    BAYERN 4 KLASSIK
    hr2
    WDR 2 Klassik
    SWR 3
    DELUXE LOUNGE
    DELUXE RADIO
    FREQUENCE JAZZ
    Swiss Jazz
    sunshine live
    EOF
    Bei der Sortierung wird jedem Sender aus der Vorgabeliste die Zeilennummer als Wunschkanal zugeordnet. Ansonsten sortiert das Skript nach folgender Reihenfolge:
    HD =>> TV =>> Radio =>> TV verschlüsselt =>> Radio verschlüsselt
    Die Sender aus der Vorgabeliste bleiben in ihrer Kategorie, werden dort aber entsprechend bevorzugt eingeordnet.

    code:
    1:
    2:
    
    vi /usr/local/bin/sortChannels.pl
    i
    Jetzt wieder den Inhalt in den Editor übernehmen und mit :wq speichern.

    code:
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    19:
    20:
    21:
    22:
    23:
    24:
    25:
    26:
    27:
    28:
    29:
    30:
    31:
    32:
    33:
    34:
    35:
    36:
    37:
    38:
    39:
    40:
    41:
    42:
    43:
    44:
    45:
    46:
    47:
    48:
    49:
    50:
    51:
    52:
    53:
    54:
    55:
    56:
    57:
    58:
    59:
    60:
    61:
    62:
    63:
    64:
    65:
    66:
    67:
    68:
    69:
    70:
    71:
    72:
    73:
    74:
    75:
    76:
    77:
    78:
    79:
    80:
    81:
    82:
    83:
    84:
    85:
    86:
    87:
    88:
    89:
    90:
    91:
    92:
    93:
    94:
    95:
    96:
    97:
    98:
    99:
    100:
    101:
    102:
    
    #!/usr/bin/perl
    # This script takes a channels.conf generated from w_scan and sorts 
    # the channels. A preset file with channel names may be specified to
    # override sort order.
    # Sections: HD -> TV -> Radio -> TV crypted -> Radio crypted
    # Channels of each section will be sorted by name. Entries from preset
    # will be sorted respecting above sections, but overriding the sort order
    # by name.
    #
    use strict;
    use IO::File;
    
    my $debug = 0;
    my $presetFN = '/etc/vdr/channels.preset';
    my (%preset, @sorted, @channels);
    
    
    sub loadPreset {
       my $psfn = shift;
       my $fh = new IO::File;
       my $line;
       my $i=1;
    
       if ($fh->open("< $psfn")) {
          while ($line = <$fh>) {
             chomp $line;
             print('gonna process >'.$line."<\n") if $debug;
             
             $preset{$line} = $i++;
          }
          $fh->close();
       }
    }
    
    
    sub fetchChannels {
       my $cfn = shift;
       my $fh = new IO::File;
       my $i=0;
       
       if ($fh->open("< $cfn")) {
          while (my $line = <$fh>) {
             chomp $line;
             my @parts = split(/:/, $line);
             my ($name, $bouquet) = split(/;/, $parts[0], 2);
             my $crypted = 'Y';
             my $radio = 'N';
             my $hd = 'N';
             my $level = 999;
    
             $crypted = 'N' if $parts[8] == 0;
             $radio = 'Y' if $parts[5] == 0;
             $hd = 'Y' if $name =~ /HD/;
             $level = $preset{$name} if defined($preset{$name});
             $level = 0 if $name =~ /HD/;
             my $entry = { 'name'    => $name,
                           'bouquet' => $bouquet,
                           'hd'      => $hd,
                           'crypted' => $crypted,
                           'level'   => $level,
                           'radio'   => $radio,
                           'line'    => $line };
             push(@channels, $entry);
          }
          $fh->close();
       }
    }
    
    sub tellChannels {
       my $i=0;
    
       for my $cEntry (@sorted) {
          if ($debug) {
             print('chn ('.$i++.') - name: '.$cEntry->{'name'}
                   .', bouquet: '.$cEntry->{'bouquet'}
                   .', crypted: '.$cEntry->{'crypted'}
                   .', hd: '.$cEntry->{'hd'}
                   .', radio: '.$cEntry->{'radio'}
                   ."\n");
          } else {
             print($cEntry->{'line'}."\n");
          }
       }
    }
    
    sub byKeys {
       $a->{'crypted'} cmp $b->{'crypted'} ||
       $a->{'radio'} cmp $b->{'radio'} ||
       $b->{'hd'} cmp $a->{'hd'} ||
       $a->{'level'} <=> $b->{'level'} ||
       uc($a->{'name'}) cmp uc($b->{'name'});
    }
    
    my $channelFile = shift;
    die 'please give me a channels.conf file to sort!'."\n" if $channelFile =~ /^\s*$/;
    print('have to sort '.$channelFile."\n") if $debug;
    my $tmp = shift || $presetFN;
    print('load preset from '.$tmp."\n") if $debug;
    loadPreset($tmp);
    fetchChannels($channelFile);
    @sorted = sort byKeys @channels;
    tellChannels();
    Auch dieses Script wird ausführbar gemacht mit

    code:
    1:
    
    chmod +x /usr/local/bin/sortChannels.pl
    Wer die Sortier-Reihenfolge ändern will, sollte sich die Funktion byKeys anschauen (Zeile 85ff) – schon allein durch Vertauschen der Zeilen kann die Sortierung verändert werden.
    Wer mag, kann die preset-Datei in /etc/vdr speichern. Dann wird sie automatisch verwendet. Ansonsten kann die preset-Datei auch als Parameter angegeben werden:

    code:
    1:
    2:
    
    sortChannels.pl channels.raw channels.preset > channels.conf
    less channels.conf
    Wenn wir mit der Sichtprüfung einverstanden sind, kann die Datei dem VDR übergeben werden. Dazu prüfen wir zuerst, welche Datei vom VDR verwendet wird:

    code:
    1:
    
    ls -l /etc/vdrdevel/channels.conf
    liefert bei mir: /etc/vdrdevel/channels.conf -> /var/lib/vdrdevel/channels.conf

    code:
    1:
    
    cp channels.conf /var/lib/vdrdevel
    Jetzt öffnen wir eine zweite Befehlszeile zum Entwicklungssystem und starten dort

    code:
    1:
    
    tail -f /var/log/syslog
    denn der VDR, wie auch das xinelibout-Frontend schreiben ihre Meldungen in den syslog. So gewapnet starten wir den vdr mit:

    code:
    1:
    
    /etc/init.d/vdrdevel start
    Im syslog sollten wir jetzt sehen, dass alle Plugins geladen werden. Dort erfahren wir auch, dass das xineliboutput-Plugin 127.0.0.1 als Adresse verwendet und über den Port 37890 erreichbar ist.
    Dann kommt ein Fehler, dass /dev/lircd nicht existiert – Kunststück, wo wir das noch garnicht installiert haben. Ansonsten sehen die Ausgaben nicht schlecht aus, sodass wir uns dem Frontend widmen können.
    Wir erstellen einen eigenen XServer nur für den VDR:

    code:
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    
    cd /etc/init.d
    wget http://www.gerloni.net/LinuxVDR/LinuxVDRconfig/etc/init.d/X4VDR
    chmod +x /
    update-rc.d X4VDR start 19 2 3 4 5 . stop 21 0 1 6 .
    
    cat > /etc/vdrdevel/plugins/plugin.xineliboutput.conf << EOF
    # Command line parameters for vdrdevel-plugin-xineliboutput
    #
    # For more details see:
    #   - /usr/share/doc/vdrdevel-plugin-xineliboutput/README.Debian
    #   - vdrdevel --help -Pxineliboutput
    #   - /usr/share/doc/vdrdevel-plugin-xineliboutput/README
    #
    --local=sxfe
    --fullscreen
    --display=:1.0
    --remote=127.0.0.1:37890
    EOF
    Die Datei /var/lib/vdrdevel/setup.conf wird um folgende Einträge erweitert:

    code:
    1:
    2:
    
    cat >> /var/lib/vdrdevel/setup.conf << EOF
    EOF
    Für rudimentäre Tastatur-Unterstützund beim Frontend erzeugen wir uns eine remote.conf:

    code:
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    19:
    20:
    21:
    22:
    23:
    24:
    25:
    26:
    27:
    28:
    29:
    30:
    31:
    32:
    33:
    34:
    35:
    36:
    37:
    38:
    39:
    40:
    41:
    42:
    43:
    44:
    45:
    46:
    47:
    48:
    49:
    50:
    51:
    52:
    53:
    54:
    55:
    56:
    57:
    58:
    59:
    60:
    61:
    62:
    63:
    64:
    65:
    
    cat > /var/lib/vdrdevel/remote.conf << EOF
    KBD.Up         00000000001B5B41
    KBD.Down       00000000001B5B42
    KBD.Menu       000000000000006D
    KBD.Ok         000000000000000D
    KBD.Back       000000000000007F
    KBD.Left       00000000001B5B44
    KBD.Right      00000000001B5B43
    KBD.Red        000000001B5B5B41
    KBD.Green      000000001B5B5B42
    KBD.Yellow     000000001B5B5B43
    KBD.Blue       000000001B5B5B44
    KBD.0          0000000000000030
    KBD.1          0000000000000031
    KBD.2          0000000000000032
    KBD.3          0000000000000033
    KBD.4          0000000000000034
    KBD.5          0000000000000035
    KBD.6          0000000000000036
    KBD.7          0000000000000037
    KBD.8          0000000000000038
    KBD.9          0000000000000039
    KBD.Info       0000000000000069
    KBD.FastFwd    0000001B5B31377E
    KBD.FastRew    000000001B5B5B45
    KBD.Power      0000000000000070
    KBD.Volume+    0000001B5B32347E
    KBD.Volume-    0000001B5B32337E
    KBD.Mute       0000001B5B32317E
    KBD.User7      0000001B5B31387E
    KBD.User8      0000001B5B31397E
    KBD.User9      0000001B5B32307E
    XKeySym.Up         Up
    XKeySym.Down       Down
    XKeySym.Menu       m
    XKeySym.Ok         Return
    XKeySym.Back       BackSpace
    XKeySym.Left       Left
    XKeySym.Right      Right
    XKeySym.Red        F1
    XKeySym.Green      F2
    XKeySym.Yellow     F3
    XKeySym.Blue       F4
    XKeySym.0          0
    XKeySym.1          1
    XKeySym.2          2
    XKeySym.3          3
    XKeySym.4          4
    XKeySym.5          5
    XKeySym.6          6
    XKeySym.7          7
    XKeySym.8          8
    XKeySym.9          9
    XKeySym.Info       i
    XKeySym.Pause      space
    XKeySym.FastFwd    F6
    XKeySym.FastRew    F5
    XKeySym.Power      p
    XKeySym.Volume+    F12
    XKeySym.Volume-    F11
    XKeySym.Mute       F10
    XKeySym.User7      F7
    XKeySym.User8      F8
    XKeySym.User9      F9
    EOF
    Wenn wir jetzt den VDR stoppen und neu starten, sollte auf Konsole Nr. 8 das Bild erscheinen.

    code:
    1:
    2:
    
    /etc/init.d/vdrdevel stop
    /etc/init.d/vdrdevel start
    Wenn wir mit dem Ergebnis zufrieden sind, können wir uns an die Einrichtung des Produktivsystems machen.

    Ein Vorteil dürfte bereits im Entwicklungssystem klar geworden sein:
    Wir haben außerhalb von /usr/local keine Dateien im System, die nicht über das Debian-Paktesystem installiert wurden und somit jederzeit wieder entfernt werden können.
    Einzige Ausnahme ist der Nvidia-Kernel, aber damit kann ich gut leben. Der muss eben nach jeder Kernelaktualisierung erneut installiert werden. Weiterhin haben wir ein System, in dem es NUR vdrdevel-Pakete gibt. Kein Mischmasch oder sonstige Unsicherheiten. Ich denke, das rechtfertigt den Mehraufwand allemal.

Produktivsystem einrichten
    Im Augenblick kämpfe ich noch mit der Einrichtung/Konfiguration des VDR. Sobald die in trockenen Tüchern ist, werden die Abschnitte ausgefüllt.

eigenes Repository einbinden


Installation


Rechner mit VDR-Backend (DVB-Karte, Festplatte für Aufnahmen)


Rechner mit VDR-Frontend (VDPAU)


XServer aktivieren


Weiterführender Stoff zum Lesen
  1. Eine kompakte Beschreibung zum Aufsetzen eines Ftp-Servers gibt es unter http://www.pc-howto.com/server/ftp-server-mit-vsftp
  2. Die offizielle Beschreibung zum Einrichten eines Ftp-Servers gibt es hier: http://debiananwenderhandbuch.de/ftpserver.html
  3. Die Einrichtung eines Webservers wird beschrieben unter http://debiananwenderhandbuch.de/server.html#apache
  4. Hintergrundinformationen zu VDPAU mit umfangreichen Tips http://wbreu.htpc-forum.de/index.php
  5. allgemeine Informationen rund um den VDR http://www.vdr-wiki.de/wiki
  6. Kanäle suchen lassen: http://www.vdr-wiki.de/wiki/index.php/W_scan


__________________
Ich bin verantwortlich für das, was ich schreibe - nicht für das, was Du verstehst!
... wissen, was Sache ist
Aufnahmen im Netz verwalten/bearbeiten: VDRAssistant
Überblick über Wechselmedien behalten: iafs

This post has been edited 1 time(s), it was last edited by geronimo: 27.12.2009 15:49.

26.12.2009 16:24 geronimo is offline Send an Email to geronimo Search for Posts by geronimo Add geronimo to your Buddy List
kilroy
Ritter


images/avatars/avatar-113.gif

Registration Date: 12.05.2003
Posts: 1,461

RE: Aufsetzen eines schlanken HD-VDRs unter Debian mit passender Entwicklungsumgebung Reply to this Post Post Reply with Quote Edit/Delete Posts Report Post to a Moderator       Go to the top of this page

quote:
Aufsetzen eines schlanken HD-VDRs unter Debian mit passender Entwicklungsumgebung


PUUH

Das sieht nach einer Menge Holz aus. Aber ich spiele auch schon seit einiger Zeit mit dem Gedanken, meinem VDR HDTV beizubringen. Da ich dafür aber eine weitere Test-Kiste aufsetzen müsste (O-Ton der Regierung: "Wieso steht hier denn schon wieder ein neuer Computer im Weg herum?" Unschuldig ), wozu mir derzeit etwas die Kraft fehlt, werde ich gespannt Dein HOWTO verfolgen und auf das ultimative

code:
1:
aptitude install vdrHD
warten. lachen2

Auf jeden Fall schon mal Danke für die Mühe! prost2

__________________
#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

28.12.2009 00:04 kilroy is offline Search for Posts by kilroy Add kilroy to your Buddy List
geronimo
Freiherr


images/avatars/avatar-1704.jpg

Registration Date: 05.06.2005
Posts: 1,583
Herkunft: 7 07 51 31 110

Thread Starter Thread Started by geronimo
RE: Aufsetzen eines schlanken HD-VDRs unter Debian mit passender Entwicklungsumgebung Reply to this Post Post Reply with Quote Edit/Delete Posts Report Post to a Moderator       Go to the top of this page

Hallo kilroy,

schön von Dir zu lesen!

Du hast Recht, das war ne Menge Holz, aber nur weil ich normalerweise, außer apt-get install, nix mit dem Betriebssystem am Hut habe. Die Zeiten, in denen ich selbst den Compiler angeschmissen habe, sind doch sehr lange her und wenn man die Pakete richtig bauen wollte, wäre sicher noch viel mehr Aufwand nötig.

Mit dem Warten hast Du sicher Recht.

Nicht weil ich den Weg gehen will, aber ich bin doch sehr enttäuscht von ION und VDPAU und so.
Insbesondere die seltsamen Bildstörungen bei AnixeHD (ich denke mal, dass die Vollbildmaterial senden) haben mich völlig frustriert.
Als ich jetzt erfuhr, dass das Ganze damit zusammenhängt, dass ich nen falschen Monitor habe ...

Also auf meinem Desktop (Debian etch, alles Standard) kann ich mkv-Dateien abspielen und habe perfektes Bild und Ton am gleichen Monitor (nur friert das Bild gelegentlich ein) - es muss also möglich sein.
Da ich eine der ältesten core2Duo am Desktop habe, denke ich, dass ein CPU-Upgrade mehr bringen würde, als der ganze VDPAU-Hype - und wäre zudem wesentlich leichter zu pflegen, da ein funktionierendes System nicht von tausenenden aufeinander abgestimmter Konfigurationsparameter abhängig ist. Stand heute kann man sich übers OSD (durch Verändern einiger Paramter von xineliboutput-Plugin) den VDR nicht nur unbedienbar machen, sondern es kann passieren, dass er danach nur noch abstürzt. Wer sich dann nicht mit den Internas auskennt und weiß, wo er hinlangen muss, um das System wieder zurückzusetzen - hat verloren. Das entspricht nicht meiner Vorstellung von Benutzerfreundlichkeit.

Also für mich ist VDPAU damit vergleichbar, als wenn ein Pilot den Eurofighter manuell fliegen wollte - das ist schlicht unmöglich, da das Flugzeug keinen konventionellen aerodynamischen Regeln entspricht. Nur das computerbasierte, hochkomplexe Steuerungs- und Regelungssystem ermöglicht es dem Menschen so ein Flugzeug zu "beherrschen".

Das heißt, ich werde mich eher mal in die Richtung CPU-Upgrade orientieren, bzw. es zumindest ausprobieren. VDPAU ist - für mich - ein Irrweg.

Die entsprechende Entwicklungsumgebung wird dann natürlich viel einfacher, weil "nur" der VDR, bzw. einzelne Plugins übersetzt werden müssten.
Dem Paketprinzip von Debian werde ich treu bleiben smile

Gruß Geronimo

__________________
Ich bin verantwortlich für das, was ich schreibe - nicht für das, was Du verstehst!
... wissen, was Sache ist
Aufnahmen im Netz verwalten/bearbeiten: VDRAssistant
Überblick über Wechselmedien behalten: iafs

28.12.2009 07:09 geronimo is offline Send an Email to geronimo Search for Posts by geronimo Add geronimo to your Buddy List
emax
Eroberer


Registration Date: 15.01.2008
Posts: 57

Reply to this Post Post Reply with Quote Edit/Delete Posts Report Post to a Moderator       Go to the top of this page

@geronimo,

Was für eine Wohltat! Seit Jahren unter Gentoo und Ubuntu arbeitend habe ich eine ganze Reihe vdr-Distris ausprobiert, und war jedes mal frustriert. Da wird ein _config Verzeichnis in den Verzeichnisbaum eingepflanzt, obwohl sowas doch zumindest in ein /opt/xyz... gehört hätte. Da ist kein schlichtes "emerge emacs" möglich, obwohl das unter Gentoo doch eigentlich vorgesehen ist. Da geht unter den Debian-basierten Systemen kein normales vdr-update via apt, weil man besser den ganzen vdr neu installieren sollte, usw. usw.

Ich habe mir Deinen Beitrag noch nicht ganz einverleibt. Aber ich habe schon bemerkt, dass er mir aus der Seele spricht. Es wäre doch eine tolle Sache, wenn die vdr-Installationen sich nach dem Linux FHS richten würde, und auch die diversen Konfigurationsorgien nicht über dutzendfach querverlinkte Verzeichnisse organisiert wäre.

So sehe ich aktuell ein '/file' directory, verlinkt auf 'mnt/data/file'. In 'mnt/' findet sich ein link 'hda5/', der ebenfalls auf 'data' zeigt. In 'hda5' finde ich ein 'pictures' Verzeichnis, in welchem es einen MEDIA Eintrag gibt, der aber wiederum ein Link auf '/media' ist, und einen weiteren Eintrag 'DISC', der wiederum ein Link auf '/mnt/cdrom' ist, usw. usw.

Mir kommt das -vorsichtig ausgedrückt- alles sehr "gewachsen" vor, und zwar im Sinne von 'nicht designed'. So sind Probleme programmiert, und für den Neueinsteiger ist das Ganze kaum durchschaubar.

Deshalb werde ich Deinen Beitrag in einer ruhigen Stunde mal durcharbeiten. Mein Wunsch: ein schlankes Debian-System nach FHS mit der Möglichkeit normaler apt und dpkg Anwendung zur Installation und Pflege eines nach Linux- und Debian-Standards sauber installierten vdr.

Besten Dank!

This post has been edited 1 time(s), it was last edited by emax: 29.12.2009 16:35.

29.12.2009 16:35 emax is offline Search for Posts by emax Add emax to your Buddy List
geronimo
Freiherr


images/avatars/avatar-1704.jpg

Registration Date: 05.06.2005
Posts: 1,583
Herkunft: 7 07 51 31 110

Thread Starter Thread Started by geronimo
Reply to this Post Post Reply with Quote Edit/Delete Posts Report Post to a Moderator       Go to the top of this page

Hallo emax,

ich danke Dir für Deine Zeilen und freue mich, dass ich nicht der Einzige bin, dem es nicht egal ist, wo eine Datei oder ein Verzeichnis liegt Augenzwinkern

Gruß Geronimo

__________________
Ich bin verantwortlich für das, was ich schreibe - nicht für das, was Du verstehst!
... wissen, was Sache ist
Aufnahmen im Netz verwalten/bearbeiten: VDRAssistant
Überblick über Wechselmedien behalten: iafs

29.12.2009 16:55 geronimo is offline Send an Email to geronimo Search for Posts by geronimo Add geronimo to your Buddy List
goldfisch
Routinier


Registration Date: 20.09.2004
Posts: 334

RE: Aufsetzen eines schlanken HD-VDRs unter Debian mit passender Entwicklungsumgebung Reply to this Post Post Reply with Quote Edit/Delete Posts Report Post to a Moderator       Go to the top of this page

Hallo geronimo,

vielen Dank für die Anleitung.

Ich habe mich viele Stunden abgemüht eine saubere VDR-Installation mit .deb-Paketen hinzubekommen. Leider hatte ich damit keinen Erfolg. Deshalb habe ich vor 3 Tagen mit Wikis Anleitung ([Howto] Ubuntu 9.10 + vdr + xbmc) installiert.

Es funktioniert nun. Leider gibt es immer wieder einmal Abstürze oder Hänger (z. B. wenn bei Aufnahmen schnell vor- und zurückgespult wird). Ich bin mir nun nicht ganz im klaren, ob das an meiner etwas tradierten Hardware (Pentium IV/768 MB RAM/nvidia GeForce 8400 PCI) liegt oder an meiner Installation.

Deshalb meine Frage: Wie stabil ist denn Dein Ergebnis? Kommen Abstürze oder freezes vor? Wenn das System damit stabiler würde wäre der WAF bei weitem höher.

Danke!


goldfisch

This post has been edited 1 time(s), it was last edited by goldfisch: 29.12.2009 22:04.

29.12.2009 22:03 goldfisch is offline Send an Email to goldfisch Search for Posts by goldfisch Add goldfisch to your Buddy List
fnu fnu is a male
Graf


images/avatars/avatar-3423.jpg

Registration Date: 12.02.2003
Posts: 2,065
Herkunft: BB

RE: Aufsetzen eines schlanken HD-VDRs unter Debian mit passender Entwicklungsumgebung Reply to this Post Post Reply with Quote Edit/Delete Posts Report Post to a Moderator       Go to the top of this page

quote:
Original von goldfisch
... (z. B. wenn bei Aufnahmen schnell vor- und zurückgespult wird) ...


@goldfisch

Das Problem habe ich bei HD Aufnahmen im TS Format mit den verschiedensten Installationsarten, das wird sich bestimmt mit nächsten Versionen klären. Bitte vergiß nicht, die Versionen 1.7.x sind nicht umsonst noch als Entwicklerversionen gekennzeichnet.

Wenn Du stable im Sinne von "rock-solid" haben willst, mußt Du IMHO irgendeine Installation mit 1.6.0 oder gar 1.4.7 wählen.

Kind regards
hummingbird_de

__________________
Louis XIV: L’État c’est moi!
[*]Accent HT200 (16x2), BeQuiet! L7 80+ (300W), GA-M720-US3, Sempron 140 (45W), 2GB, WD10EADS 1TB, HP Nvidia Quadro FX-580, xine@VDPAU, 3x S2-1600, mceusb2, Lucid, tvt 1.7.14 (x64-preempt)
[*]ST LC17, BeQuiet! L7 80+ (300W), MSI 760GTM-P33, Athlon X2 BE-2400 (45W), 2GB, Hitachi 500GB, Zotac 9500GT, xine@VDPAU, S2-3200, L4M-USB, Lucid, TestVDR (x64-preempt)

29.12.2009 22:27 fnu is offline Send an Email to fnu Search for Posts by fnu Add fnu to your Buddy List
goldfisch
Routinier


Registration Date: 20.09.2004
Posts: 334

RE: Aufsetzen eines schlanken HD-VDRs unter Debian mit passender Entwicklungsumgebung Reply to this Post Post Reply with Quote Edit/Delete Posts Report Post to a Moderator       Go to the top of this page

@hummingbird_de

1. Geht mit der 1.6.X auch HDTV?

2. vdr-sxfe habe ich (zumindest in den tobi-Paketen) bei der 1.6.X nicht gefunden. Gibt es das für 1.6.X?
29.12.2009 22:42 goldfisch is offline Send an Email to goldfisch Search for Posts by goldfisch Add goldfisch to your Buddy List
wilderigel wilderigel is a male
Hat alles erreicht


images/avatars/avatar-3285.jpg

Registration Date: 13.12.2003
Posts: 16,719
Herkunft: austria - linz land
Berufung: Raubvorspuler

Reply to this Post Post Reply with Quote Edit/Delete Posts Report Post to a Moderator       Go to the top of this page

@goldfisch
nein
ja, heisst xineliboutput-sxfe

@emax
was gehoert den vom vdr wohin lt fhs?
links wurden erst nachtraeglich eingefuert da viele die configs ned fanden.

__________________
mein vdr: core2duo, 2 gb ram, nvidia 9500, 1x dvb-c ff, 1x dvb-c budget, 1,5 tb hdd
software: debian sid (amd64), kernel 2.6.34.x, vdr 1.7.10 ( Tobi/TomG basierend )
mein tv: sony kdl-32w5500

mehr igel im irc://irc.vdr-portal.de

29.12.2009 22:52 wilderigel is offline Homepage of wilderigel Search for Posts by wilderigel Add wilderigel to your Buddy List
fnu fnu is a male
Graf


images/avatars/avatar-3423.jpg

Registration Date: 12.02.2003
Posts: 2,065
Herkunft: BB

Reply to this Post Post Reply with Quote Edit/Delete Posts Report Post to a Moderator       Go to the top of this page

@goldfisch

zu 1.: Generell nein. Aber "gda" hat ein Repository mit einem auf HD gepatchten 1.6.0er für Jaunty im Angebot. Ich hoffe er hat es noch nicht vom Server genommen.
zu 2. IMHO gibt es das, ich meine das paket heißt, xineliboutput-sxfe. Ist aber m.E. nicht HD-fähig.

Nun machen wir aber Schluß hier, das hat alles nichts mit geronimo's Ursprungsthema zu tun.

Kind regards
hummingbird_de

__________________
Louis XIV: L’État c’est moi!
[*]Accent HT200 (16x2), BeQuiet! L7 80+ (300W), GA-M720-US3, Sempron 140 (45W), 2GB, WD10EADS 1TB, HP Nvidia Quadro FX-580, xine@VDPAU, 3x S2-1600, mceusb2, Lucid, tvt 1.7.14 (x64-preempt)
[*]ST LC17, BeQuiet! L7 80+ (300W), MSI 760GTM-P33, Athlon X2 BE-2400 (45W), 2GB, Hitachi 500GB, Zotac 9500GT, xine@VDPAU, S2-3200, L4M-USB, Lucid, TestVDR (x64-preempt)

This post has been edited 1 time(s), it was last edited by fnu: 29.12.2009 22:58.

29.12.2009 22:58 fnu is offline Send an Email to fnu Search for Posts by fnu Add fnu to your Buddy List
wilderigel wilderigel is a male
Hat alles erreicht


images/avatars/avatar-3285.jpg

Registration Date: 13.12.2003
Posts: 16,719
Herkunft: austria - linz land
Berufung: Raubvorspuler

Reply to this Post Post Reply with Quote Edit/Delete Posts Report Post to a Moderator       Go to the top of this page

quote:
Original von hummingbird_de
zu 2. IMHO gibt es das, ich meine das paket heißt, xineliboutput-sxfe. Ist aber m.E. nicht HD-fähig.

dem client ist doch egal ob hd oder sd kommt.
is hd faehig.

wird von vdr 1.6.x und auch von vdrdevel 1.7.x verwendet.

__________________
mein vdr: core2duo, 2 gb ram, nvidia 9500, 1x dvb-c ff, 1x dvb-c budget, 1,5 tb hdd
software: debian sid (amd64), kernel 2.6.34.x, vdr 1.7.10 ( Tobi/TomG basierend )
mein tv: sony kdl-32w5500

mehr igel im irc://irc.vdr-portal.de

This post has been edited 1 time(s), it was last edited by wilderigel: 29.12.2009 23:03.

29.12.2009 23:02 wilderigel is offline Homepage of wilderigel Search for Posts by wilderigel Add wilderigel to your Buddy List
fnu fnu is a male
Graf


images/avatars/avatar-3423.jpg

Registration Date: 12.02.2003
Posts: 2,065
Herkunft: BB

Reply to this Post Post Reply with Quote Edit/Delete Posts Report Post to a Moderator       Go to the top of this page

quote:
Original von wilderigel
dem client ist doch egal ob hd oder sd kommt.
is hd faehig.

Mir war so, als ob der Client mit dem entsprechenden "vdr-plugin-xineliboutput" zwingend mitgepatched werden muß.

Kind regards
hummingbird_de

__________________
Louis XIV: L’État c’est moi!
[*]Accent HT200 (16x2), BeQuiet! L7 80+ (300W), GA-M720-US3, Sempron 140 (45W), 2GB, WD10EADS 1TB, HP Nvidia Quadro FX-580, xine@VDPAU, 3x S2-1600, mceusb2, Lucid, tvt 1.7.14 (x64-preempt)
[*]ST LC17, BeQuiet! L7 80+ (300W), MSI 760GTM-P33, Athlon X2 BE-2400 (45W), 2GB, Hitachi 500GB, Zotac 9500GT, xine@VDPAU, S2-3200, L4M-USB, Lucid, TestVDR (x64-preempt)

29.12.2009 23:10 fnu is offline Send an Email to fnu Search for Posts by fnu Add fnu to your Buddy List
geronimo
Freiherr


images/avatars/avatar-1704.jpg

Registration Date: 05.06.2005
Posts: 1,583
Herkunft: 7 07 51 31 110

Thread Starter Thread Started by geronimo
Reply to this Post Post Reply with Quote Edit/Delete Posts Report Post to a Moderator       Go to the top of this page

quote:
Leider gibt es immer wieder einmal Abstürze oder Hänger

Yepp, es sieht so aus, als gäbe es ein Problem mit dem xineliboutput-Plugin - zumindest bin ich nicht der Einzige, der an der Ecke Abstürze und Hänger hat.
Die Probleme soll es mit dem xine-Plugin nicht geben - aber die entsprechende Anleitung habe ich noch nicht fertig.
Wird nachgeliefert, sobald ich eine Lösung gefunden habe.
Wenn Du aber meine Anleitung genau liest, siehst Du, dass ich mit dem Ergebnis noch nicht zufrieden bin, dass es für mich aber bereits besser als das nach Wickys Anleitung ist.
Ich denke, man kann sich aus der Anleitung genug für eigene Experimente rausziehen.

quote:
was gehoert den vom vdr wohin lt fhs?

So wie es aktuell beim c't-vdr und dem Ubuntu-Team gehandhabt wird, empfinde ich es als richtig.
Der VDR hat sein Verzeichnis unter /var/ilb und die Konfigurationsdateien werden nach /etc verlinkt.
Dass es nach der Installation nach Wickys Anleitung Links unter /etc gibt, die zu keinen Dateien führen ist ein anderes Kapitel und hat nix mit FHS zu tun.

quote:
Mir war so, als ob der Client mit dem entsprechenden "vdr-plugin-xineliboutput" zwingend mitgepatched werden muß.

Wer beide VDR-Versionen (also 1.6x und 1.7x) parallel auf dem Rechner haben will, braucht das nicht zu patchen.
Ich wollte einen reinen 1.7.x haben und habe es deshalb nicht eingesehen, dass das xinelib-Frontend den kompletten 1.6er Vdr (mit eigenen Verzeichnissen unter /var/lib und /etc, sowie eigenen Startdateien, die den Start von vdr1.7 verhindern) ins System zieht. Deshalb habe ich es gepatched.

Was die Installation angeht, mag ich eben ent- oder weder, aber nicht beides. Im Mischmasch hat man kaum noch eine Chance Fehler zu finden ...

Gruß Geronimo

__________________
Ich bin verantwortlich für das, was ich schreibe - nicht für das, was Du verstehst!
... wissen, was Sache ist
Aufnahmen im Netz verwalten/bearbeiten: VDRAssistant
Überblick über Wechselmedien behalten: iafs

30.12.2009 05:32 geronimo is offline Send an Email to geronimo Search for Posts by geronimo Add geronimo to your Buddy List
jensa jensa is a male
Routinier


images/avatars/avatar-3050.jpg

Registration Date: 27.08.2006
Posts: 287
Herkunft: /de/he/ks

Reply to this Post Post Reply with Quote Edit/Delete Posts Report Post to a Moderator       Go to the top of this page

Hallo geronimo,

ich hätte eine Nachfrage bzgl:

quote:

Wer Produktiv und Entwicklungssystem auf einem Rechner mit verschiedenen Partitionen betreibt, mag vielleicht mit statischen IP-Adressen arbeiten, wobei Produktiv- und Entwicklungssystem unterschiedliche Adressen bekommen. Danach kann die Konsole mit exit geschlossen werden. Den Rest erledigen wir aus der Ferne, von unserem Desktop aus.



Wie darf man das verstehen?
Meinst du eine Dualboot-Installation auf zwei verschiedenen Partitionen?

ansonsten liest sich deine Anleitung schon sehr gut, bin gespannt darauf wenn sie fertig gestellt ist und sie in "produktion" gehen kann Augenzwinkern

gruß jens

__________________
VDR:
HW: SMT-7020S, 160GB Seagate 2.5"
SW: zen2mms 1.1
ION HD-VDR (In Aufbau)
HW: Zotac IONITX-F-E, 320GB 2,5", 2x1GB, Cine S2
SW: yaVDR 0.1.1

30.12.2009 07:50 jensa is offline Send an Email to jensa Homepage of jensa Search for Posts by jensa Add jensa to your Buddy List
geronimo
Freiherr


images/avatars/avatar-1704.jpg

Registration Date: 05.06.2005
Posts: 1,583
Herkunft: 7 07 51 31 110

Thread Starter Thread Started by geronimo
Reply to this Post Post Reply with Quote Edit/Delete Posts Report Post to a Moderator       Go to the top of this page

quote:
Meinst du eine Dualboot-Installation auf zwei verschiedenen Partitionen?

Ja genau.

Da ich nur einen ION mit VDPAU habe, habe ich 4 Partitionen gemacht und teste 4 verschiedene Systeme/Installationen (ich habe noch nicht rausgefunden, wie ich ein installiertes System in eine Virtualbox überführen kann).
Da ist es natürlich ätzend, wenn jedes System auf dem Rechner per DHCP über seine MAC jeweils die gleiche IP erhält. Dann gibt es nämlich auf dem Desktop die Fehlermeldung, dass jemand den Rechner sabotiert hat und dass die Schlüssel nimmer übereinstimmen - und jedesmal die .ssh/known_hosts zu löschen nervt auch irgendwann.

Ich habe das deshalb an der Stelle erwähnt, weil wenn man die Netzwerk-Adresse über die ssh-Konsole ändert und ein /etc/init/networking restart absetzt, anstatt zu booten, dann hängt sich die ssh-Sitzung auf - Logisch Augenzwinkern

quote:
bin gespannt darauf wenn sie fertig gestellt ist und sie in "produktion" gehen kann

Darauf bin ich selbst gespannt.
Werde mir jetzt auch mal einen VGA2Scart-Adapter löten ...
Mal sehen, ob das was bringt. Vielleicht wird ja auch in der Zwischenzeit das Problem beim xineliboutput-Plugin behoben Augenzwinkern

Gruß Geronimo

__________________
Ich bin verantwortlich für das, was ich schreibe - nicht für das, was Du verstehst!
... wissen, was Sache ist
Aufnahmen im Netz verwalten/bearbeiten: VDRAssistant
Überblick über Wechselmedien behalten: iafs

30.12.2009 10:49 geronimo is offline Send an Email to geronimo Search for Posts by geronimo Add geronimo to your Buddy List
wilderigel wilderigel is a male
Hat alles erreicht


images/avatars/avatar-3285.jpg

Registration Date: 13.12.2003
Posts: 16,719
Herkunft: austria - linz land
Berufung: Raubvorspuler

Reply to this Post Post Reply with Quote Edit/Delete Posts Report Post to a Moderator       Go to the top of this page

quote:
Original von geronimo
Da ist es natürlich ätzend, wenn jedes System auf dem Rechner per DHCP über seine MAC jeweils die gleiche IP erhält. Dann gibt es nämlich auf dem Desktop die Fehlermeldung, dass jemand den Rechner sabotiert hat und dass die Schlüssel nimmer übereinstimmen - und jedesmal die .ssh/known_hosts zu löschen nervt auch irgendwann.

/etc/ssh/*key* syncronisieren, dann sollte ssh nimma meckern.

__________________
mein vdr: core2duo, 2 gb ram, nvidia 9500, 1x dvb-c ff, 1x dvb-c budget, 1,5 tb hdd
software: debian sid (amd64), kernel 2.6.34.x, vdr 1.7.10 ( Tobi/TomG basierend )
mein tv: sony kdl-32w5500

mehr igel im irc://irc.vdr-portal.de

30.12.2009 10:58 wilderigel is offline Homepage of wilderigel Search for Posts by wilderigel Add wilderigel to your Buddy List
bolzerrr
Eroberer


Registration Date: 28.12.2009
Posts: 67
Herkunft: Frankfurt

Daumen hoch! Reply to this Post Post Reply with Quote Edit/Delete Posts Report Post to a Moderator       Go to the top of this page

hi,

super Anleitung!
Hab dannach einen Kernel gebacken- was auch funktioniert hat, was nicht klappt ist leider die Header installieren, ich bekomme folgende Fehlermeldung:

code:
1:
2:
Richte linux-headers-2.6.32.2-htpc ein (2.6.32.2-htpc-10.00.Custom)
 ... dpkg: Warnung: veraltete Option »--print-installation-architecture«, bitte verwenden Sie »--print-architecture« stattdessen.


Hast du eine Idee woran das liegen könnte?

__________________
AMD X2 250 // GA-MA785GMT-UD2H 785G // G210 Passiv // 64GB SSD OS // 1TB Data // 4GB DDR3 // TT-3650 CI // Antec Fusion Micro Remote // Logitech Harmony // yaVDR 0.2
30.12.2009 11:07 bolzerrr is offline Send an Email to bolzerrr Search for Posts by bolzerrr Add bolzerrr to your Buddy List
geronimo
Freiherr


images/avatars/avatar-1704.jpg

Registration Date: 05.06.2005
Posts: 1,583
Herkunft: 7 07 51 31 110

Thread Starter Thread Started by geronimo
Reply to this Post Post Reply with Quote Edit/Delete Posts Report Post to a Moderator       Go to the top of this page

quote:
/etc/ssh/*key* syncronisieren, dann sollte ssh nimma meckern.

Lässt sich das automatisieren? - denn das wäre ja nach jedem Systemwechsel auf dem vdr fällig.
Wenn nicht, ist die known_hosts löschen auch nicht mehr Tipparbeit.

quote:
Hast du eine Idee woran das liegen könnte?

Kann es sein, dass Du Ubuntu und kein Debian verwendest?

Als ich mit dem Rezept anfing, war 2.6.32 aktuell - habe es also locker 20mal durchexerziert, aber die Fehlermeldung ist bei mir nicht aufgetreten.
Könnte es sein, dass Du iregendwo nen Bindestrich statt einem Unterstrich verwendet hast?
Ansonsten muss ich passen - bei mir funzt es nach wie vor.

Gruß Geronimo

__________________
Ich bin verantwortlich für das, was ich schreibe - nicht für das, was Du verstehst!
... wissen, was Sache ist
Aufnahmen im Netz verwalten/bearbeiten: VDRAssistant
Überblick über Wechselmedien behalten: iafs

30.12.2009 11:28 geronimo is offline Send an Email to geronimo Search for Posts by geronimo Add geronimo to your Buddy List
wilderigel wilderigel is a male
Hat alles erreicht


images/avatars/avatar-3285.jpg

Registration Date: 13.12.2003
Posts: 16,719
Herkunft: austria - linz land
Berufung: Raubvorspuler

Reply to this Post Post Reply with Quote Edit/Delete Posts Report Post to a Moderator       Go to the top of this page

brauchst ja nur einmal machen.

suchst dir ne partition aus von wo du die *key* nimmst und kopierst es auf alle anderen partitionen.

dann noch einmal die known_hosts anpassen falls erforderlich und ruhe ist.

__________________
mein vdr: core2duo, 2 gb ram, nvidia 9500, 1x dvb-c ff, 1x dvb-c budget, 1,5 tb hdd
software: debian sid (amd64), kernel 2.6.34.x, vdr 1.7.10 ( Tobi/TomG basierend )
mein tv: sony kdl-32w5500

mehr igel im irc://irc.vdr-portal.de

30.12.2009 11:38 wilderigel is offline Homepage of wilderigel Search for Posts by wilderigel Add wilderigel to your Buddy List
bolzerrr
Eroberer


Registration Date: 28.12.2009
Posts: 67
Herkunft: Frankfurt

Reply to this Post Post Reply with Quote Edit/Delete Posts Report Post to a Moderator       Go to the top of this page

quote:
Original von geronimo
quote:
Hast du eine Idee woran das liegen könnte?

Kann es sein, dass Du Ubuntu und kein Debian verwendest?


treffer.. dachte das verfahren wäre das selbe..

__________________
AMD X2 250 // GA-MA785GMT-UD2H 785G // G210 Passiv // 64GB SSD OS // 1TB Data // 4GB DDR3 // TT-3650 CI // Antec Fusion Micro Remote // Logitech Harmony // yaVDR 0.2
30.12.2009 12:01 bolzerrr is offline Send an Email to bolzerrr Search for Posts by bolzerrr Add bolzerrr to your Buddy List
Pages (3): [1] 2 3 next » Tree Structure | Board Structure
Jump to:
Post New Thread Post Reply
VDR Portal » Video Disk Recorder » HOWTOS / F.A.Q.s » Aufsetzen eines schlanken HD-VDRs unter Debian mit passender Entwicklungsumgebung

www.vdr-portal.de VDR Portal © 2002-2006 by genka
Forum Software: Burning Board 2.3.4, Developed by WoltLab GmbH