• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Make und Videokarte

Scyth

Member
Hi!

Ich bin ja gerade verzweifelt - verzweifelt am installieren einer Videokarte. Für diese habe ich nach längerer Suche einen wahrscheinlich passenden Treiber gefunden. Dieser hat nur einen Nachteil: MAKE - zu der bisherigen Geschichte zwischen mir und make: ich hasse make, make hasst mich. Wann immer ich make irgendwo eintippe scheint es nur eine Antwort zu geben: Fehler. Sehr deprimierend ;)

So auch diesesmal... ich hab den letzten Ausschnitt von make zusammengefasst, damit, wie ich denke, der Fehler ersichtlich wird.

Code:
make[2]: Entering directory `/usr/src/linux-2.6.27.7-9-obj/i386/default'                      
make -C ../../../linux-2.6.27.7-9 O=/usr/src/linux-2.6.27.7-9-obj/i386/default/.              
  LD      /home/scyth/linuxtv-dvb-1.1.1/build-2.6/built-in.o                                  
  CC [M]  /home/scyth/linuxtv-dvb-1.1.1/build-2.6/dvbdev.o                                    
In file included from /home/scyth/linuxtv-dvb-1.1.1/build-2.6/dvbdev.c:33:                    
/home/scyth/linuxtv-dvb-1.1.1/build-2.6/dvbdev.h:30:35: error: linux/devfs_fs_kernel.h: Datei oder Verzeichnis nicht gefunden
/home/scyth/linuxtv-dvb-1.1.1/build-2.6/dvbdev.c: In function ‘dvb_device_open’:                                             
/home/scyth/linuxtv-dvb-1.1.1/build-2.6/dvbdev.c:90: warning: assignment discards qualifiers from pointer target type        
/home/scyth/linuxtv-dvb-1.1.1/build-2.6/dvbdev.c: In function ‘dvb_register_device’:                                         
/home/scyth/linuxtv-dvb-1.1.1/build-2.6/dvbdev.c:240: error: implicit declaration of function ‘devfs_mk_cdev’
/home/scyth/linuxtv-dvb-1.1.1/build-2.6/dvbdev.c: In function ‘dvb_unregister_device’:
/home/scyth/linuxtv-dvb-1.1.1/build-2.6/dvbdev.c:261: error: implicit declaration of function ‘devfs_remove’
/home/scyth/linuxtv-dvb-1.1.1/build-2.6/dvbdev.c: In function ‘dvb_register_adapter’:
/home/scyth/linuxtv-dvb-1.1.1/build-2.6/dvbdev.c:320: error: implicit declaration of function ‘devfs_mk_dir’
/home/scyth/linuxtv-dvb-1.1.1/build-2.6/dvbdev.c: At top level:
/home/scyth/linuxtv-dvb-1.1.1/build-2.6/dvbdev.c:384: error: expected ‘)’ before string constant
make[5]: *** [/home/scyth/linuxtv-dvb-1.1.1/build-2.6/dvbdev.o] Fehler 1
make[4]: *** [_module_/home/scyth/linuxtv-dvb-1.1.1/build-2.6] Fehler 2
make[3]: *** [sub-make] Fehler 2
make[2]: *** [all] Fehler 2
make[2]: Leaving directory `/usr/src/linux-2.6.27.7-9-obj/i386/default'
make[1]: *** [all] Fehler 2
make[1]: Leaving directory `/home/scyth/linuxtv-dvb-1.1.1/build-2.6'
make: *** [all] Fehler 2

Kann mir irgendjemand helfen? *hoff* ;)
 

whois

Ultimate Guru
Hi

Welcher Kernel da drauf ist wissen wir ja nun.

Code:
linux-2.6.27.7-9

Welche Distribution,Version,32 oder 64 Bit usw. allerdings nicht.

cu
 
OP
S

Scyth

Member
Hm. Ich verstehe, die angegebene Routine lädt wohl nur den alten Treiber. Ich habe jetzt noch genauer nachgelesen.
Ich brauche den Treiber S2API oder Multiproto. Beide liegen in den aktuellsten Versionen für den Kernel 2.6.28 vor (klar, dass ich 2.6.27 hab). Bisher konnte ich den Kernel noch nicht updaten per Yast. S2API soll anscheinend in 2.6.28 schon inkludiert sein.

Könnte es Probleme bei zukünftigen updates geben, wenn ich S2API oder Multiproto für 2.6.27 installiere?
 
OP
S

Scyth

Member
Ich habe jetzt mal eine Installationsanleitung gefunden, die funktionieren könnte.

Erster Schritt: Laden der Treiber/Firmware
Zweiter Schritt: Textdatei herunterladen; Name my_s2api_pctv452e.txt
Dritter Schritt: Kommando ausführen "patch -p1 < ../my_s2api_pctv452e.txt"

Da erhalte ich aber leider Fehler:

Code:
patching file ["Filename"]
Hunk #1 Failed at 84.
Hunk #2 Failed at 1261.
2 out of 2 hunks FAILED -- saving rejects to file linux/drivers/media/dvb/dvb-usb/pctv452e.c.rej
(Stripping triling CRs from patch.)
patching file linux/drivers/media/dvb/frontends/lnbp22.c
Reversed (or previously applied) patch detected! Assume -R? [n]

Ich habe das erste Mal versehentlich zuerst mit make gestartet, dann erst gepatcht. Dann aber ein make clean ausgeführt und es nocheinmal mit gleichen Meldungen probiert. Inzwischen habe ich den Ordner gelöscht, dann neu erstellt und die tar.gz files neu hineinkopiert bzw. entpackt und als erstes den patch durchgeführt. Obiges kommt immer noch.

Wenn ich obige Fehlerabfrage bestätige bzw. ablehne gehts weiter, teilweise erfolgreich, teilweise mit Fehler.
Make ergibt dann Fehler (ohne patch kommen keine Fehler). Lt. Installationsanleitung wäre der Patch aber notwendig.

Was nun?
 
A

Anonymous

Gast
Scyth schrieb:
Ich habe jetzt mal eine Installationsanleitung gefunden, die funktionieren könnte.
......
Wenn ich obige Fehlerabfrage bestätige bzw. ablehne gehts weiter, teilweise erfolgreich, teilweise mit Fehler.
Make ergibt dann Fehler (ohne patch kommen keine Fehler). Lt. Installationsanleitung wäre der Patch aber notwendig.

Was nun?
Gib uns mal die genauen Quellen, wo du was heruntergeladen hast. Ohne das man das mal selbst nachstellten kann und mal genau recherchieren kann, was da an dem Patch nicht passt, kann da niemand was vernünftiges sagen.

robi
 
A

Anonymous

Gast
Ich habe das jetzt mal an einem altem System mit 2.6.18- Debug Kernel ausprobiert. Welche Revision hast du denn heruntergeladen die 9263 ????? also mit Option -r 9263 ?????

Bei meinem altem System wollte mercurial keine spezielle Revision akzepieren also habe ich ohne die Option -r das aktuelle heruntergeladen. Der dort angegebene Patch brachte als erste Meldung eine der deinen vergleichbare. Der Patch hat an dieser Stelle gar nicht gepasst, weil dort an diesen Stellen das entweder schon komplett so gepacht war wie gefordert oder an einer anderen untersuchten Stelle, durch andere Patche schon komplett verändert war.

Gepacht oder ungepatcht ist er bei meinem altem Kernel zu einem ziemlich späten Zeitpunkt beim Compilieren wegen einer Macrodefinition im Kernel hängen geblieben, dort hat sich scheinbar in der Zwischenzeit was geändert.

Bei diesem Treiber tut sich hier zZ ne ganze Menge, ob das jetzt alles auch wirklich stabil sein soll oder doch nur experimentell, habe ich da allerdings auf die Schnelle keine vernünftigen Aussagen gefunden.

Beim Anwenden des patches einfach alles mit Enter bestätigen. Zumindestens in der aktuellen Version sind dort schon eine ganze Menge so gepatcht wie es in diesem Patch gemacht werden soll. Oder die aktuelle Version ( also ohne die Option -r 92...) runterladen und compilieren. Wenn Make durchläuft sollte das Ergebniss soweeit erstmal funktionieren, allerdings habe ich einiges an Konfigurationsmöglichkeiten in den Modulen gesehen und was dort noch an eventueller zusätzlicher Firmware benötigt wird - keine Ahnung.
Ist wirklich nicht das einfachste Treiberpaket. Wenn du heraufinden solltest, das es im neuem Kernel per default schon dabei sein sollte und du nicht darauf verzichten willst, dann überlege mal vorzeitig ein aktuellenen Kernel als den aus der Distribution dort einzusetzen.

robi
 
OP
S

Scyth

Member
Danke für deine äußerst ausführliche Antwort!
Ich muss zugeben, dass wir hier Neuland betreten. Ich hab' ja SUSE und sehe auf der HP von SUSE, dass der aktuellste Kernel 2.6.27 ist. Kann ich den von kernel.org in Suse problemlos kompilieren? Oder besser auf eine aktuelle Version von Suse warten?

Inzwischen versuche ich es mal ohne -r, von dem ich mir leider nicht im klaren war/bin was es denn macht ;)
 
A

Anonymous

Gast
Scyth schrieb:
Kann ich den von kernel.org in Suse problemlos kompilieren? Oder besser auf eine aktuelle Version von Suse warten?
Innerhalb einer Suseversion werden iR nur Patches als Updates angeboten. Einen solchen Kernel Upgrade wie du ihn benötigen würdest kommt also frühestens mit 11.2.
Einen aktuellen Kernel kann man sich in der Regel problemlos in das aktuelle Suse integrieren, auch wenn das bestimmt nichts für Jedermann ist, sonder immer etwas für Kenner, Könner und "Spinner" bleiben wird, Man muss sich da schon ein bischen mit der gesamten Materie beschäftigen, und der aller erste Versuch führt selten zum gewünschten Ziel. Die Unterschiede zwischen der aktuellen Kernelversion und der Kernelversion des aktuellen Suse sind nicht so extrem gravierend, das es da größere Probleme geben würde, ausgeschlossen ist es allerdings prinzipiell auch nie. Aus Ausgangsconfiguration benutzt du die derzeitige config deines jetztigen Susekernels. Der Artikel im Wiki ist nicht ganz aktuell sollte aber vom Prinzip her noch funktionieren, aber schau dich mal hier um, irgendwo ist das sicherlich schon besprochen worden.

robi
 
OP
S

Scyth

Member
Inzwischen hab ich mal ein problemloses make und insmod hinter mir. Leider scheint die Karte in Yast noch nicht unter 'TV-Karte' auf. Ich vermute, dass ich versehentlich den vorherigen Treiber per make und insmod installiert habe. den aktuellen Treiber, den ich per hg clone (ohne -r) ge'make'd habe (hat auch problemlos funktioniert) kann ich nun per insmod nicht in das entsprechende Verzeichnis stellen, da sich dort schon eine Datei gleichen Namens befindet. Darf ich diese Datei einfach per Copy/Pasty dorthin kopieren (Verzeichnisse sind mir dank locate bekannt)?
 
A

Anonymous

Gast
Scyth schrieb:
Ich vermute, dass ich versehentlich den vorherigen Treiber per make und insmod installiert habe. den aktuellen Treiber, den ich per hg clone (ohne -r) ge'make'd habe (hat auch problemlos funktioniert) kann ich nun per insmod nicht in das entsprechende Verzeichnis stellen, da sich dort schon eine Datei gleichen Namens befindet. Darf ich diese Datei einfach per Copy/Pasty dorthin kopieren (Verzeichnisse sind mir dank locate bekannt)?

Ich glaube hier läuft noch was schief, vor allem mit dem Verständiniss was du da mit welchem Befehl machst. insmod läd die Module in den Kernel, und erstellt keine Dateien in irgendwelchen Verzeichnissen. Sind gleichnamige alte Module geladen, müssen diese erstmal aus dem Kernel heraus, Befehl dazu in deinem Fall mit rmmod und zwar alle, bevor du die neuen laden kannst. Was geladen ist kannst du mit lsmod ermitteln, in deinem Falle sind aber wohl noch keine Abhängkeiten der Module untereinander für die automatischen Ladefuntkion modprobe konfiguriert.

Das Paket hat aber auch noch einige an Scripten usw mit dabei, ich glaube du solltest noch etwas in der Doku blättern.
Wenn die neuen Module dann irgendwann geladen sind, könnte Yast das als Gerät erkennen, muss aber nicht zwangsläufig so sein, manchmal muss man Yast zwingen irgendwas zu akzepieren. Das liegt daran das dieses spezielle 11.1 natürlich den Treiber so noch nicht unbedingt kennt, Yast könnte es also am Type der Karte erkennen wenn die Treiber geladen sind, muss es aber nicht zwangsläufig, dann muss ich es ihm eventuell per Hand selbst dort eingestellt werden, welcher Treiber geladen werden soll. Doch damit ist noch lange nicht Schluss, selbst damit würden die Module nicht dauerhaft und automatisch beim Start geladen. Insmod macht das nur temporär und einmalig.

Die Installation des gesammten Treibers muss also, aber erst wenn klar ist das die Treiber wirklich funktionieren, mit make install oder eines ähnlichen Befehls durchgeführt werden. Dabei wird dann auch ein depmod automatisch angestoßen das die Module für die Automatismen von Linux automatisch registriert. Zum Testen sind auch manchmal noch tests im Treiber selbst enthalten, die auch über make gestartet werden können. Wie gesagt es gehören aber noch einige Scripte und Firmware zum Paket, inwieweit diese bei dir benötigt werden, konfiguriert werden müssen usw müsstest du auch erst nachlesen.

Überstürze an dieser Stelle nichts, und ließ unbedingt in den Dokus nach. Ein falscher make Befehl hier an dieser Stelle kann dir durchaus auch mal die halbe Multimediakonfiguration des orginalen Kernels vorübergehend schrotten, an diesem Treiberpaket hängt einiges dran und hat auch einige Abhängikeiten.


robi
 
OP
S

Scyth

Member
Wow...
:schockiert:

Wie hast du das mit den Tests und Scripten in der kurzen Zeit rausgefunden?

Naja... denn werd' ich mal versuchen (neben der nicht alles erklärenden Installationsanleitung des Treibers) die Dokumentation zu finden und zu lesen...

Danke schon mal...
FALLS ich eine Lösung finden sollte, werde ich sie für andere natürlich posten.
 
Oben