hallo zusammen,
ich habe mein howto mal überarbeitet .... vielleicht könnt ihr ja mal das ein oder andere feedback geben ....
VDR 1.6.2 Installationsanleitung auf einem Debian Sid System mit 2.4.22er Kernel
1. Einführung
Dieses Dokument stellt eine Insallationsanleitung dar. Es erklärt wie man den VDR von Hand und ohne Debian Pakete auf einem Debian Sid System installiert. Dabei wird erklärt, wie man das Debian System installiert und das System auf einen 2.4.22er Kernel „aktualisiert“.
Es wird dabei folgendes System zugrundegelegt:
- Intel Pentuim 3 733 MHz
- APM fähiges Mainboard
- ATX Gehäuse
- 256 MB Hauptspeicher
- 120 GB Festplatte
- Haupauge Nexus-s Rev.: 2.2 mit Fernbedienung (kein LIRC)
2. Installation des Basissystems
Zuerst wird das Debian System installiert. Dazu wird die Debian Woody CD 1, welche unter http://www.debian.org/CD/http-ftp/ heruntergeldaden werden kann, ins CD-Rom Laufwerk gelegt und bei dem Debian Bootprompt „bf24“ eingegeben, um das System mit einem 2.4.18er Kernel zu installieren.
Bei der Frage nach der Festplattenpartitionierung ist es sinvoll eine primäre Partition (ca. 5GB) als Systempartition anzulegen und zudem zwei erweiterte Partitionen. Die erste soll dabei eine sogenannte Swappartition werden, auf der das Betriebssystem Hauptspeicher auslagen kann. Diese sollte ca. 1GB in Anspruch nehmen. Auf der zweiten Partition sollen nachher die Videodaten liegen. Daher kann für dieses der restliche Fesplattenspeicher genommen werden. Diese Partition sollte nach der Partitionierung als /video eingebunden werden.
Die restlichen Fragen und Menüs die während der Installation erscheinen sind weitgehend selbsterklärend. Wichtig ist noch, dass man unter dem Menüpunkt „Laden und Konfigurieren der Treibermodule“ alle für das einene System passende Treibermodule lädt. Insbesondere ist hier die Netzwerkkarte wichtig. Sollte für bestimmte Hardware kein Modul zur Verfügung stehen, kann es sein, das dieses bereits fest in den Kernel eingebaut wurde. In diesem Fall hilft nur eine Überprüfung der Funktionalität nach der Installation des Systems. Sind alle Konfigurationsdialoge abgeschlossen startet der Rechner neu durch.
Danach fragt die Installationsroutine noch einige Einstellungen ab. Ein neuer User wird an dieses Stelle noch nicht angelegt. Den PCMCIA Support kann man getrost deinstallieren. Bei der Frage nach der Installationsquelle sollte man wenn die Möglichkeit besteht immer http oder ftp wählen, da man somit immer die aktuellsten Pakete erhält. Die Restlichen Fragen kann man prinzipiell alle mit „ja“ beantworten. Danach fragt das System nach zusätzlicher Software indem man mit tasksel Installationsbündel auswählen kann. Da es ein minimales Debian System nur für den VDR sein soll, wird hier nichts ausgewählt und daher wird nach tasksel auch nicht dselect ausgeführt.
3. Zusätzliche Software
Erscheint der Boot Prompt nach der Installation ist der erste Schritt in Richtung VDR geschafft. Nun installieren wir zusätzliche Software, die die tägliche Arbeit mit dem System leichter machen und die für die Kernelkonfiguration und die VDR Kompilierung nötig sind. Es handelt sich dabei um folgende Pakete:
mc Midnight Comander, das Vorbild für den Norton Comander
wget Downloader
libncurses5-dev make menuconfig
libjpeg62-dev VDR Kompilierung
Diese werden mit dem Tool apt-get installiert. Dazu wir folgende Syntax verwendet:
apt-get install paketname
Eventuelle Abhängigkeiten der Pakete zu Anderen löst apt-get automatisch auf.
4. Neuer Kernel und Update auf Sid
Nun kann das System mit dem 2.4.22er Kernel bestückt werden und auf Sid geupdated werden.
Dazu Installiert man zuerst die Kernel Sourcen. Da die Sourcen für den 2.4.22er Kernel nicht im aktuellen stable Relesase von Debian(Woody) enthalten sind, muss man diese aus dem testing Release (Sid) installieren. Dazu ist es notwendig in der Datei sources.conf unter /etc/apt alle stable Einträge durch testing zu ersetzen. Dies kann man recht einfach mit dem Editor vi erledigen. Nach dem Speichern der Änderungen führt man ein apt-get update aus, um die Installationsquellen zu aktualisieren. Nun wird ein Distributionsupdate ausgeführt, um das System auf das testing Release (Sid) zu bringen. Dazu wird folgender Befehl aufgerufen.
apt-get upgrade
Jetzt können auch die Kernelquellen installiert werden. Das geht ziemlich simpel mit dem Kommando: apt-get install kernel-source-2.4.22. Danach müssen die Kernel Sourcen entpackt werden. Dazu wechselt man in der Verzeichnis /usr/src und entpackt dort mit tar xvfj kernelpaket. Danach legt man einen symbolischen Link an. Das geht mit ln –s entpacktesKernelPaket linux. Jetzt kann man ins Verzeichnis /usr/scr/linux wechseln und dort „make menuconfig“ aufrufen um den Kernel zu konfigurieren. Wenn man noch nicht so viel Ahnung vom Kernelbau hat, dann kann man auch die sich im Anhang befindliche .config Datei wählen. Diese Datei wird mit dem menuconfig Tool ausgewählt und so geladen. Danach speichert man die Konfiguration direkt und beendet das menuconfig Progamm.
Nun kann es an das Kompilieren des Kernels und der Module gehen. Dazu ruft man im /usr/src/linux Verzeichnis folgende Befehle auf:
make dep
make clean
make bzImage
make modules
make modules_install
Ist alles ordentlich durchgelaufen, muss man den Kernel noch in das /boot/ Verzeichnis kopieren und die lilo Konfiguration anpassen. Das geschieht mit:
cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.22
In der Datei /etc/lilo.conf legt man einen neuen Image Eintrag an. Dazu kann man sich den schon bestehenden Image Eintrag zum Vorbild nehmen. Zudem wird den Name unserer neunen Image Sektion also default eingetragen, um unseren neune Kernel standardmäßig zu starten. Zum Schluss ruft man noch das Kommando lilo auf, um die lilo Konfiguration gültig werden zu lassen. Um späteren Problemen beim Kompilieren der Komponenten vorzubeugen ist noch folgendes zu tun. Das libc6-dev Paket, welches mit dem Update auf Sid kommt, installiert neue Kernelheader mit denen der DVB Treiber nicht klar kommt. Diese befinden sich in den Verzeichnissen /usr/include/linux und /usr/include/asm. Diese beiden Verzeichnisse werden mit dem mv Befehl umbenannt z.B. in name.old. Danach legt man im Verzeichnis /usr/include/ zwei symbolische Links an, welche auf das asm und linux Verzeichnis in den Kernel Quellen zeigen. Dies geschieht mit:
ln –s /usr/src/linux/include/linux/ /usr/include/linux
ln –s /usr/src/linux/include/asm/ /usr/include/asm
Da bei dem “alten” Kernel noch zusätzliche Module geladen wurden, die der neue Kernel nicht mehr benötigt, befinden sich nun nicht mehr benötigte Einträge in der Datei /etc/modules. Diese Einträge werden nun aus dieser Datei herausgelöscht. Das kann man wieder mit der Editor vi machen. Welche dies sind muss mit einem akribischen Blick auf die Bootmeldungen heraugefunden werden. Dort findet man das u.a. usbkbd, input und keybdev Einträge entfernt werden müssen.
Damit ist das Debian System eingerichtet und es kann an die Installation des DVB Treibers gehen.
5. DVB Treiber
Das Basissystem ist nun soweit eingerichtet, dass die Installation des DVB Treibers stattfinden kann.
Dazu wechelt man zuetst in das Verzeichnis /usr/local/src.
cd /usr/local/src
Dann wird mittels wget das DVB Treiberarchiv geladen.
wget ftp://ftp.cadsoft.de/vdr/linux-dvb.2003-11-08.tar.bz2
Zum Zeitpunkt der Erstellung der Anleitung war dies die aktuellste Datei. Es ist daher zu prüfen ob zum Installationszeitpunkt eine aktuellere Version existiert.
Das Archiv wird nun entpackt und zudem wird ein symbolischer Link auf das entpackte Verzeichnis angelegt.
tar xvfj linux-dvb.2003-11-08.tar.bz2
ln –s linux-dvb.2003-11-08 DVB
Da eine Haupauge Nexus-s DVB Karte mir Fernbedienung die grundlage dieser anleitung bildet und der VDR später mit einem normalen Systemuser und nicht mit root Rechten laufen soll, ist es notwendig die DVB Treiber Quellen zu patchen. Der Patch ermöglicht es die Fernbedienung auch als normaler Benutzer verwenden zu können. Dazu wird zunächst der Patch mittels wget geladen.
wget http://cvs.berlios.de/cgi-bin/…10_ir-permission-666.diff
(Dieser Patch ist von Martini und heisst „remote-plugin as normal user“)
Der Patch wird nun nach linux-dvb.2003-11-08/driver/av7110/av7110_ir.c kopiert und dort mittels
cat av7110_ir-permission-666.diff | patch –p1
installiert.
Jetzt kann der DVB Treiber kompiliert und installiert werden. Dazu wechselt man in das Verzeichnis /usr/local/scr/DVB/driver und führt folgende Kommandos aus:
make
./makedev.napi
make insmod
Nach dem letzten Kommando sollte auf dem Fernseher die Convergence Schrift zu sehen sein. Damit ist der DVB Treiber richtig geladen. Um die kompilierten Treibermodule fest zu installieren, wird das Kommando make install ausgeführt. Das kopiert die Treibermodule an den richtigen Ort (/lib/modules/2.4.22/…). Um diese bei jedem Systemstart zu laden, trägt man entweder die Namen der Module in die Datei /etc/modules ein oder erledigt diese Konfigurationsaufgabe über das Programm modconf. Welche Module für die DVB Karte geladen weden müssen, erfährt man in der Datei CARDS, welche sich im Sourcenverzeichnis des DVB Treibers befindet. Bei einer WinTV Nexus-s sind dies die Module dvb-core, dvb-ttpci und stv2099.
Wenn mann später das Programm VDRAdmin benutzen will, möchte man sicherlich auch Fernseher dort benutzen. Dazu ist es notwendig das GRAB Kommando beim svdrp ausführen zu können. Dies ist allerdings nur möglich, wenn die Devices /dev/video* vorhanden sind. Bei einer Debian installation ist das jedoch nicht der Fall. Daher ist es nötig, diese von Hand anzulegen. Dies geschieht mit:
cd /dev
mknod video0 c 81 0
mknod video1 c 81 1
mknod video2 c 81 2
mknod video3 c 81 3
Nun legen wie noch einen symbolischen Link auf das video0 Device an.
ln -s video0 video
Damit wäre die Installation des DVB Treibers abgeschlossen und es kann der VDR Installiert werden.
6. VDR Installation
Um den VDR zu installieren, wechelt man zuerst in das Verzeichnis /usr/local/src.
cd /usr/local/src
Dann wird mittels wget das VDR Softwarearchiv geladen.
wget ftp://ftp.cadsoft.de/vdr/vdr-1.2.6.tar.bz2
Zum Zeitpunkt der Erstellung der Anleitung war dies die aktuellste Datei. Es ist daher zu prüfen ob zum Installationszeitpunkt eine aktuellere Version existiert.
Das Archiv wird nun entpackt und zudem wird ein symbolischer Link auf das entpackte Verzeichnis angelegt.
tar xvfj vdr-1.2.6.tar.bz2
ln –s vdr-1.2.6.tar.bz2 VDR
Nun kann es an die Kompilierung und Installation des VDR gehen. Da die VDR Binaries nachher im Verzeichnis /usr/local/vdr/ liegen sollen, wird zunächt die Variable BINDIR in der Datei /usr/local/src/VDR/Makefile auf diesen Pfad angepasst. Jetzt kann der VDR kompiliert werden. Dazu wechselt man in das Verzeichnis /usr/local/src/VDR und füht dort folgendes Kommando aus:
make VFAT=1
Die genauen Optionen kann man in der Datei INSTALL welche sich im tar Archiv befindet nachlesen. Ein einfaches make ist zudem auch gültig. Sinnvollerweise sollte man hier immer VFAT=1 angeben, da sonst keine spätere Freigabe des /video Verzeichnisses über SAMBA möglich ist.
Die Kompilierung des VDR ist nun abgeschlossen. Damit die Installation der Software auch richtig funktioniert, müssen noch drei Verzeichnisse angelegt werden. Eins, für die VDR Binaries und die anderen beiden für die VDR Manpages. Das zudem nötige /video Verzeichnis für die VDR Aufnahmen wurde schon während der Basisinstallation eingerichtet. Folgende Kommandos erstellen die benötigten Verzeichnisse:
mkdir /usr/local/vdr
mkdir /usr/local/man/man1
mkdir /usr/local/man/man5
Um die Software nun zu installieren gibt man einfach „make install“ ein. Das kopiert die Dateien vdr und runvdr in den im Makefile angegebenen BINDIR Pfad.
Prinzipiell ist die Installation des VDR nun abgeschlossen. Allerdings sind die Vorgaben für die Speicherorte der config Dateien und Plugins nicht schön. Die config Dateien sollen unter /usr/local/vdr/conf und die Plugins unter /usr/local/vdr/plugins liegen. Dazu werden die Verzeichnisse angelegt und die *.conf aus dem /video Verzeichis in das config Verzeichnis verschoben. Das geschieht mit folgenden Kommandos:
mkdir /usr/local/vdr/conf
mkdir /usr/local/vdr/plugins
mv /video/*.conf /usr/local/vdr/conf/
Der letzte Schritt der Installation besteht in der Bearbeitung des VDR Startskriptes. Dies geschieht mit:
vi /usr/local/vdr/runvdr
Hier müssen noch die richtigen Pfade zu allen Verzeichnissen gesetzt werden. Danach kann das Skript aufgerufen werden und somit der VDR gestartet werden. Das skript sollte nach der Bearbeitung ungefähr folgendermaßen aussehen:
#!/bin/sh
# runvdr: Loads the DVB driver and runs VDR
#
# If VDR exits abnormally, the driver will be reloaded
# and VDR restarted.
#
# Set the environment variable VDRUSR to the user id you
# want VDR to run with. If VDRUSR is not set, VDR will run
# as 'root', which is not necessarily advisable.
#
# Since this script loads the DVB driver, it must be started
# as user 'root'.
#
# Any command line parameters will be passed on to the
# actual 'vdr' program.
#
# See the main source file 'vdr.c' for copyright information and
# how to reach the author.
#
# $Id: runvdr 1.11 2003/08/26 16:15:41 kls Exp $
DVBDIR="/lib/modules/2.4.22/misc"
VDRPRG="/usr/local/vdr/vdr"
VDRCMD="$VDRPRG -w 60 -t /dev/tty8 –c /usr/local/vdr/conf –L /usr/local/vdr/plugins $*"
VDRUSR=”root”
LSMOD="`/sbin/lsmod | grep -w '^dvb' | wc -l`"
KILL="/usr/bin/killall -q -TERM"
# Load driver if it hasn't been loaded already:
if [ $LSMOD -eq 0 ] ; then
(cd $DVBDIR; make insmod)
fi
while (true) do
su -c "$VDRCMD" $VDRUSR
if test $? -eq 0 -o $? -eq 2; then exit; fi
date
echo "restarting VDR"
$KILL $VDRPRG
sleep 10
(cd $DVBDIR; make rmmod; make insmod)
date
done
Zusätzlich zu den Pfaden zu den einzelnen Dateien, wurde in der runvdr noch der Benutzer mit dem der VDR gestartet wird angegeben. Zur Zeit ist dies noch der Benutzer root. Wie man einen eigenen Systemuser für den VDR einrichtet wird im nächsten Abschnitt beschrieben.
Damit der VDR beim Einschalten des Rechners automatisch startet, wird noch ein Eintrag in der Datei /etc/inittab vorgenommen. Dieser wird am besten ganz am Ende der Datei mit dem Editor vi eingefügt. Er sollte folgendermaßen aussehen:
vdr:25:once:/usr/local/vdr/runvdr
Damit ist die Installation des VDR Basissystems abgeschlossen.
7. Systemuser
Nun wird ein Systembenutzer angelegt, unter dem der VDR laufen soll. Den VDR mit root Rechten zu starten wird nicht empfohlen, da es ein zu großes Risiko darstellt. Die Einrichtung des Benutzers geschieht mit den folgenden Kommandos:
groupadd -g 99 vdrdaem
useradd -u 99 -g vdrdaem -d /home/vdr -p password vdr
Das erste Kommando legt eine neue Gruppe (vdrdaem) mit der GID 99 an. Das zweite Kommando legt einen neuen Benutzer (vdr) mit der UID 99 an und weißt diesem die primäre Gruppe vdrdaem zu. Zudem wird das Homeverzeichnis (/home/vdr) gesetzt und das Passwort für den Benutzer vergeben.
Zur Erklärung: Die User- und Group-ID unterhalb des Wertes 100 sind traditionell für die speziellen User von Systemdiensten vorbehalten.
Um nun den VDR mit dem vdr Systemuser zu starten, muss man die Zeile
VDRUSR=”root”
durch
VDRUSR=”vdr”
ersetzen.
Damit der vdr Systemuser den VDR auch ausführen darf, muss man ihm Rechte auf alle für die Ausführung des VDR notwendigen Dateien erteilen. Dies sind die Dateien in den folgenden Verzeichnissnen:
chown -R vdr:vdrdaem /video Verzeichnis für die Videodaten
chown -R vdr:vdrdaem /usr/local/vdr VDR Binariverzeichnis, „config“ Verzeichnis und „plugin“ Verzeichnis
chown vdr:vdrdaem /dev/dvb/adapter?/* Zugriff auf das DVB Device
chown vdr:vdrdaem /dev/video? Zugriff auf das Video Device für GRAB (s.o.)
chown vdr:vdrdaem /dev/input/event? Zugriff auf das Event Device für IR
Nun müssen noch einige Rechte an bestehenden Dateien verändert werden. Das gescheiht mittels:
chmod a+rw /dev/tty8 Alle User dürfen Konsole 8 lesen und „scheiben“
chmod a+rw /dev/dvd Alle User dürfen das DVD Laufwerk lesen und „scheiben“
chmod a+rw /dev/video? Alle User dürfen das Video Device lesen und „scheiben“
Jetzt kann der VDR gestartet werden. Am besten startet man den Rechner dafür neu durch. Dies geht am besten mit dem Kommando „init 6“. Ist alles richtig installiert und konfiguriert, sollte der VDR nun selbstständig starten. Falls etwas nicht richtig funktionieren sollte, hilft vielleicht ein Blich in das Eventlog mittels:
tail –f /var/log/messages
8. VDR ausschalten
Die VDR-Software bietet die praktische Möglichkeit den Rechner per Direkteingabe herunterzufahren. Man benötigt lediglich ein kleines Skript, welches diese Aufgabe erledigt und beispielsweise unter dem Namen „vdrshutdown“ im Verzeichnis /usr/local/vdr angelegt wird. Das Skript könnte beispielsweise folgendermaßen aussehen:
#!/bin/bash
sudo shutdown –h now
Dieses Skript wird nun mittels chmod a+x /usr/local/vdr/vdrshutdown ausführbar gemacht.
Wie man an der zweiten Zeile des Skriptes erkennen kann, steht dem eigentlichen shutdown Kommando der Befehl „sudo“ voran. Sudo ist ein Programm, welches es unpriviligierten Benutzern erlaubt, bestimmte Befehle auszuführen, die i.d.R. nur mit root Rechten ausgeführt werden können.
Dazu muss allerdings das Programm sudo noch installiert werden. Dies geschieht mittels apt-get install sudo. Nach der Installation des sudo Progamms muss dieses nun so konfiguriert werden, das der Benutzer vdr das shutdown Kommando ausführen darf. Dies erreicht man, indem man folgenden Eintrag mit dem Editor vi in der Datei /etc/sudoers anhängt:
vdr ALL=(ALL) NOPASSWD: /sbin/shutdown
Nun muss dem VDR noch mitgelteilt werden, welches Kommando er bei einem Druck auf den Power Button ausführen soll. Dies geschieht indem man ihm bei seinem Aufruf das Shutdown Skript mittels –s übergibt.
Es muss demnach „-s /usr/local/vdr/vdrshutdown“ in die VDRCMD="… Zeile einbebaut werden, sodass diese dann vollständig lautet:
VDRCMD="$VDRPRG -w 60 -t /dev/tty8 –c /usr/local/vdr/conf –L /usr/local/vdr/plugins \
-s /usr/local/vdr/vdrshutdown $*"
Nun kann der VDR mittels des Power Buttons heruntergefahren werden. Im folgenden Abschnitt wird erklärt wie man die Haupauge Fernbedienung mit dem VDR benutzen kann.