0.6 VDR, Plugins etc. selbst kompilieren

Aus easyVDR-Wiki
Zur Navigation springen Zur Suche springen

VDR und Plugins selber kompilieren

Vorwort

Bei easyVDR 0.6 sind alle Werkzeuge zum Kompilieren bereits vorhanden. Es fehlen lediglich die VDR-Sourcen sowie die DVB-Treiber.

Nachstehend wird beschrieben, wie man die VDR-Sourcen und DVB-Treiber nachinstalliert, um VDR an seine eigenen Bedürfnisse anzupassen.

Es wird nicht beschrieben, wie man einen eigenen Kernel übersetzt oder wie man Patches o. ä. einspielt.

Falls in Zukunft mit neuen easyVDR-Versionen oder neuen Versionen des Programms VDR gearbeitet wird, ist zu beachten, dass die hier angegeben Download-Pfade und Versionsnummern im Dateinamen eventuell nicht mehr stimmen und diese dann entsprechend angepasst werden müssen. Hinweise auf aktuelle Sourcen befinden sich im Downloadbereich!

Aktueller Compiler sollte gcc3.4 sein für den Kernel und gcc3.3 für den VDR alleine, prüfen mit gcc -v auf der Konsole! Ansonsten nachinstallieren mit apt-get install.

Sourcen-Verzeichnis einrichten, Original-Quellen des easyVDR einrichten

Ab Version 0.5 sind die Sourcen schon im Image enthalten, und liegen auch unter /usr/local/src/

Anmeldung als Benutzer root und Erstellen eines Ordners namens src unter /usr/local. Danach Wechsel in dieses Verzeichnis.

mkdir /usr/local/src 
cd /usr/local/src 

Nun laden wir die aktuellen, originalen easyVDR-Quellen mitsamt Plugins aus dem Internet, entpacken diese und setzen einen Symlink auf das VDR-Verzeichnis.

wget http://ftp.gwdg.de/pub/linux/easyvdr/0.4/Sourcen/easyvdr-VDR-1.4.4-Sourcen.tar.bz2
tar -xvjf easyvdr-VDR-1.4.4-Sourcen.tar.bz2
ln -s vdr-1.4.4/ VDR

Die VDR-Quellen sind nun soweit installiert. Wer möchte, kann die Datei easyvdr-VDR-1.4.4.-Sourcen.tar.bz2 entfernen, da sie nicht mehr gebraucht wird.

rm easyvdr-VDR-1.4.4.-Sourcen.tar.bz2

Aktuelle DVB Treiber aus dem CVS holen

Erstellen des Ordners src unter /usr und in diesen wechseln.

mkdir /usr/src
cd /usr/src
cvs -d:pserver:[email protected]:/cvs/linuxtv login         <== Anmeldung
cvs -d:pserver:[email protected]:/cvs/linuxtv co dvb-kernel <== Wenn nach einem Passwort gefragt wird, einfach ENTER drücken.

Nun können wir den Download starten. Anschließend befindet sich ein neuer Ordner namens dvb-kernel im Verzeichnis /usr/src. Da die VDR-Quellen mit diesem Ordner nichts anfangen können, setzten wir noch einen Symlink.

ln -s dvb-kernel/linux/ linux

Anmerkung: Diese neuen externen DVB-Treiber sind nicht im Original-Kernel von easyVDR. Es werden für den Betrieb die Original-HG-Treiber der jeweiligen Version benutzt. Ein Einkopieren von Hand sollte keinesfalls erfolgen. Diese externen DVB-Treiber werden nur für das Kompilieren des VDR benötigt (Kernel-Headers).

VDR Kompilieren

In das Verzeichnis /usr/local/src/VDR wechseln und dann die alten "Kompilate" löschen.

cd /usr/local/src/VDR
make clean

Jetzt starten wir einen echten Kompilerlauf.

make all

Wenn kein Fehler aufgetreten ist, können wir uns gratulieren, denn nun haben wir eine lauffähige Entwicklungsumgebung.

Tipps zum Kompilieren

1. Um Plugins zu installieren, müssen die Sourcen des Plugins in den Ordner /usr/local/src/VDR/PLUGINS/src. Außerdem MUSS ein Symlink darauf erstellt werden (und zwar ohne Versionsnummer). Nehmen wir also mal an, wir möchten das Plugins TestPlugin-0.1 installieren und hätten es schon ins Verzeichnis /usr/local/src/VDR/PLUGINS/src verschoben.

cd /usr/local/src/VDR/PLUGINS/src
ln -s Testplugin-0.1 testplugin

In den Ordner /usr/local/src/VDR wechseln, ALLE Plugins kompilieren und die alten "Kompilate" löschen.

cd /usr/local/src/VDR
make clean-plugins
make plugins

Jetzt kann man, je nach Anzahl der installierten Plugins und der CPU-Leistung, ein bis zwei Kaffee trinken gehen.

Alternativ können die Plugins auch einzeln übersetzt werden.

In den Ordner /usr/local/src/VDR/PLUGINS/src/testplugin wechseln, Plugin kompilieren und die alten "Kompilate" löschen.

testplugin steht dabei für den Namen des Plugin-Links, welchen ihr wie. o.g. angelegt habt.

cd /usr/local/src/VDR/PLUGINS/src/testplugin 
make clean all


Nach dem Kompilieren befinden sich die fertigen Plugins (Libs) in /usr/local/src/VDR/PLUGINS/lib.

Wer diese nun benutzen möchte, muss die Datei(en) ins Verzeichnis /usr/vdr/plugins<vdr-version> kopieren und im OSD aktivieren (ggf. muss das VDR-Programm neu gestartet werden, damit es die neuen Plugins beim Programmstart laden kann).


2. Man kann die fertig kompilierten Dateien (Plugins und VDR) noch verkleinern um Platz zu sparen. Dazu reicht der Befehl strip gefolgt vom Dateinamen.

Beispiel VDR:

cd /usr/local/src/VDR
strip vdr

Das VDR-Programm ist nun von 5,2 MB auf 1,8 MB geschrumpft. Man kann bei den Plugins folgendermaßen vorgehen:

cd /usr/local/src/VDR/PLUGINS/lib
strip *

Hier wurde nach dem Kommando strip anstatt des Dateinamens ein Joker, also *, gesetzt. Dadurch wurden alle Dateien innerhalb des Verzeichnisses geschrumpft.


3. Wer lieber einen anderen Ordner als /usr/local/src möchte, kann im VDR-Verzeichnis die Datei Make.config editieren. Wichtig sind dort die Pfadangaben.

Für den Ordner vdr-<version>

PREFIX = /usr
SRCDIR = $(PREFIX)/src
VDRDIR = $(SRCDIR)/VDR

Für die DVB-Kernel-Treiber

DVBDIR = /usr/src/linux

Dies sei jedoch wirklich nur den Profis empfohlen.

Kernel incl. LIRC selber kompilieren

Vorwort

Bevor wir hier das Thema Kernel mit Lirc kompilieren ansprechen, ein paar Hinweise zum Selberkompilieren in Bezug auf zukünftige Versionen von easyVDR.

EasyVDR soll primär einfach zu installieren und zu bedienen sein, eine hohe Stabilität und auch einen recht breiten Leistungsumfang bieten.

Wenn man kompilieren und das System ausserhalb des gebotenen Rahmens anpassen möchte, verlässt man den Weg (was natürlich jeder gerne machen darf). Wenn man sich eigene Anpassungen, Treiber, Module usw. selber erstellt, kann die ganze Arbeit mit der nächsten Version von easyVDR wieder dahin sein, weil die eigenen Anpassungen nicht mehr kompatibel mit z. B. Skripten, Kernel oder Treiber sind.

Wer also sichergehen will, dass seine Anpassungen in die Fortentwicklung von easyVDR einfließen werden, sollte lieber im Bereich Weiterentwicklung einen Thread eröffnen und sein Wünsche posten. Das Team wird dann sicherlich bereit sein, der Nachfrage entsprechend diesen nachzukommen und in die nächste Version einfließen zu lassen. Voraussetzung ist natürlich, dass das alles Sinn macht und legal ist.

Man sollte sich auch bewusst sein, dass Treiber wie z. B. em8300, die ausserhalb des Kernels kompiliert werden und dazu die Kernelsourcen benötigen, beim Wechsel zu einem anderen Kernel wiederum kompiliert werden müssen.

Aktueller Compiler sollte gcc3.4 sein. Die Version kann man überprüfen, indem man in einem Terminalfenster folgendes eingibt:

gcc -v

Ansonsten kann man den aktuellen Compiler mit apt-get install installieren.

Vorbereitungen zum Kompilieren eines neuen Kernels (mit DVB-Treibern) inkl. Lirc

Hier als Beispiel mit dem Kernel 2.6.19

1. Kernel Sourcen von kernel.org downloaden und kompilieren.

Befehle auf der Konsole:

mkdir /usr/src
cd /usr/src
wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.19.tar.bz2   <-- ACHTUNG ca. 40 MB
tar xvjf linux-2.6.19.tar.bz2
ln -s linux-2.6.19 linux
cd /usr/src/linux/
make oldconfig
make menuconfig   <-- in diesem Menu kann man Treiber aus- bzw. abwählen

Kompilieren und Installieren des neuen Kernels

1. Kompilieren des neuen Kernels

make && make modules_install                      <-- das dauert dann ein bischen länger, je nach System
cp /usr/src/linux/arch/i386/boot/bzImage /boot/

2. Dann noch /etc/lilo.conf anpassen.

nano /etc/lilo.conf
image=/boot/bzImage
       label=VDR-2.6.19
       optional
       root = /dev/hda3
        append = "apm=off hdc=ide-cd logs=0 acpi=on"
       #append = "apm=off hdc=ide-cd logs=0 noapic acpi=on fbcon=map:789"
       vga=0x314

und lilo auf der Konsole ausführen.

lilo

oder ab Version 0.5, Grub anpassen:

nano /boot/grub/menu.lst

Orginal sollte das so aussehen:

 title           Debian GNU/Linux, kernel 2.6.22.15
 root            (hd0,2)
 kernel          /boot/vmlinuz-2.6.22.15 root=/dev/hda3 ro pci=routeirq vga=788
 savedefault

oder für SATA

 title           Debian GNU/Linux, kernel 2.6.22.15
 root            (hd0,2)
 kernel          /boot/vmlinuz-2.6.22.15 root=/dev/sda3 ro pci=routeirq vga=788
 savedefault

Neu könnte es als Beispiel für den 2.6.24 Kernel so aussehen

 title           Debian GNU/Linux, kernel 2.6.24.5
 root            (hd0,2)
 kernel          /boot/vmlinuz-2.6.24.5 root=/dev/hda3 ro pci=routeirq vga=788
 savedefault

oder für SATA

 title           Debian GNU/Linux, kernel 2.6.24.5
 root            (hd0,2)
 kernel          /boot/vmlinuz-2.6.24.5 root=/dev/sda3 ro pci=routeirq vga=788
 savedefault

Beim nächsten Reboot sollte dann der VDR mit dem neuen Kernel starten.

Lirc mit dem neuen Kernel kompilieren und installieren

1. Aktuelle Lirc-Sourcen herunterladen

cd /usr/src
cvs -d:pserver:[email protected]:/cvsroot/lirc login

(Passwortabfrage wieder mit ENTER bestätigen)

cvs -z8 -d:pserver:[email protected]:/cvsroot/lirc co -P lirc

2. Lirc-Sourcen konfigurieren und kompilieren

cd lirc
./autogen.sh
./setup.sh     (evtl. Serielle Schnittstelle anpassen - dann "save & run configure")
make

3. Lirc installieren

make install
depmod -ae (zum Updaten der Modulliste)

Auch hier ist wiederum ein Reboot notwendig!

DVB-Treiber neu kompilieren und in den aktuellen Kernel integrieren

Um später bei Bedarf (Probleme mit sehr neuen TV-Karten/Treibern) neuere DVB-Treiber (ohne IVTV-Treiber!!) in easyVDR zu haben, ist folgendes zu machen:

Unbedingt vorher das Verzeichnis sichern, um später evt. die Module wieder mit make install zurückzuspielen.

Aktueller Compiler sollte gcc3.4 sein; prüfen mit gcc -v auf der Konsole!

Bei Problemen beim "hg pull" muss python2.4 und mercurial neu installiert werden:

apt-get remove python2.4
apt-get install python2.4
apt-get install mercurial

1. Update der Treiber-Sourcen

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


2. Kernel-Module bauen

Ins v4l-dvb Verzeichnis wechseln:

cd /usr/local/src/v4l-dvb

Module übersetzen:

make distclean
make

Module installieren:

make install

Module dem Kernel bekanntgeben:

depmod -ae

VDR neustarten:

reboot