Hallo!
Ich habe es endlich geschafft ein DKMS Paket für media_tree/media_build zu machen.
Es funktioniert zwar bei mir und nst, aber es ist trotzdem Alpha-SW. Ich brauche noch einige Freiwillige die das Paket testen.
Dieses neue DKMS kann eine bestimmte Kombination von media_tree (genauer dddvb-linux-kernel) und media_build auf einem System installieren. Welche Kombination das ist legt man beim Erzeugen des DKMS Source Paketes fest. Das fertige Source und auch Binary Paket enthält bereits die ganzen Treiber aus media_tree und es muss nichts mehr aus dem iNet geladen werden, wenn man das DKMS installiert.
Auch wenn ich oben dddvb-linux-kernel erwähnt habe, so beinhaltet das Paket alle(!) derzeit in media_tree verfügbaren Treiber und ein paar Zusätze für die DD Karten, die noch nicht in media_tree integriert wurden. media_build muss ja auf den verwendeten media_tree angepasst werden und deshalb ist die Kombination wichtig. Die derzeit erste verfügbare Kombination ist für alle Kernels bis 2.6.36 zurück fehlerfrei compilierbar!
Der normale User braucht nur das DKMS Paket aus meinem PPA zu installieren. Es ersetzt automatisch alle anderen verfügbaren DVB Treiber Pakete.
Das sind:
s2-liplianin-dkms, v4l-dvb-dkms, linux-tbs-drivers-dkms, linux-media-tbs-dkms, linux-media-dkms, media-build-experimental-dkms, dddvb-dkms
Falls irgend jemand wissen will wie das alles genau funktioniert, also wie man das DKMS aus einer media_tree und media_build Version bauen kann, bitte ich die entsprechende Doku (README_DKMS) in den entsprechenden Git Repos auf GitHub zu lesen.
Die fertigen Pakete für die Ubuntu LTS Pakete sind in meinem PPA zu finden:
https://launchpad.net/~jasmin-jessic…edia-build-dkms
Zur Installation sind diese Schritte erforderlich:
add-apt-repository ppa:jasmin-jessich/media-build-dkms
apt-get update
apt-get install media-build-dkms
Nicht wundern, das compilieren und installieren der Module dauert wirklich lange! Es wird auch versucht die vorhandenen CPU-Cores ans Limit zu fahren, aber auf meinem Single Core AMD Sempron dauert das doch über eine Stunde.
Man darf nicht vergessen, dass für Kernel 3.13 616 Module gebaut werden und für Kernel 4.12 sind es noch mehr.
Nach der Installation sollte man rebooten, weil alle DVB Module getauscht werden und ev. noch in Verwendung befindliche Module nicht automatisch entladen werden.
Es wird mit diesem DKMS keine Firmware installiert!
Wenn man DVB Karten hat die eine Firmware benötigen, so muss man diese über andere Pakete installieren!
Ein "dkms uninstall media-build ..." dauert sehr sehr lange. Das bekommt man dann zu spüren, wenn man einen älteren Kernel deinstalliert, für den irgendwann die Module gebaut wurden. Vielleicht finde ich dafür ja noch eine Lösung.
ACHTUNG:
Man benötigt eine DKMS Version, die das "POST_BUILD" Macro unterstützt!
Siehe DKMS Git (https://github.com/dell/dkms)
Commit 8653e9f44145bbf von
Darik Horn am 27. Feb. 2012
Add POST_BUILD to the dkms_conf_variables list.
Die derzeit in yaVDR stable verfügbaren Version kann das nicht!
Man muss das Ubuntu Paket über das yaVDR Paket installieren (downgraden) und danach das update desselben verhindern
Ich würde die yaVDR Maintainer bitten auf eine neuere DKMS Version umzusteigen oder das Paket ganz aus dem Repo zu entfernen.
Wenn die yaVDR Maintainer dieses Problem gelöst habe, kann man das Updaten des Pakets wieder erlauben
Für die noch ältere Ubuntu Version Precise, muss man angehängten Patch auf das installierte dkms Script anwenden. Das muss aber als root gemacht werden!
Angehängten Patch nach "/tmp/dkms.patch" speichern und mit folgenden Kommandos anwenden:
Wo findet man die Sourcen:
Die Scripte um Ubuntu/Debian Pakete zu bauen:
https://github.com/jasmin-j/media-build-dkms
Die DKMS Variante von media_build:
https://github.com/jasmin-j/media_build/tree/dkms-master
bzw. https://github.com/jasmin-j/media…003-08_Sep_2017
Die im DKMS verwendete media_tree Variante:
https://github.com/jasmin-j/dddvb…master-ddbridge
bzw. https://github.com/jasmin-j/dddvb…003-29_Aug_2017
Die Versionen von dddvb-linux-kernel für die DKMS Pakete werden immer auf einem Branch "dkms/????-" abgelegt. Selbiges gilt auch für die Versionen von media_build. Der Ursprung aller dkms Branches in media_build ist aber dkms-master.
Warum es Branches für die einzelnen DKMS Versionen gibt steht in README_DKMS.
Insiderwissen für Interessierte:
Die Problematik an der ganzen Geschichte war DKMS zu überlisten eine beliebige Anzahl von Modulen zu installieren. Das deshalb, weil media-build abhängig von der Kernel Version verschieden viele Kernel Module erzeugt. Normalerweise würde man in dkms.conf jedes einzelne Kernel Modul aufzählen, das funktioniert nur bei media-build nicht, weil eben die Anzahl der Module von der Kernel Version abhängt.
Der Trick ist mit einem POST_BUILD Script (gen_dkms_dyn_conf.sh) die erzeugten Module nach dem Build Step zu finden und dkms.conf entsprechend zu ändern. Um genauer zu sein, es wird eine Datei dkms_dyn.conf generiert, welche von dkms.conf includiert wird, wenn sie existiert. Außerdem müssen die compilierten Kernel Module auch noch von einem Script in das module Verzeichnis kopiert werden, weil DKMS das in dem Fall nicht automatisch tut.
Beim install Step von DKMS existiert das File dkms_dyn.conf dann und DKMS installiert schön brav alle Module die in dkms_dyn.conf stehen. Das ist auch die Erklärung warum eine DKMS Version mit POST_BUILD Support gebraucht wird.
LG,
Jasmin
Updates (2017-Sep-10):
lirc_serial wurde auf serial_ir umbenannt. Es muss also die Lirc Konfiguration angepasst werden.
Siehe hierzu den Beitrag von Paulaner.
Updates (2017-Dez-28):
Vor der Installation solltest ihr unbedingt alle nicht mehr benötigten Kernel Versionen entfernen, weil das DKMS für jede installierte Kernel Version gebaut wird und das wirklich Stunden braucht!
Und das De-Installieren braucht ohne dem DKMS Speed Patch extrem lange!