0.6 VDR, Plugins etc. selbst kompilieren
Inhaltsverzeichnis
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