Nur mal so ganz unbedarft nachgefragt: Ist es für Euch keine Option, 'n Versuch zu starten, den Treiber in Mainline zu pushen?
Treiber für die TechnoTrend Premium S2-6400 lässt sich unter Fedora 24 mit Kernel 4.6.x nicht kompilieren
-
-
+1 Bitte den kompletten Patch von S:oren nach Mainline. Sehr gute Idee.
-
Ich bin ja dabei. Dem aufmerksamen Leser wird nicht entgangen sein, dass ich diesen Patch im Gegensatz zu allen Vorgaengern in git- und nicht hg-Format gepostet habe...
Gruss,
S:oren -
Beim Kompilieren auf dem Kernel 4.15.3 mit gcc (GCC) 7.3.1 bekomme ich nun folgende Fehlermeldung:
gibt dazu schon eine Abhilfe ?
Code
Alles anzeigen[root@fc27 saa716x]# make make -C /lib/modules/4.15.3-300.fc27.x86_64/build -I/usr/include/linux M=/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x modules make[1]: Entering directory '/usr/src/kernels/4.15.3-300.fc27.x86_64' CC [M] /usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff_ir.o /usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff_ir.c: In function 'saa716x_ir_init': /usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff_ir.c:207:2: error: implicit declaration of function 'init_timer'; did you mean 'init_timers'? [-Werror=implicit-function-declaration] init_timer(&ir->keyup_timer); ^~~~~~~~~~ init_timers /usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff_ir.c:208:27: error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types] ir->keyup_timer.function = ir_emit_keyup; ^ /usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff_ir.c:209:17: error: 'struct timer_list' has no member named 'data' ir->keyup_timer.data = (unsigned long) ir; ^ /usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff_ir.c:241:28: error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types] input_dev->timer.function = ir_repeat_key; ^ /usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff_ir.c:242:18: error: 'struct timer_list' has no member named 'data' input_dev->timer.data = (unsigned long) ir; ^ cc1: some warnings being treated as errors make[2]: *** [scripts/Makefile.build:317: /usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff_ir.o] Error 1 make[1]: *** [Makefile:1512: _module_/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x] Error 2 make[1]: Leaving directory '/usr/src/kernels/4.15.3-300.fc27.x86_64' make: *** [Makefile:33: default] Error 2
-
Eine 4.15er Treiberversionen gibt's hier:
https://github.com/s-moch/linux-saa716x/tree/saa716x-4.15
Gruss,
S:oren
-
Eine 4.15er Treiberversionen gibt's hier:
https://github.com/s-moch/linux-saa716x/tree/saa716x-4.15
Gruss,
S:oren
Danke S:oren es hat geklappt, ich musste nur 3 Dateien (saa716x_ff_ir.c saa716x_rom.*) ersetzen.
-
Hallo,
ich bin auf den Kernel- 4.16.3-300.fc28.x86_64 umgestiegen, da ich unter Fedora28 vdr paketieren muss.
Dazu habe ich saa716x-4.16 runter geladen und das Makefile entsprechend angepasst.
Code
Alles anzeigensaa716x_core-objs := saa716x_pci.o \ saa716x_i2c.o \ saa716x_cgu.o \ saa716x_msi.o \ saa716x_dma.o \ saa716x_vip.o \ saa716x_aip.o \ saa716x_phi.o \ saa716x_boot.o \ saa716x_fgpi.o \ saa716x_adap.o \ saa716x_gpio.o \ saa716x_greg.o \ saa716x_rom.o \ saa716x_spi.o saa716x_ff-objs := saa716x_ff_main.o \ saa716x_ff_cmd.o \ saa716x_ff_ir.o \ saa716x_ff_phi.o #obj-$(CONFIG_SAA716X_CORE) += saa716x_core.o #obj-$(CONFIG_DVB_SAA716X_BUDGET) += saa716x_budget.o #obj-$(CONFIG_DVB_SAA716X_HYBRID) += saa716x_hybrid.o #obj-$(CONFIG_DVB_SAA716X_FF) += saa716x_ff.o obj-m := saa716x_core.o obj-m += saa716x_budget.o obj-m += saa716x_hybrid.o obj-m += saa716x_ff.o KDIR := /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) EXTRA_CFLAGS = -Idrivers/media/dvb/dvb-core/ -Idrivers/media/dvb/frontends/ -Idrivers/media/dvb-core/ -Idrivers/media/dvb-frontends/ -Idrivers/media/tuners default: $(MAKE) -C $(KDIR) -I/usr/include/linux M=$(PWD) modules
Die Fedora spezifischen Header-Dateien kopiere ich wie gewohnt nach /usr/include/linux
Code
Alles anzeigencp ./kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/include/media/demux.h /usr/include/linux cp ./kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/include/media/dmxdev.h /usr/include/linux cp ./kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/include/media/dvb_demux.h /usr/include/linux cp ./kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/include/media/dvbdev.h /usr/include/linux cp ./kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/include/media/dvb_frontend.h /usr/include/linux cp ./kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/include/media/dvb_math.h /usr/include/linux cp ./kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/include/media/dvb_net.h /usr/include/linux cp ./kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/include/media/dvb_ringbuffer.h /usr/include/linux cp ./kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/drivers/media/pci/ttpci/dvb_filter.h /usr/include/linux cp ./kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/drivers/media/dvb-frontends/isl6423.h /usr/include/linux cp ./kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/drivers/media/dvb-frontends/mb86a16.h /usr/include/linux cp ./kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/drivers/media/dvb-frontends/stv090x.h /usr/include/linux cp ./kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/drivers/media/dvb-frontends/stv6110.h /usr/include/linux cp ./kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/drivers/media/dvb-frontends/stv6110x.h /usr/include/linux cp ./kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/drivers/media/dvb-frontends/tda1004x.h /usr/include/linux cp ./kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/drivers/media/tuners/tda18271.h /usr/include/linux cp ./kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/drivers/media/tuners/tda827x.h /usr/include/linux cp ./kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/drivers/media/tuners/tda8290.h /usr/include/linux cp ./kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/drivers/media/dvb-frontends/zl10353.h /usr/include/linux
Beim Kompilieren bekomme ich die folgende Fehlermeldung:
Zitat[root@fc28 saa716x]# make
make -C /lib/modules/4.16.3-300.fc28.x86_64/build -I/usr/include/linux M=/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x modules
make[1]: Entering directory '/usr/src/kernels/4.16.3-300.fc28.x86_64'
CC [M] /usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_budget.o
/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_budget.c:36:10: fatal error: mb86a16.h: No such file or directory
#include "mb86a16.h"
^~~~~~~~~~~
compilation terminated.
make[2]: *** [scripts/Makefile.build:331: /usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_budget.o] Error 1
make[1]: *** [Makefile:1565: _module_/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x] Error 2
make[1]: Leaving directory '/usr/src/kernels/4.16.3-300.fc28.x86_64'
make: *** [Makefile:38: default] Error 2
Die Header-Datei existiert aber:
ll /usr/include/linux/mb86a16.h
-rw-r--r-- 1 root root 2315 20. Apr 13:43 /usr/include/linux/mb86a16.h
Hat jemand eine Abhilfe hier ? -
Die Header-Datei existiert aber:
ll /usr/include/linux/stv6110x.h-rw-r--r-- 1 root root 2315 20. Apr 13:43 /usr/include/linux/stv6110x.h
Das mag schon sein.
Wer lesen kann, ist klar im Vorteil.
Zitat/saa716x_budget.c:36:10: fatal error: mb86a16.h: No such file or directory
Gruß
kamel5
-
Habe mich nochmals in meiner obigen Fehlermeldung korrigiert, es bleibt bei diesem Fehler.
-
Dann ist die Datei nicht im Suchpfad beim Übersetzen.
In saa716x_budget.c ab Zeile 36 steht doch
#include "mb86a16.h"
#include "stv6110x.h"
#include "stv090x.h"
Dann kopiere doch die fehlenden Dateien mal in den Ordner wo die saa716x* Dateien stehen oder schreibe bei den #include den gesamten Pfad mit rein oder schreibe das mal so:
#include <linux/mb86a16.h>
Gruß
kamel5
-
habe jetzt die Dateien
kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/drivers/media/dvb-frontends/mb86a16.h
kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/drivers/media/dvb-frontends/stv6110x.h
kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/drivers/media/dvb-frontends/stv090x.h
kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/drivers/media/dvb-frontends/zl10353.h
kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/drivers/media/dvb-frontends/tda1004x.h
kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/drivers/media/tuners/tda827x.h
kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/drivers/media/tuners/tda8290.h
kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/drivers/media/tuners/tda18271.h
kernel-4.16.fc28/linux-4.16.3-300.fc28.x86_64/drivers/drivers/media/dvb-frontends/isl6423.h
nach /usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x kopiert
und erhalte nun diese Fehlermeldungen:
Zitat[root@fc28 saa716x]# make
make -C /lib/modules/4.16.3-300.fc28.x86_64/build -I/usr/include/linux M=/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x modules
make[1]: Entering directory '/usr/src/kernels/4.16.3-300.fc28.x86_64'
CC [M] /usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_hybrid.o
/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_hybrid.o: warning: objtool: saa716x_averh88_frontend_attach()+0x12: sibling call from callable instruction with modified stack frame
/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_hybrid.o: warning: objtool: saa716x_averhc82_frontend_attach()+0x12: sibling call from callable instruction with modified stack frame
/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_hybrid.o: warning: objtool: saa716x_vp6090_frontend_attach()+0x1b: sibling call from callable instruction with modified stack frame
/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_hybrid.o: warning: objtool: saa716x_nemo_frontend_attach()+0x1e: sibling call from callable instruction with modified stack frame
/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_hybrid.o: warning: objtool: saa716x_atlantis_frontend_attach()+0x161: sibling call from callable instruction with modified stack frame
/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_hybrid.o: warning: objtool: saa716x_hybrid_pci_probe()+0x26: sibling call from callable instruction with modified stack frame
/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_hybrid.o: warning: objtool: demux_worker()+0x92: sibling call from callable instruction with modified stack frame
/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_hybrid.o: warning: objtool: saa716x_hybrid_pci_irq()+0x10: sibling call from callable instruction with modified stack frame
/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_hybrid.o: warning: objtool: demux_worker.cold.11()+0x16: sibling call from callable instruction with modified stack frame
CC [M] /usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff_main.o
In file included from /usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff_main.c:46:
/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff_cmd.h:6:7: error: unknown type name 'osd_raw_cmd_t'; did you mean 'osd_cmd_t'?
osd_raw_cmd_t * cmd);
^~~~~~~~~~~~~
osd_cmd_t
/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff_cmd.h:8:11: error: unknown type name 'osd_raw_cmd_t'; did you mean 'osd_cmd_t'?
osd_raw_cmd_t * cmd);
^~~~~~~~~~~~~
osd_cmd_t
/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff_cmd.h:10:8: error: unknown type name 'osd_raw_data_t'; did you mean 'sk_buff_data_t'?
osd_raw_data_t * data);
^~~~~~~~~~~~~~
sk_buff_data_t
/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff_main.c: In function 'dvb_osd_ioctl':
/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff_main.c:347:13: error: 'OSD_RAW_CMD' undeclared (first use in this function); did you mean 'OSD_SEND_CMD'?
if (cmd == OSD_RAW_CMD) {
^~~~~~~~~~~
OSD_SEND_CMD
/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff_main.c:347:13: note: each undeclared identifier is reported only once for each function it appears in
/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff_main.c:348:3: error: unknown type name 'osd_raw_cmd_t'; did you mean 'osd_cmd_t'?
osd_raw_cmd_t raw_cmd;
^~~~~~~~~~~~~
osd_cmd_t
/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff_main.c:356:49: error: request for member 'cmd_data' in something not a structure or union
if (copy_from_user(hdr, (void __user *)raw_cmd.cmd_data, 4))
^
/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff_main.c:360:10: error: implicit declaration of function 'sti7109_raw_osd_cmd' [-Werror=implicit-function-declaration]
err = sti7109_raw_osd_cmd(sti7109, &raw_cmd);
^~~~~~~~~~~~~~~~~~~
/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff_main.c:362:10: error: implicit declaration of function 'sti7109_raw_cmd'; did you mean 'sti7109_cmd_init'? [-Werror=implicit-function-declaration]
err = sti7109_raw_cmd(sti7109, &raw_cmd);
^~~~~~~~~~~~~~~
sti7109_cmd_init
/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff_main.c:370:18: error: 'OSD_RAW_DATA' undeclared (first use in this function); did you mean 'TCA_STAB_DATA'?
else if (cmd == OSD_RAW_DATA) {
^~~~~~~~~~~~
TCA_STAB_DATA
/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff_main.c:371:3: error: unknown type name 'osd_raw_data_t'; did you mean 'sk_buff_data_t'?
osd_raw_data_t raw_data;
^~~~~~~~~~~~~~
sk_buff_data_t
/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff_main.c:378:9: error: implicit declaration of function 'sti7109_raw_data'; did you mean 'sti7109_cmd_init'? [-Werror=implicit-function-declaration]
err = sti7109_raw_data(sti7109, &raw_data);
^~~~~~~~~~~~~~~~
sti7109_cmd_init
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:325: /usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff_main.o] Error 1
make[1]: *** [Makefile:1565: _module_/usr/local/src/powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x] Error 2
make[1]: Leaving directory '/usr/src/kernels/4.16.3-300.fc28.x86_64'
make: *** [Makefile:38: default] Error 2
-
Wie hast Du denn das unter Fedora 27 kompiliert. Da wäre es ja dann auch schon nicht gegangen.
Fedora 28 habe ich noch nicht, aber bei mir ist zusätzlich noch folgender Patch aktiv:
Diff
Alles anzeigen--- saa716x.4.15.ori/saa716x_ff.h 2018-01-29 17:34:48.000000000 +0100 +++ saa716x/saa716x_ff.h 2018-02-07 14:05:14.824558247 +0100 @@ -184,4 +185,22 @@ u32 fw_version; }; +#if !defined OSD_RAW_CMD +typedef struct osd_raw_cmd_s { + const void __user *cmd_data; + int cmd_len; + void __user *result_data; + int result_len; +} osd_raw_cmd_t; + +typedef struct osd_raw_data_s { + const void __user *data_buffer; + int data_length; + int data_handle; +} osd_raw_data_t; + +#define OSD_RAW_CMD _IOWR('o', 162, osd_raw_cmd_t) +#define OSD_RAW_DATA _IOWR('o', 163, osd_raw_data_t) +#endif + #endif /* __SAA716x_FF_H */
Gruß
kamel5
-
Mit Fedora27 war die Vorgehensweise wie hier beschrieben.
Für Fedora28 habe ich diesen Zweig genommen:
https://github.com/s-moch/linu…vers/media/common/saa716x
hier fehlt aber in der Header-Datei saa716x_ff.h die Typendefinition für osd_raw_cmd_s
daher habe ich die saa716x_ff.h aus dem Verzeichnis mit dem ich Fedora27 kompiliert habe, kopiert.
Nun lässt sich der Treiber auch wieder kompilieren.
Code
Alles anzeigen+#if !defined OSD_RAW_CMD +typedef struct osd_raw_cmd_s { + const void __user *cmd_data; + int cmd_len; + void __user *result_data; + int result_len; +} osd_raw_cmd_t; + +typedef struct osd_raw_data_s { + const void __user *data_buffer; + int data_length; + int data_handle; +} osd_raw_data_t; + +#define OSD_RAW_CMD _IOWR('o', 162, osd_raw_cmd_t) +#define OSD_RAW_DATA _IOWR('o', 163, osd_raw_data_t) +#endif +
Gibt es hierzu ein klare Vorgehensweise, oder muss da immer was angepasst werden ?
-
Hab ich das jetzt richtig gelesen:
Ihr nehmt den powarman-hg-Treiber, dann irgendwas aus meinem Repo, mixt das in einen irgendwie komischen Vendor-Kernel und wundert euch, wenn nichts zusammen passt?
Bei linux-4.16 wurden die dvb-include-files verschoben, wie man leicht aus dem letzten Commit entnehmen kann. Da muss natuerlich auch der Patch fuer die osd.h auf die verschobene Datei angewendet werden. Deshalb gibt es ja die diversen Branches in meinem Repository, nicht nur immer mal einen Patch zusaetzlich.
Also: entweder nimmt man den entsprechenden Branch aus meinem Repo direkt, oder erzeugt damit ein diff zu dem entsprechenden vanilla-Kernel und wendet diesen Gesamt-Patch dann auf seinen bevorzugten Vendor-Kernel an. Alles andere ist in meinen Augen Unfug. Natuerlich darf jeder auch Dateien von Hand hin und her kopieren, Zeit verplempern und sich dann wundern, warum nichts kompiliert...
Gruss,
S:oren
-
Hallo S:oren,
so schlimm, wie es hier scheint, ist es nicht. Natürlich nehme ich die Dinge aus Deinem Repo. Allerdings übersetzte ich den Kernel immer out-of-tree, ich will ja nicht bei jedem Kernelupdate den ganzen Kernel neu übersetzen.
Das eigentliche Problem unter Fedora ist, das nicht alle Header-Files, die zum Übersetzen notwendig sind, in den Kernel-devel-Packages vorhanden sind. Man muss die sich also bei jedem Kernel-Update Fedora-spezifisch neu besorgen. Leider wendet Fedora gegenüber dem vanilla-Kernel doch recht viele zusätzliche Patche an, und man muss dann schauen, das das immer alles passt.
In welchem Verzeichnis die fehlenden Headerfiles dann landen, ist dann ja erst einmal egal, wenn sie beim Übersetzen gefunden werden.
Das mit dem Patch oben ist auch so ein Ding. Hier müsste ich jedes mal die osd.h im Kernel-tree patchen, also habe ich es da untergebracht, wo es längerfristig Bestand hat.
Also Alles Gut und der Aufwand ist für mich auch überschaubar.
Gruß
kamel5
-
Naja, viele Wege fuehren nach Rom, und "There's more than one way to do it" (nicht nur in Perl) .
Warum nicht einfach die kompletten Fedora-Kernel-Sourcen holen, den o.g. Komplettpatch darauf anwenden, Fedora-Config hinlegen, dann ein 'make localyesconfig', 'make menuconfig' -> diesen Treiber als Modul aktivieren, 'make -j4 modules; make modules_install'? Vorbereitungsaufwand 2 Minuten, Compileaufwand ein paar Sekunden, immer alles aktuell und passend. Oder was klappt da bei Fedora wieder nicht?
Gruss,
S:oren
-
Du hast natürlich recht. So geht es sicher auch. Vor vielen Jahren habe ich schon mal fleissig Kernel kompiliert, da hat das noch ewig gedauert. Wo das dann nicht mehr nötig war, habe ich das aus meinem Gehirn gestrichen...
Ich weiss, Du meinst nur die Module übersetzen, alles Andere dauert ja immer noch.
Wenn dann die 4.16 offiziell bei Fedora verfügbar ist, werde ich das mal testen. Mal sehen, wie sich das macht.
Gruß
kamel5
-
Durch das localyesconfig wird ja fast nichts mehr als Modul konfiguriert, es gibt evt. ganz wenige Ausnahmen. Das anschliessende 'make modules' hat dann quasi nichts mehr zu tun und baut fast nur den vorher von Hand als Modul aktivierten Treiber.
Wenn's wirklich ausserhalb des Kernels gebaut werden soll: jasminj hatte angeboten, den Treiber in ihr media-build aufzunehmen, wenn jemand ganz lieb bittet. Vielleicht steht das Angebot noch.
Gruss,
S:oren
-
Ja, media-build ist auch so ein Stichwort. Mit dem alten media-build-experimetal hatte ich auch schon verschiedene Erfahrungen, sehr durchwachsen.
Den media-build vom jasminj habe ich bisher noch nicht weiter verfolgt. Die Frage ist halt immer, wie zeitnah da die Unterstützung für aktuelle Kernel einfliesst. Ausserdem muss meine 2.TV-Karte, die mittlerweile direkt vom Kernel unterstützt wird, auch weiterhin funktionieren.
Um nochmal auf Fedora zurück zu kommen. Man könnte sich halt fragen, warum Fedora, ja das ist historisch bedingt und woran man sich gewöhnt hat ...
Bei Fedora ist es so, das man da immer sehr nahe am aktuellen Kernel ist. Meist bekommt man in der Distribution mit dem Minor-Release 2 einen aktuellen Kernel. D.h. der Kernel 4.16.2 wird sicherlich demnächst ausgeliefert.
Und dann gibt es meist wöchentlich eines neues Minor-Release.
Der zeitliche Aufwand sollte also minimal sein um meine Hardware am Leben zu erhalten.
Im Moment, mit der aktuellen Lösung, sieht es so aus, das mein build-script für die TT6400-Treiber fertig ist, wenn bei einem Kernel-Update das zfs-dkms fertig ist. Also keinerlei Zeitverzug.
Einen zusätzliche Aufwand habe ich in der Regel nur wenn ein Major-Release Wechsel, wie jetzt von 4.15 auf 4.16, ansteht. Dann muss ich einmalig die Header-Dateien updaten und schauen, was sich ggfls. im Repo getan hat. Also so ca. 4x im Jahr.
Ich bin sicherlich für jede Verbesserung offen, eine alternative Vorgehensweise muss sich aber daran messen.
Nachdem ich nochmal über den Ansatz mit den Kernel-sourcen nachgedacht habe, auch hier nochmal ein Beispiel wie es ablaufen würde:
Bei Fedora bekommt man keine fertigen Kernel-sourcen. Man bekommt ein Sourcepaket, das den vanilla-Kernel und eine Patch-Sammlung plus ein Buildscript für rpmbuild enthält. Man muss sich also als ersten Schritt die aktuellen Fedora-Kernelsourcen erstellen und danach kann dann alles weitere erfolgen und das bei jedem Kernelupdate...
Am liebsten wäre es mir, ich hätte ein dkms-Paket nur für die TT6400-Treiber. Ich weiss jetzt nicht, ob es schon so was gibt, das auch immer den aktuellen Kernel zeitnah unterstützt. Alles Andere am System sollte dabei unverändert bleiben. Dann würde sich für mich der Aufwand auf 4x pro Jahr Header-Update und Repo-sync beschränken. Die Minor-Release-Updates könnten dann automatisch erfolgen.
Gruß
kamel5
-
So, ich habe gerade gesehen, das die Sourcen für den Fedora-Kernel 4.16.3 (ist diesmal der Erste 4.16) im Testing-Repo stehen und habe das mal testweise durchgespielt.
Naja, es ist etwas mehr Aufwand, wenn ich es aber noch vernünftig in ein Script bekomme, doch überschaubar.
Den Gesamtpatch habe ich erst einmal aus einem localen git-clone erstellt. Lieber wäre es mir, den Patch aus Deinem git remote zu erstellen. Da fehlt mir aber noch der entscheidende Hinweis. Soweit bin ich schon mal gekommen:
https://github.com/torvalds/li…f=split&name=saa716x-4.16
Wie bekomme ich den da nun einen Patch draus?
Gruß
kamel5
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!