Debian - mit 2.6.9er / 2.6.10er Kernel für VDR aufsetzen

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Einführung

Diese Anleitung soll aufzeigen wie man Debian mit 2.6er Kernel für den VDR installiert, inklusive aktuellem DVB-Treiber und den Bibliotheken, die für Plugins gebraucht werden. Die beschriebene Vorgehensweise funktioniert auch für jeden anderen 2.6er Kernel, " 2.6.32-5-686" ist durch die Versionsnummer zu ersetzen. Die Informationen stammen aus verschiedenen Quellen (u.a. VDR Portal) und wurden von Thorsten Gehrig (Thorsten AT Gehrig DOT de) zusammengestellt.

Grundinstallation

Als Basis wird Debian Testing (Squeeze) empfohlen - z.B. den Debian Installer, der direkte Link zur Netzwerk-Installations-CD ist hier.

  • Debian normal installieren (2.6.32er Kernel - keine zusätzlichen Pakete auswählen)
  • grub in den bootloader
  • Hardwareuhr auf gmt
  • Keine Softwareauswahl (in tasksel oder aptitude)
  • Einen Editor seiner Wahl installieren (z.B. "apt-get install mc" für Midnight-Commander)

Installieren von diversen Paketen:

apt-get update
apt-get install dpkg-dev gcc g++ libc6-dev make patch debhelper bzip2 kernel-package sudo \
mc hdparm ssh kernel-package samba mercurial wget lynx libtool automake1.9

Den aktuellen Kernel sucht man sich am besten mit dem Befehl:

apt-cache search kernel-image-2.6

bzw - bei noch neueren Versionen (Kernel >= 2.6.15)

apt-cache search linux-image-2.6

Es werden daraufhin diverse Kernel für verschiedene Architekturen angezeigt (386, 686, K7) den passenden für sein System kann man sich dann selber aussuchen.

apt-get install kernel-image-2.6.12-1-686 kernel-source-2.6.12

bzw.

apt-get install linux-image-2.6.17-2-686 linux-source-2.6.17

Hier wird das Image genommen um eine passende .config-Datei für den eigenen Kernel zu haben.

Falls der Kernel nicht gefunden wird: bitte prüfen mit apt-cache search kernel-image-2.6 bzw. apt-cache search linux-image-2.6

Wer einen neueren Kernel versuchen will, nimmt statt
kernel-image
linux-image
und statt
kernel-source
linux-source
.
apt-get install libncurses5 libncurses5-dev rcconf dialog setserial

rcconf aufrufen, exim und ppp deaktivieren

diverse Libs installieren

libc-client-dev wird für den mailbox-client gebraucht, netpbm wird für das Image-Plugin gebraucht. libcap-dev wird für den vdr ab 1.3.38 gebraucht.

apt-get install libc-client2002edebian libc-client-dev netpbm libvorbis-dev libvorbis0a \
libvorbisfile3 libvorbisenc2 libogg0 liboggflac++-dev liboggflac++2 \
libdvdnav-dev libdvdnav4 alsa-base alsa-utils alsa-source libasound2 libasound2-dev \
libjpeg62 libjpeg62-dev libcap-dev

Die Pakete libjpeg62 libjpeg62-dev werden auch für einen "plain" VDR benötigt!

Für Netze mit eigenem Timeserver oder permanenter Internetanbindung:

apt-get  install ntpdate

Die hotplug-Utilities (automatisches Laden einiger Firmwares)

apt-get  install hotplug hotplug-utils

Anschließend /etc/default/ntpdate editieren und z.b. ntp1.ptb.de eintragen.

acpi-Unterstützung

Wird u.a. zum kontrollierten Herunterfahren durch drücken der POWER-Taste benötigt.

apt-get  install acpid 

/etc/acpi/powerbtn.sh abändern in:

/pfad/zu/svdrpsend.pl "HITK POWER"

VDRAdmin Vorbereitungen

apt-get install libcompress-zlib-perl

ALSA (Soundtreiber)

ALSA kann man grundsätzlich überspringen wenn man nur den Tonausgang der DVB-Karte nutzt (direkt oder mit SPDIF-Slotblende). Wenn man jedoch den Sound über die Soundkarte laufen lassen will (z.B. für das Mp3-plugin) dann muss man ALSA konfigurieren. Falls nicht schon automatisch gestartet: "alsaconf" aufrufen. Danach sollten die entsprechenden alsa-module geladen sein?! ("lsmod" zeigt die geladenen Module an). Der Ton ist aber aus - daher mit "alsamixer" den Ton lauter stellen. Danach mit "alsactl store" speichern.

sonstiges

apt-get install hddtemp

(nicht als Dienst konfigurieren!) Durch den Befehl "hddtemp /dev/hdX" kann man nun jederzeit seine Festplattentemperatur überprüfen. Ein guter Platz ist später in der "commands.conf". Nach der Installation sollte man mit o.g. Befehl testen ob die eigene Festplatte Temperaturinformationen zurück gibt. Ist dies nicht der Fall kann man das Programm wieder löschen:

apt-get remove hddtemp

Nun das System neu starten.

DVB-Firmware herunterladen

cd /usr/lib/hotplug/firmware/
wget http://www.linuxtv.org/downloads/firmware/dvb-ttpci-01.fw-261f
cp dvb-ttpci-01.fw-261f dvb-ttpci-01.fw

Kernel Sourcen auspacken

cd /usr/src
tar xjvf linux-source-<VERSION>.tar.bz2
ln -s linux-source-<VERSION> linux

Install-script laden

cd /usr/src
wget ftp://ftp.tvdr.de/vdr/Tools/vdr-install-script-current.run
chmod +x vdr-install-script-current.run
sh vdr-install-script-current.run -- --help

Skript beenden. (Hinweis: nicht empfehlenswert, wenn es nur um die Kernelinstallation geht, da das Skript dazu nichts beiträgt und wegen enthaltenen Binärdaten nur bedingt nachvollziehbar ist. Besser auf die VDR-Pakete des Linux-Distributors verlassen, was völlig ausreicht) Das Skript wird später gebraucht um verschiedene Sourcen herunterzuladen.

aktuellen DVB-Treiber nachladen

Dieser Abschnitt kann übersprungen werden, wenn die mitgelieferten Kernel-Treiber aktuell sind.

Eine eigene/detailliertere Wiki-Dokumentation NUR für den DVB-Treiber gibt es unter DVB_Installation_v4l-dvb.

cd /usr/local/src
hg clone http://linuxtv.org/hg/v4l-dvb

# alte methode
cd v4l-dvb/linux
../v4l/scripts/makelinks.sh /usr/src/linux

# neue methode (empfohlen)
cd v4l-dvb
make kernel-links KDIR=/usr/src/linux

Kernel konfigurieren und compilieren

cd /usr/src/linux (kernel-source-2.6.9)
make menuconfig

Hier die Option "Load an Alternate Configuration File" auswählen und als Config die Datei /boot/config-2.6.9-1-686 eingeben (je nachdem welchen Kernel man installiert hat - zur Not vorher in das /boot-Verzeichnis schauen was zur Verfügung steht).

Angeblich verursacht der High Memory Support Probleme mit dem DVB-Treiber, daher schalten wir ihn ab (ist auch nicht wirklich nötig, wer hat schon einen VDR mit > 2GB ):

Processor type and features / High Memory Support (off)

Als nächstes die Einstellungen des DVB-Treiber ändern:

Device Drivers->Multimedia devices->Digital Video Broadcasting Devices->AV7110 cards / [*] AV7110 OSD support

damit das OSD wieder funktioniert. Die restlichen Einstellungen können übernommen werden, oder nach persönlichem Geschmack geändert werden.

Die Konfiguration abspeichern und ein neues Kernelimage backen:

make-kpkg kernel_image --revision=dvb.0 --initrd

Das dauert jetzt je nach gewählten Einstellungen und Rechner einige Zeit (locker 2 Std.). Wenn das Image fertig gebacken wurde, kann es per:

dpkg -i ../kernel-image-2.6.9_dvb.0_i386.deb  ( bzw. linux-image )

installiert werden.

Falls man den Kernel ohne "--initrd" gebacken hat kann man diese so nachträglich erzeugen:

mkinitrd -o /boot/initrd.img-2.6.9 2.6.9

(Danach /boot/grub/menu.lst anpassen! - Sollte selbsterklärend sein!)

Sollte irgendetwas nicht funktioniert haben, kann man den Kernelquelltext in die Ausgangsform zurückbringen (die Datei .config mit den Einstellungen, die man mit make menuconfig erstellt hat bleibt bestehen):

make-kpkg clean

Jetzt das System neu booten.

DVB-Treiber laden

Folgende Dateien sollten vorhanden sein: /dev/dvb/adapter1 (usw).

Ansonsten MAKEDEV-DVB.sh aufrufen:

/usr/local/src/dvb-kernel/MAKEDEV-DVB.sh

Zum Laden der DVB-Treiber gibt es 2 Möglichkeiten: über /etc/init.d/dvb oder über die modules.conf

Ich verwende BEIDE Varianten: beim Hochfahren des Systems lasse ich die DVB-Treiber über die modules.conf automatisch laden. Für das runvdr-script verwende ich "/etc/init.d/dvb restart" um die Treiber neu zu initialisieren!

Variante a) /etc/init.d/dvb

Folgende Datei erstellen.

Datei
/etc/init.d/dvb
# /etc/init.d/dvb: start/setup the DVB drivers
   
set -e
   
PATH=/bin:/usr/bin:/sbin:/usr/sbin
   
loadDrivers () {
     echo -n "Starting the DVB drivers:"
     /sbin/modprobe dvb_ttpci hw_sections=0
     /sbin/modprobe stv0299
     /sbin/modprobe ves1820
     #speziell fuer 1.3er dvb-ff karten (ves1x93)
     /sbin/modprobe ves1x93
     echo "."
}
   
unloadDrivers() {
     echo -n "Stopping the DVB drivers:"
     /sbin/rmmod stv0299 dvb_ttpci ttpci-eeprom saa7146_vv saa7146 video-buf v4l2-common v4l1-compat dvb-core videodev crc32 i2c_core
     /sbin/rmmod ves1820 2> /dev/null || true
     /sbin/rmmod firmware_class 2> /dev/null || true
     /sbin/rmmod budget_ci 2> /dev/null || true
     /sbin/rmmod budget_core 2> /dev/null || true
     echo "."
}
   
case "$1" in
     start)
     loadDrivers
     ;;
    
     stop)
     unloadDrivers
     ;;
  
     restart)
     unloadDrivers
     sleep 1
     loadDrivers
     ;;
   
    *)
     echo "Usage: /etc/init.d/dvb [stop|start|restart]"
     exit 1
     ;;
esac
   
exit $?


Dieses Skript nach /etc/init.d/dvb kopieren und executeable setzen (chmod a+x dvb). Dann noch einen Link im Runlevel 2 darauf setzen (cd /etc/rc2.d && ln -s ../init.d/dvb S15dvb). Unter DVB Installation 1.1.1 (Kernel 2.6) gibt es ein vergleichbares Script - bei Problemen kann man auch dort nochmal nachlesen.

Variante b) /etc/modutils/dvb

Datei
/etc/modutils/dvb
# DVB-Treiber
alias char-major-250  dvb
alias char-major-81 videodev
alias dvb dvb-ttpci
   
# Vidmode=2 habe ich fuer svideo
options dvb-core dvb_shutdown_timeout=0
options dvb-ttpci hw_sections=0 vidmode=2
   
# Lade DVB-Treiber für FF-DVB-T
#options alps_tdlb7 firmware_file=/opt/vdr/share/firmware/SC_MAIN.MC
pre-install dvb-ttpci \
       /sbin/modprobe input;\
       /sbin/modprobe evdev;\
       /sbin/modprobe videodev;\
       /sbin/modprobe dvb-core;\
       /sbin/modprobe ves1x93;\
       /sbin/modprobe saa7146;\
       /sbin/modprobe saa7146_vv;\
       /sbin/modprobe ttpci-eeprom
   
# Lade DVB-Treiber für Nova-DVB-S
pre-install dvb-ttpci-budget-ci \
       /sbin/modprobe input;\
       /sbin/modprobe evdev;\
       /sbin/modprobe videodev;\
       /sbin/modprobe dvb-core;\
       /sbin/modprobe stv0299;\
       /sbin/modprobe saa7146;\
       /sbin/modprobe saa7146_vv;\
       /sbin/modprobe ttpci-eeprom


danach "update-modules" ausführen. Die Treiber werden jetzt automatisch beim Hochfahren geladen.

Jetzt fehlt noch ein Eintrag fuer das sysfs in /etc/fstab.

In der Datei /etc/fstab die Zeile:

sysfs   /sys  sysfs  defaults  0   0

LIRC Installation

Das LIRC müssen wir aus dem CVS holen (damit es mit 2.6er Kerneln kompatibel ist):

Erst einmal cvs installieren

apt-get  install cvs

dann

cd /usr/src
cvs -d:pserver:anonymous@lirc.cvs.sourceforge.net:/cvsroot/lirc login
(Passwortabfrage wieder mit enter bestätigten)
cvs -z8 -d:pserver:anonymous@lirc.cvs.sourceforge.net:/cvsroot/lirc co -P lirc 
cd lirc
./autogen.sh
./setup.sh (evtl. Serielle Schnittstelle anpassen - dann "save & run configure")
make 
make install 
depmod (zum updaten der modulliste)

Zum Testen kann man folgendes eingeben

setserial /dev/ttyS0 uart none (gilt für COM1, sonst anpassen).
modprobe -v lirc_serial

es sollte folgende Bildschirmausgabe erscheinen:

#vdr:/etc/init.d# setserial /dev/ttyS0 uart none
#vdr:/etc/init.d# modprobe -v lirc_serial
insmod /lib/modules/2.6.10/misc/lirc_serial.ko

Nun ist das Beispiel init script zu kopieren:

install -m 755 contrib/lirc.debian /etc/init.d/lirc

Eventuell (nach einigen Anwenderberichten im VDR Portal) muss man das Startscript noch ausführbar machen:

chmod a+x /etc/init.d/lirc

Anschließend symbolische Links setzen (damit LIRC automatisch gestartet wird):

update-rc.d lirc defaults 20

Falls man mit neueren Kerneln ein Problem hat - und Programme wie "mode2" nicht laufen, hilft es manchmal nachzuschauen wie das LIRC-device heißt:

ls /dev/lirc*

Falls man ein /dev/lirc0 hat - und kein /dev/lirc - kann man einfach einen symbolischen Link einrichten:

sudo ln -s /dev/lirc0 /dev/lirc

Diverse Libs für VDR nachladen bzw. manuell installieren

Es empfiehlt sich die originalen Debian-Bibliotheken zu verwenden, damit diese mit einem "apt-get dist-upgrade" aktualisiert werden können. Man kann sicherlich die meisten Bibliotheken auch per Hand bzw. Install-Script kompilieren - muss sich dann aber selbst um die Aktualisierungen kümmern.

apt-get install libvorbis-dev libvorbis0a libvorbisfile3 libvorbisenc2 \
libdvdnav-dev libdvdnav4 alsa-base alsa-source libasound2 libasound2-dev \
libjpeg62 libjpeg62-dev libid3tag0 libid3tag0-dev imagemagick \
libcrypto++-dev libssl0.9.7 openssl libcompress-zlib-perl
apt-get install libmad0 libmad0-dev          (bitstream)
apt-get install liba52-0.7.4 liba52-0.7.4-dev (dvd)
apt-get install libsndfile1 libsndfile1-dev nasm (mp3-plugin)
apt-get install libmagick6++ libmagick++6-dev (text2skin)
apt-get install libimlib2 libimlib2-dev (u.a. fuer graphlcd-plugin)
apt-get install ogmtools libcdaudio0 libcdaudio0-dev gozer giblib-dev giblib1
apt-get install fbtv fbset [effectv (f. Deiniterlacer falsch gewünscht)](zur Ausgabe TV auf VGA)
apt-get install libboost-dev libgd2-xpm libgd2-dev (burn)

Diese Bibliotheken per Hand/Installscript herunterladen und kompilieren:

(ich habe sie per Install-Script runtergeladen - aber selbst ausgepackt und installiert... ... ich mag STOW nicht der die Sachen in ein eigenes INCLUDE-Verzeichniss kompiliert... - was wann mit dem Install-Script runtergeladen hat findet man unter /usr/local/src/packages wieder)

Hinweis
Hinweis

Achtung: Die Nutzung der libdvdcss ist aufgrund der aktuellen Rechtesprechung in einigen Ländern, darunter Deutschland, rechtlich umstritten. Jeder möge selbst entscheiden, ob er diese Bibliothek mitinstalliert.


libdvdcss 1.2.8 installieren (./configure && make && make install && cd ..)
Hinweis
Hinweis

Man kann lame, ffmpeg, usw auch bequem per apt-get bzw aptitude installieren, wenn man seine /etc/apt/sources.list um den eintrag "deb http://www.deb-multimedia.org/ sarge main" (ohne die "") ergänzt. Benutzer von etch ( testing ) verwenden den Eintrag: "deb http://www.deb-multimedia.org/ etch main". In der FAQ auf www.deb-multimedia.org findet sich auch wie man den gpg-key installieren kann, den apt-get anmahnt


lame installieren (muss vor ffmpeg installiert werden)

lame3.96 installieren (./configure &&  make && make install && cd ..)

ffmpeg4.8 installieren

cd $SOURCE (z.B. cd /usr/local/src)
cd ffmpeg4.8
./configure --enable-shared --disable-mmx (für das softdevice-plugin noch --enable-pp --enable-gpl)
make && make install && cd ..
mpeg2dec-0.4.0b installieren (zu finden als Libmpeg2) (./configure && make && make install & cd ..) 

xvidcore-1.1.0 installieren

   cd $SOURCE/xvidcore-1.1.0/build/generic
   ./configure &&  make && make install
   ln -s /usr/lib/libxvidcore.so.4.1 /usr/lib/libxvidcore.so.4    
   (eventuell die Versionsnummern anpassen)
cd $SOURCE (z.B. cd /usr/local/src)
divx4linux 20020418 installieren (nur ./install && cd.. )
libmad-015b installieren (./configure &&  make && make install && cd ..)
libid3tag 015b installieren (./configure &&  make && make install && cd ..)
libogg-1.1 installieren (./configure &&  make && make install && cd ..)
libvorbis-1.0.1 installieren (./configure &&  make && make install && cd ..)
libsndfile1.0.5 installieren (./configure &&  make && make install && cd ..)
noad-0.6.0 installieren (./configure --with-ffmpeg &&  make && make install && cd ..)
nvram-wakeup-0.9.7 installieren (make devices && make && make install && cd ..)

libdvdread-0.9.4 (zu finden im Install-Script unter vdrconvert als dvdread)

libdvdread-0.9.4 (./configure --enable-shared && make && make install && cd ..)

Mplayer (apt-get install mplayer-586) habe ich das Install script installiert:

zuerst Herunterladen "Most recent Links"
Paket 1: Mplayer-1.0pre6
Paket 2: Codec, binarys for Mplayer: all
Paket 3: Fonts (freie Auswahl)
dann Installieren "Select Software and unpack it/bild cmdlist/installation"
Zuerst: Codec, binarys for Mplayer
Danach: Mplayer 'mp3 + mplayer'

Wer das ganze lieber selbst installiert:

cd $SOURCE
./configure --enable-largefiles --enable-lirc --enable-menu \
            --datadir=/usr/local/share/mplayer --with-codecsdir=/usr/local/lib/win32 
./make
./make install


Vdradmin AM / Xxv

Zum Installieren vom VDRAdmin habe ich noch keine Schritt-für-Schritt-Anleitung - ich habe einfach eine alte Installation übernommen...

Mittlerweile setze ich den VDRAdmin nicht mehr ein - die Erweiterung "Xxv" ist in vielen punkten besser als der VDRAdmin. Und wer ein vollwertiges Debian-System aufsetzt hat sicherlich auch kein Problem mit den "hohen" Anforderungen (-> MySQL).

Eine gute Installationsanleitung hierfür gibt es hier im Wiki -> Xxv

sonstige Optimierungen des Betriebssystems

Laufwerksparameter für DVD-Laufwerk setzten (Speed wegen Geräusch / hat evtl. Auswirkungen auf Schreibgeschwindigkeit beim Brennen!)

Irgendwo in den Startscripts:

  /sbin/hdparm -u1 -d1 /dev/hdc
  hwclock --systohc = zeit auf hardwareuhr übertragen

Installieren der Smartmontools

apt-get install smartmontools
/etc/default/smartmontools: aktivieren

File erstellen: /etc/smartd.conf (nach vorlage)

  # -n = nicht testen wen sleep
  # -m mail an
  # -H kritische warnung bevor crash
  # -l selftest - wann soll er sich melden: nach erhhung der fehler nach einem selbsttest
  # -s selbsttests starten 
  # -s S/../.././02  schnelltest nachts um 2
  # -s L/../(01|15)/./22 langer test am 1 und 15. um 22 uhr
  # -s S/../.././02|L/../(01|15)/./03
  # 
  # eMail-Adresse und für welche Laufwerke es aktiv ist muss angepasst werden!
  #
  /dev/hda -n sleep -s S/../.././02|L/../(01|15)/./03 -m emailadresse@serviceprovider.net
  /dev/hdb -n sleep -s S/../.././02|L/../(01|15)/./03 -m emailadresse@serviceprovider.net
  /dev/hdc -n sleep -s S/../.././02|L/../(01|15)/./03 -m emailadresse@serviceprovider.net

/boot/grub/menu.lst erweitern um Ausschalte-Kontext

  title NVRAM-Timer
     halt

(oder alternativer shutdown-Kontext - siehe nvram-wakeup-readme

Vorbereitungen für DVD Burn

Quellen für die Paketverwaltung (/etc/apt/sources.list) erweitern:

deb ftp://ftp.heise.de/pub/ct/projekte/vdr/sarge/testing/binary base/
deb http://www.deb-multimedia.org sarge main

Installieren:

apt-get install dvd+rw-tools mkisofs lame mjpegtools libmjpegtools-dev sox toolame mpeg2dec \ 
libdvdread3 libdvdread3-dev libfame-0.9 libfame-dev libmpeg3-1 libmpeg3-dev dvdauthor \
imlib-base imlib-progs imlib1 libimlib2 libpopt-dev libsdl-sound1.2-dev transcode

Installation des VDR

An dieser stelle kann nun der VDR installiert werden. Hierzu gibt es sicherlich viele weitere Anleitungen - und durch das Installscript ist die Installation auch sehr einfach.

Ansonsten.

cd /usr/local/src/VDR
make VFAT=1 REMOTE=LIRC
mkdir /usr/local/man/man1
mkdir /usr/local/man/man5
make
make install

Hier in kürze, die Schritte zu meiner installation:

VDR <VERSION> installieren
patch für jump&play (vdr-jumpplay-<VERSION>.diff)
Plugins:

* dvd-plugin
* dvdselect-plugin
* image-plugin
* mailbox-plugin
* mp3-plugin
* tvonscreen-plugin
* tvtv-plugin
* timeline-plugin
* burn-plugin

Achtung: Für das mailbox-plugin muss das Makefile (/usr/local/src/VDR/PLUGINS/src/mailbox/Makefile) geändert werden: Zeile 44+45 auskommentieren, Zeile 53+54 aktivieren bzw. Raute-Zeichen (#) entfernen.