kernel-2.6.20-rc7-rt3 mit nvidia 1.0.8776-4

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
goecke
Beiträge: 289
Registriert: 12.01.2007 11:57:27

kernel-2.6.20-rc7-rt3 mit nvidia 1.0.8776-4

Beitrag von goecke » 02.02.2007 13:27:02

Hallo,

hat schon jemand den kernel-2.6.20-rc7 ( mit Realtime-Patch http://people.redhat.com/mingo/realtime-preempt/ rt-3 )
und nvidia-kernel-source 1.0.8776-4 (aus SID) zum kompilieren bekommen ?

ich habe merkwürdigerweise "Processor type and features/ Paravirtualization support" aktivieren
müssen, damit der Kernel selbst kompiliert.

den Kernel habe ich unter /usr/src/
liegen und dort auch die Datei "nvidia-kernel-source.tgz" entpackt, so
dass im Verzeichnis "/usr/src/modules/nvidia-kernel/" die
entsprechenden sourcen liegen.

bei

Code: Alles auswählen

make-kpkg kernel-image modules-image
kommt nach der erfolgreichen kernel-kompilierung die Fehlermeldung von NVIDIA

Code: Alles auswählen

make CC=gcc-4.1 -C /usr/src/linux-2.6.20-rc7-rt3 SUBDIRS=/usr/src/modules/nvidia-kernel/nv modules
make[4]: Entering directory `/usr/src/linux-2.6.20-rc7-rt3'
  CC [M]  /usr/src/modules/nvidia-kernel/nv/nv.o
In file included from include/linux/list.h:8,
                 from include/linux/plist.h:77,
                 from include/linux/rtmutex.h:16,
                 from include/linux/rt_lock.h:13,
                 from include/linux/spinlock.h:116,
                 from include/linux/capability.h:45,
                 from include/linux/sched.h:46,
                 from include/linux/utsname.h:35,
                 from /usr/src/modules/nvidia-kernel/nv/nv-linux.h:19,
                 from /usr/src/modules/nvidia-kernel/nv/nv.c:14:
include/linux/prefetch.h: In function 'prefetch_range':
include/linux/prefetch.h:62: warning: pointer of type 'void *' used in arithmetic
/usr/src/modules/nvidia-kernel/nv/nv.c: At top level:
/usr/src/modules/nvidia-kernel/nv/nv.c:102: warning: 'kmem_cache_t' is deprecated
/usr/src/modules/nvidia-kernel/nv/nv.c: In function 'nv_kern_open':
/usr/src/modules/nvidia-kernel/nv/nv.c:1809: error: 'SA_INTERRUPT' undeclared (first use in this function)
/usr/src/modules/nvidia-kernel/nv/nv.c:1809: error: (Each undeclared identifier is reported only once
/usr/src/modules/nvidia-kernel/nv/nv.c:1809: error: for each function it appears in.)
/usr/src/modules/nvidia-kernel/nv/nv.c:1809: error: 'SA_SHIRQ' undeclared (first use in this function)
make[5]: *** [/usr/src/modules/nvidia-kernel/nv/nv.o] Fehler 1
make[4]: *** [_module_/usr/src/modules/nvidia-kernel/nv] Fehler 2
in http://www.debianforum.de/forum/viewtop ... 697#491140
hat gms erwähnt, dass man CONFIG_HIGHPTE ausschalten soll.

in meiner Config http://nopaste.debianforum.de/5016 ist es auch nicht definiert.

dann habe ich wie im thread
http://www.nvnews.net/vbulletin/showthread.php?t=85107
erwähnt in nv.c

Code: Alles auswählen

"SA_INTERRUPT | SA_SHIRQ"  
durch

Code: Alles auswählen

"IRQF_DISABLED | IRQF_SHARED"
ersetzt.

und weiter gehts: jetzt meckert er

Code: Alles auswählen

  LD [M]  /usr/src/modules/nvidia-kernel/nv/nvidia.o
  Building modules, stage 2.
  MODPOST 1 modules
FATAL: modpost: GPL-incompatible module nVidia.ko uses GPL-only symbol 'paravirt_ops'
make[5]: *** [__modpost] Fehler 1
(auch wenn ich den aktuellen 1.0-9746 - Treiber direkt von nVidia mit og. Patch einsetzte
kommt derselbe Fehhler).

Sind die nVidia-Treiber jetzt mit dem GPL-Fluch belegt, oder kann man sie noch kompilieren?

fragend
Johannes

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 02.02.2007 13:36:50

nein NVIDIA kann eigentlich nichts für dieses Problem. Genaueres und zwei Lösungsmöglichkeiten habe ich hier aufgezeigt: http://www.debianforum.de/forum/viewtop ... highlight=

Oops, das hast du ja schon versucht, habe ich übersehen

[edit]
habe hier "pagefault_disable" in "paravirt_ops" geändert:

Einfachste Lösung das EXPORT_SYMBOL_GPL(paravirt_ops) in EXPORT_SYMBOL(paravirt_ops) umbenennen.
[/edit]

Gruß
gms

goecke
Beiträge: 289
Registriert: 12.01.2007 11:57:27

Beitrag von goecke » 02.02.2007 14:01:38

Ja, so gehts.

fürs Protokoll :

in arch/i386/kernel/paravirt.c das EXPORT_SYMBOL* editiert- und es kompiliert.

Ob's funktioniert kann ich erst heute abend testen.

Bleibt nur zu hoffen, daß irgendwann das Lizenz-Hick-Hack
zu einem positiven Ende führt - Kernel Patchen, um
den Grafiktreiber verwenden zu können - ist ... gewöhnungsbedürftig.

gruss
Johannes

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 02.02.2007 15:17:19

goecke hat geschrieben:leibt nur zu hoffen, daß irgendwann das Lizenz-Hick-Hack
zu einem positiven Ende führt - Kernel Patchen, um
den Grafiktreiber verwenden zu können - ist ... gewöhnungsbedürftig.
Du nimmst dir den neuesten Kernel-Patch ( rc7 ), spielst dort den Realtime-Preempt Patch ein, verwendest (oder konfigurierst zumindest) die neuesten Features ( CONFIG_PARAVIRT ) und möchtest auch noch, daß dies dann ohne zusätzlichen Patchaufwand mit einem properitären (closed-source) Graphiktreiber funktioniert :)
Vergiß nicht, du bist hier quasi ein Beta-Tester :wink:

Diese Fehler wurden übrigens nicht duch ein Lizenz-Hick-Hack ausgelöst..
Der Realtime-Patch hält sich beim Export immer an das Original, nur war im Original das "pagefault_disable" als inline Funktion ( die kein Export benötigt ) deklariert und darf daher auch von "nicht GPL" Treibern verwendet werden.
Beim neuen Problem mit "paravirt-ops", steht die Intention dahinter sogar im "paravirt.c" drinnen:
[
Dieses Symbol wird auch sicherlich nicht direkt vom nvidia-Treiber angesprochen, sondern indirekt über ein Macro (und möglicherweise auch nur, weil der Realtime-Patch eingespielt wurde, bzw weil CONFIG_PARAVIRT gesetzt ist).

Gruß
gms

goecke
Beiträge: 289
Registriert: 12.01.2007 11:57:27

Beitrag von goecke » 02.02.2007 15:51:03

Ich wollte doch "nur" einen aktuellen Realtime-Kernel, und dachte dass der ReleaseCandidate7 schon
"fast fertig" ist - nur scheine ich gerade an dem "fast" das Problem gehabt zu haben ;-) .

Ich will ja weder den "CONFIG_PARAVIRT", noch dass der nVidia-Treiber ClosedSource ist ;-)

Ich vermeide meist was als "Experimental" im Kernel markiert ist (eben genau wegen dem "sematics are subject to change" ).
Nur lies sich der Kernel mit meiner Config (http://nopaste.debianforum.de/5016) ohne diese Option nicht übersetzten - möglicherweise ist da noch ein Fehler / Problem drin, ich habs aber noch nicht gefunden.

Den nvidia-Treiber "will" ich ja auch nicht kompilieren, muss es aber für den aktuellen Realtime-Kernel (und nach meinem Verständnis hat genau das ja mit dem Lizenz Open <-> Closed Source Problem zu tun).

Gruß
Johannes

Benutzeravatar
shutdown
Beiträge: 2
Registriert: 10.02.2007 14:38:42

Re: kernel-2.6.20-rc7-rt3 mit nvidia 1.0.8776-4

Beitrag von shutdown » 10.02.2007 14:49:44

Hier mal eine kleine Anleitung für alle die sich hier die Zähne ausbeißen:

1. Kernel 2.6.20 und realtime-preempt-Patch 2.6.20-rt3 beschaffen (-rt5 startet auf meinem System nichtmal, der Monitor bleibt nach dem Bootloader schwarz...rt3 läuft problemlos)
Kernel patchen usw...
goecke hat geschrieben:ich habe merkwürdigerweise "Processor type and features/ Paravirtualization support" aktivieren
müssen, damit der Kernel selbst kompiliert.
Paravirtualisierung weglassen, gibt nur Probleme! Der 2.6.20 (kein -rc) sollte ohne zu meckern kompilieren (bei mir tat ers jedenfalls auch ohne)

2. nVidia-Treiber 1.0-9746 runterladen und mit -x entpacken.
Den Patch für Xen/Realtime-Preemption von hier einspielen: http://www.nvnews.net/vbulletin/showthread.php?t=77597 (1. Post)
Ist zwar für 1.0-9625, lässt sich aber ohne Fehler reinpatchen.
In der nv.c "SA_INTERRUPT | SA_SHIRQ" durch "IRQF_DISABLED | IRQF_SHARED" ersetzen.

3. Neuen Kernel starten, gepatchten nVidia-Treiber installieren. Meckert beim Laden ein bisschen, tut aber:

Code: Alles auswählen

PCI: Setting latency timer of device 0000:07:00.0 to 64
NVRM: loading NVIDIA UNIX x86_64 Kernel Module  1.0-9746  Fri Dec 15 10:19:35 PST 2006
NVRM: builtin PAT support disabled, falling back to MTRRs.
**WARNING** I2C adapter driver [NVIDIA i2c adapter 0 at 7:00.0] forgot to specify physical device; fix it!
**WARNING** I2C adapter driver [NVIDIA i2c adapter 1 at 7:00.0] forgot to specify physical device; fix it!
**WARNING** I2C adapter driver [NVIDIA i2c adapter 2 at 7:00.0] forgot to specify physical device; fix it!
Läuft :D
Es handelt sich um ein AMD64 System, wie sich die Sache mit 32 Bit verhält kann ich also nicht sagen.

Shutdown

Benutzeravatar
minimike
Beiträge: 5594
Registriert: 26.03.2003 02:21:19
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: Köln
Kontaktdaten:

Beitrag von minimike » 10.02.2007 16:31:54

Das mit dem Paravirtualisierungsproblem betrübt mich. Heute starte ich ein Rechnerupgrade und endlich wurde nix von Intel gekauft mit dem ich seit Jahren unzufrieden bin.

Komponenten

Asus M2N-VM DH
4 GB Ram
Athlon64 X2 4600+

Hauptgrund für den Kauf war die fehlenden Befehlssätze auf meinen Pentuim 4 für Paravirtualisierung und SSE3. Nebenbei konnte ich das System nie übertakten weil es schon bei einigen MHZ mehr abstürzte.

Jetzt hat der Papa mal 850 € ausgeballert und will mit Virtualisierung spielen. Frage lässt sich was mit dem Treiber drehen so das man auch den Nvidia Treiber kompelieren kann?
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft

Benutzeravatar
shutdown
Beiträge: 2
Registriert: 10.02.2007 14:38:42

Beitrag von shutdown » 10.02.2007 17:18:59

@ minimike: Irrtum, mit nem X2 geht das trotzdem! :D

Paravirtualisierung ist Virtualisierung OHNE VTx bzw AMD-V (Vanderpool bzw Pacifica, oder einfach Hardware-Virtualisierung). Paravirtualisierung setzt auch vorraus, dass das Gastbetriebssystem modifiziert wird, damit kann man Windows auch nicht laufen lassen (zumindest nicht legal und ohne den Windows-Kernel zu verändern, ist gar nich so einfach...)

Wenn du einen X2 hast, hast du auch Pacifica und kannst somit den neuen KVM-Treiber verwenden. Mache ich auch, läuft auch mit -rt Kernel problemlos bei mir.
Also nicht paravirtualisieren, sondern die neuen CPU-Instruktionen auch nutzen!

Da KVM (Kernel-based Virtual Machine) noch sehr experimentell ist, empfehle ich, nich den Treiber im Kernel zu verwenden, der ist nämlich schon veraltet.
Homepage des Projektes ist kvm.sf.net , am besten ziehst du dir die aktuellste SVN-Version und installierst sie:

Code: Alles auswählen

svn checkout svn://kvm.qumranet.com/kvm/trunk kvm
cd kvm
./configure --qemu-cc="/usr/bin/gcc-3.4"
make
su
make install
modprobe kvm-amd
Du brauchst leider noch einen GCC-3.4 zum Kompilieren, da hier qemu eingesetzt wird, der ohne GCC-3.4 nicht kompilieren will (Achtung, es handelt sich um eine modifizierte qemu-Version, falls du also schon qemu drauf hast vorher runterschmeissen).
Weitere Informationen kriegst du über
- http://kvm.qumranet.com/kvmwiki/HOWTO
- man qemu
- http://www.google.de/

Als Alternative gäbe es noch Xen, ist im Moment wahrscheinlich ausgereifter und kann auch mit Pacifica arbeiten - ist aber viel komplizierter, ich selber habe auch keine Erfahrung damit.
Was VMware da im Moment kann, weiss ich gar nicht - soweit ich weiss ist VMware aber noch dumm wie Brot und kann keine Hardwarevirtualisierung nutzen, zudem ist es a) unfrei und b) verändert es dein System sehr stark, ob man das nochmal loswird weiss ich nicht...
VMware läuft dafür aber auch sehr stabil, ich habe 3 virtuelle Workstations auf einem Dual-Xeon 3.0 GHz mit VMware am Laufen, keinerlei Probleme. Fürs Produktivsystem (zB in ner Firma) also auf VMware oder evtl auch Xen zurückgreifen, fürs "Rumspielen" daheim KVM nehmen. Ist natürlich nur ne unverbindliche Empfehlung ;)

Auf http://www.nvnews.net/vbulletin/showthr ... 597&page=2 (relativ weit unten) gibt es einen neueren Patch von mir, basiert auf einem etwas älteren Patch für -rt und Xen, wurde von mir auf nvidia-1.0-9746 angepasst und auch mit der "SA_INTERRUPT ..." / "IRQF_DISABLE ..." ergänzt.
Wenn ihr mir sagt wie man hier ne Datei anhängen kann würde ich das auch hier hochladen :D

Shutdown

PS: Sack Zement, da hast dir ja ne Kiste gekauft... *sabber*
Habe selber den X2 3800+ auf nem Asus M2N-E mit 1 GB RAM, da kann ich mir vorstellen wie das Ding loszieht :)

Benutzeravatar
minimike
Beiträge: 5594
Registriert: 26.03.2003 02:21:19
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: Köln
Kontaktdaten:

Beitrag von minimike » 12.02.2007 03:24:47

Danke fuer die Tips :)

Sobald die Kiste rennt werde ich mal gucken was man alles machen kann. Bis dahin steh ich kurz davor das Ding aus dem Fenster zu werfen und danach an zu Zuenden. Haette ich bedacht wieviel Arbeit und Aerger das wieder wird haette ich die 500 Euro fuer nen P4 mit 2 GB Ram und 3,2 GHZ inkl. Zubehoer und neuen Gehaeuse dankend abgelehnt. Mittlerweile bekomme ich die Onboardgraka ohne Abstuerze mit 3D ans rennen.
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft

Benutzeravatar
NUNUKULA
Beiträge: 150
Registriert: 27.12.2004 19:43:54

Beitrag von NUNUKULA » 18.04.2007 22:59:58

Hallo,
ich klinke mich hier jetzt einfach mal ein. Also ich bin der Meinung das dieser thread mit meinem Problem zu tun hat, aber ich versteh von dem was über diesem Post steht so gut wie nur Bahnhof. :roll: :lol:

AMD Athlon(tm) 64 X2 Dual Core Processor 3800+
(Kernel):[Linux 2.6.20.7 x86_64]
uname -a

Code: Alles auswählen

Linux BOOSTER 2.6.20.7 #1 SMP PREEMPT Wed Apr 18 19:20:32 CEST 2007 x86_64 GNU/Linux
So, also den Kernel hab ich selbst compiliert, und das läuft auch soweit alles, jetzt hab ich ihn mit der gleichen .config nochmal compiliert nur mit dem
patch-2.6.20-rc7-rt3 patch. (und die config dementsprechend abgeändert)

Nach dem compilieren (und 20 luftsprüngen das das endlich mal fehlerfrei geklappt hat) bootet der kernel auch ganz normal (weitere 20 sprünge)

Will ich jetzt aber den Nvidia treiber installieren, dann bricht der installer ab.

hier mal so die letzten zeilen dessen log datei:

Code: Alles auswählen

/tmp/selfgz2593/NVIDIA-Linux-x86_64-1.0-9631-pkg2/usr/src/nv/nv.c: At top le
   vel:
   /tmp/selfgz2593/NVIDIA-Linux-x86_64-1.0-9631-pkg2/usr/src/nv/nv.c:110: warni
   ng: â&#128;&#152;kmem_cache_tâ&#128;&#153; is deprecated
   /tmp/selfgz2593/NVIDIA-Linux-x86_64-1.0-9631-pkg2/usr/src/nv/nv.c: In functi
   on â&#128;&#152;nv_kern_openâ&#128;&#153;:
   /tmp/selfgz2593/NVIDIA-Linux-x86_64-1.0-9631-pkg2/usr/src/nv/nv.c:1849: erro
   r: â&#128;&#152;SA_INTERRUPTâ&#128;&#153; undeclared (first use in this function)
   /tmp/selfgz2593/NVIDIA-Linux-x86_64-1.0-9631-pkg2/usr/src/nv/nv.c:1849: erro
   r: (Each undeclared identifier is reported only once
   /tmp/selfgz2593/NVIDIA-Linux-x86_64-1.0-9631-pkg2/usr/src/nv/nv.c:1849: erro
   r: for each function it appears in.)
   /tmp/selfgz2593/NVIDIA-Linux-x86_64-1.0-9631-pkg2/usr/src/nv/nv.c:1849: erro
   r: â&#128;&#152;SA_SHIRQâ&#128;&#153; undeclared (first use in this function)
   make[4]: *** [/tmp/selfgz2593/NVIDIA-Linux-x86_64-1.0-9631-pkg2/usr/src/nv/n
   v.o] Fehler 1
   make[3]: *** [_module_/tmp/selfgz2593/NVIDIA-Linux-x86_64-1.0-9631-pkg2/usr/
   src/nv] Fehler 2
   make[2]: *** [modules] Fehler 2
   NVIDIA: left KBUILD.
   nvidia.ko failed to build!
   make[1]: *** [module] Fehler 1
   make: *** [module] Fehler 2
-> Error.
ERROR: Unable to build the NVIDIA kernel module.
Ich hab bisher immer diesen Treiber benutzt, weil das der einzige ist der bei mir stabil zu laufen scheint.

Naja muss ich jetzt den treiber patchen? oder den kernel ? oder... irgendwo was eintragen in der .config?
kann ja sein das ich schon etwas müde bin, aber ich verstehe nix ^^
kann mir mal jemand in einfach worten unter die arme greifen ?

nunukula
- Rechtschreibfehler sind selbstverständlich beabsichtigt -

brummer
Beiträge: 181
Registriert: 19.02.2007 19:21:23

Beitrag von brummer » 20.04.2007 08:19:28

kann mir mal jemand in einfach worten unter die arme greifen ?
moin

du mußt den kernelsourcecode ein wenig editieren, wenn du diesen tread nicht verstehst, vieleicht helfen dir diese:

http://sidux.com/PNphpBB2-viewtopic-t-2234.html

http://forums.debian.net/viewtopic.php? ... a51a3384e7[/url]

4) We modify an item in paravirt.c

xedit /home/olmeda/kernel/realtime/linux-2.6.21-rc3/arch/i386/kernel/paravirt.c

Search for "EXPORT_SYMBOL_GPL(paravirt_ops)" and replace it with "EXPORT_SYMBOL(paravirt_ops)"

gruß brummer

Benutzeravatar
NUNUKULA
Beiträge: 150
Registriert: 27.12.2004 19:43:54

Beitrag von NUNUKULA » 20.04.2007 15:15:41

hey, danke für die antwort, hat sich aber doch schon erledigt, hab mir von nvidia.de einen neuen treiber geholt
NVIDIA-Linux-x86_64-1.0-9755-pkg2.run
der funktioniert ganz gut =)

bis dann
nunukula
- Rechtschreibfehler sind selbstverständlich beabsichtigt -

Antworten