Debian - mit 2.4er Kernel für VDR aufsetzen

Aus VDR Wiki
Version vom 20. Dezember 2005, 01:09 Uhr von 84.162.248.149 (Diskussion)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Beschreibung

Ich schmeiss hier mal mein Debian-HowTo hinein. Benutze es seit langem, um mein VDR-System neu aufzusetzen, denke es ist ziemlich ohne Schnörkel, für Leute die erstmal einen nackten VDR aufsetzen wollen. Bei Fragen gerne Mail/PN über www.vdr-portal.de.
User: eisenbert

Grundsystem

Voraussetzung für dieses HowTo ist ein "blankes" Debian-System. Mein System ist von einer Sarge-netinstall-CD mit 2.4.26er Kernel. Zur Installation wählte ich die Bootoption "linux". Als Benutzer (neben root natürlich) legen wir einen Sambabenutzer für später an. Nennen wir ihn hier mal smbuser.

Hardwarevoraussetzung

Hier ist nicht viel zu beachten. Es sollten vielleicht nicht gerade die neusten Techniken verwendet werden (wie SATA, Blauzahn, etc.), da diese evtl. nicht unterstützt werden. Ich benutze hier ein "stinknormales" x86-System.

Vorbereitungen

Zu aller Erst benötigen wir den ssh-Server um per Remote auf der Kiste arbeiten zu können und eine neuere vi-Version (Standardtexteditor unter linux). Weiter installieren wir gcc und g++ die wir zum Kompilieren benötigen.

apt-get install ssh vim gcc g++

Nächster Schritt ist die Installation eines Samba-Servers um Verzeichnisse freizugeben.

apt-get install samba smbfs bzip2

Das folgende Konfigurations-Menü einfach mit Enter durchklicken. Die Datei /etc/samba/smb.conf löschen wir und ersetzen sie durch die "schlanke" Version:

debian:/etc/samba# rm smb.conf 
debian:/etc/samba# nano smb.conf
[global]
        workgroup = TUX-NET
        os level = 2
        time server = Yes
        unix extensions = Yes
        encrypt passwords = Yes
        log level = 1
        syslog = 0
        printing = CUPS
        printcap name = CUPS
        socket options = SO_KEEPALIVE IPTOS_LOWDELAY TCP_NODELAY
        wins support = No
        veto files = /*.eml/*.nws/riched20.dll/*.{*}/

[vdrpakete]
        path = /vdrpakete
        comment = Vdrpakete-Verzeichnis
        guest ok = no
        writeable = yes
        browseable = yes
        available = yes
        valid users = smbuser
        public = no

Verzeichnis und Sambauser anlegen, ihm das /vdrpakete-Verzeichnis gefügig machen und den Sambadiesnt neu starten.

debian:~# mkdir /vdrpakete        
debian:~# smbpasswd -a smbuser
New SMB password:
Retype new SMB password:
debian:~# chown smbuser /vdrpakete/
debian:~# smbd restart && nmbd restart

Nun kann man per smb://IP/vdrpakete von meinem PC auf das Verzeichnis zugreifen und Dateien auf die Karre bringen...

Abschliessend noch ein paar allgemeine Pakete:

apt-get install nasm dialog libncurses5-dev libncurses4 automake autoconf libglib1.2-dev

Probleme

Die Rechte auf des gemounteten Servers muss man sich noch mal zu Gemüte führen, da es sich bei mir um ein unkritisches Daten-Verzeichnis handelt habe ich mit chmod 777 -R /video jedem User Schreibrechte zugestanden, um Dateien/Verzeichnise vom Client erstellen zu lassen.

VDR-Installation

Vorbereitungen

Vorerst benötigen wir ein paar Pakete:

apt-get install libjpeg62-dev libcompress-zlib-perl

Kernel

Danach müssen Kernel-Sources installiert werden und ein neuer Kernel mit i2c, video4linux, input-core, event-interface.
Die Kernel-Sourcen gibt es bei kernel.org

apt-get install kernel-source-2.4.28
cd /usr/src/
tar xfvj kernel-source-2.4.28.tar.bz2
ln -s kernel-source-2.4.28 linux
cd linux
make menuconfig

Einstellungen wie oben beschrieben...

make dep && make modules && make bzImage && make modules_install
cp ./arch/i386/boot/bzImage /boot/vmlinuz-2.4.28-2
cd /lib/modules/linux-2.4.28/
ln -s /usr/src/linux-2.4.28 build

(Sollten Probleme beim Backen des Kernels auftreten, liegt es wahrscheinlich am aktuellen gcc-4.0) Danach muss der frische Kernel noch als Bootkernel eingetragen werden. Dafür ändern wir das Config-File des Bootloaders (bei mir grub):
/boot/grub/menu.lst

title           Debian GNU/Linux, kernel 2.4.27-3
root            (hd0,0)
kernel          /boot/vmlinuz-2.4.27-3 root=/dev/hda1 ro 
initrd          /boot/initrd.img-2.4.27-1-386
savedefault
boot

title           Debian GNU/Linux, kernel 2.4.27-2 (alte Vers.)
root            (hd0,0)
kernel          /boot/vmlinuz-2.4.27-2 root=/dev/hda1 ro
initrd          /boot/initrd.img-2.4.27-1-386
savedefault
boot

Nach einem Neustart wird nun der neue Kernel geladen...


LIRC (optional)

cd /usr/local/src/
tar xfvz /vdrpakete/lirc-0.7.0.tar.gz -C .
cd lirc-0.7.0
./setup.sh (homebrew auswählen und danach save & run config)
make && make install

Zum Anlernen der Fernbedienung:

setserial /dev/ttyS0 uart none
modprobe lirc_serial
irrecord /etc/lircd.conf

Nun benötigen wir noch ein Startskript: /etc/lircd.sh

#!/bin/sh

setserial /dev/ttyS0 uart none
modprobe lirc_serial
/usr/local/sbin/lircd

Und zum Starten in /etc/rc3.d:

ln -s /etc/lircd.sh /etc/rc3.d/S80lircd

DVB-Treiber

cd /usr/local/src/
tar xfvj /vdrpakete/linux-dvb.2003-11-08.tar.bz2 -C .
ln -s linux.... DVB
cd DVB/driver
./makedev.napi
make && make insmod

VDR

cd /usr/local/src/
tar xfvj /vdrpakete/vdr-1.3.12.tar.bz2 -C .
ln -s vdr-1.3.12 VDR
cd VDR
cp /vdrpakete/vdr-1.3.12-timer-delete-fix.diff .
mkdir /usr/local/man/man1
mkdir /usr/local/man/man5
make VFAT=1 (REMOTE=LIRC)
make && make install
mkdir /usr/local/vdr-1.3.12
mkdir /usr/local/vdr-1.3.12/conf
cp *.conf /usr/local/vdr-1.3.12/conf/

Nun noch die Startdatei runvdr anpassen:

#!/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.14 2004/11/21 11:30:00 kls Exp $

DVBDIR="/usr/local/src/DVB/driver"
VDRPRG="/usr/local/src/VDR/vdr"
VDRCMD="$VDRPRG -c /usr/local/vdr-1.3.12/conf -t /dev/tty8 $*"

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 $VDRUSR -c "$VDRCMD" &
      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

Zum Starten geben wir nun ./runvdr ein.

VDRAdmin

Um die Kiste nun über das Web steuern zu können benötigt man den VDRAdmin.

cd /opt
tar xfvz
tar xfvz /vdrpakete/vdradmin-0.96.tar.gz -C .
ln -s vdradmin-0.96/ vdradmin
cd vdradmin
./vdradmind.pl --config
./vdradmind.pl

Falls vdradmin bei dem "Fernseh"-Fenster kein /dev/video0 findet:

mknod /dev/video0 c 81 0
mknod /dev/video1 c 81 1
mknod /dev/video2 c 81 2
mknod /dev/video3 c 81 3

Probleme

Der Treiber der DVB-Karte (habe es nur mit einer Budget-Karte installiert) wurde komischerweise nicht geladen.
Habe zur Behebung den Treiber mit zusätzlichen Zeilen in der runvdr geladen(nach den Auskommentierungen):

cd /usr/local/src/DVB/driver
make insmod