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

[solved] Kernel 4.2 und NVIDIA 352.41

Lurchi

Hacker
Hallo Forum.

Nach langer Zeit OHNE Kernel-Patch und Herumgewurschtel in irgendwelchen Zeilen von Code, gibt es unerwartender Weise Probleme mit dem nvidia-Treiber und dem aktuellstem Kernel! Sprich: Das Kernelmodul lässt sich wieder einmal NICHT bauen.

Die für mich entscheidene Fehlermeldung aus /var/log ist:
Code:
FATAL: modpost: GPL-incompatible module nvidia.ko uses GPL-only symbol 'flush_workqueue'
   /usr/src/linux-4.2.0-2.gc4d41ea/scripts/Makefile.modpost:93: recipe for target '__modpost' failed
   make[3]: *** [__modpost] Error 1
   /usr/src/linux-4.2.0-2.gc4d41ea/Makefile:1410: recipe for target 'modules' failed
   make[2]: *** [modules] Error 2
   make[2]: Leaving directory '/usr/src/linux-4.2.0-2.gc4d41ea-obj/x86_64/desktop'
   Makefile:146: recipe for target 'sub-make' failed
   make[1]: *** [sub-make] Error 2
   make[1]: Leaving directory '/usr/src/linux-4.2.0-2.gc4d41ea'
   NVIDIA: left KBUILD.
   nvidia.ko failed to build!
   nvidia-modules-common.mk:245: recipe for target 'module' failed
   make: *** [module] Error 1
-> Error.
ERROR: Unable to build the NVIDIA kernel module.

Ist gibt zwar ein "passendes" workaround unter https://forums.geforce.com/default/topic/849487/linux-v4-2-uses-gpl-only-symbol-flush_workqueue-/, aber ich weiß nicht, wo ich unter openSUSE in den kernel-source diesen Fix einpflegen soll. :roll:
Hat jemand einen Ansatz?
 

pitfl

Member
Hallo,
hatte das gleiche Problem.
Habe deshalb in yast alle nvidia Treiber gelöscht und auch den freien Treiber xf86-video-nouveau.
Im repro Verzeichnis Nvidia gelöscht.
Den gleichen Treiber von Nvidia heruntergeladen.
Diesen Treiber an der Konsole im init 3 Modus händisch installiert und alles ist ok.

Viele Grüße
pitfl
 
OP
Lurchi

Lurchi

Hacker
So.
Also, da ich kein nv-repo habe, habe ich den Treiber händisch gelöscht, via nvidia-installer --uninstall. Den xf86er via Yast.
Der Kernel stammt aus http://download.opensuse.org/repositories/Kernel:/stable/standard/ und der nv-Treiber von bekannter HP.
Nach Neustart und händischer Installationsroutine, auch hier wieder kein bauen des passenden Kernelmoduls möglich.
Für mich also keine Lösung. Ich bin mir sicher, dass der Fehler im besagten Logfile zu lesen ist, wenngleich es ein workaround s.o. gibt. :???:

Meine Frage war doch: Wie lässt sich dieses workaround in die kernel-source von openSUSE einbauen.
Danke!
 

josef-wien

Ultimate Guru
So ganz ist mir Dein Problem nicht klar. Ich vermute, daß die direkte Anwendung des patch nicht funktioniert, da die Zeilennummer nicht stimmt. Welche Zeile in welcher Datei Du daher manuell ändern mußt, steht im patch. Nach der Änderung mußt Du den Kernel neu übersetzen, erst danach kannst Du das nvidia-Modul erzeugen (falls der patch die Lösung ist, was ich mangels Nvidia nicht sagen kann).
 

Sauerland

Ultimate Guru
Ich hab es auch versucht, selbst mit dem händischen Einfügen hat es nicht funktioniert.

Workaround:
Starte wieder mit dem Kernel 4.1. Und warte auf einen gescheiten Patch oder neuen Treiber.
 
OP
Lurchi

Lurchi

Hacker
Hallo Leute.

Danke für die rege Diskussionsbeteiligung. :p

@ Sauerland: Der 4.1er steht nach dem heutigen Update NICHT mehr in dem o.g. Repo zur Verfügung. Die Idee hatte ich auch schon. :thumbs:
Musste wieder auf den 3.16.7-24.1 zurück! :/

@ josef-wien: Das ist ja mein Problem: In welcher Zeile beginne ich mit dem Patch und wo sind verdammt noch mal die kernel-source?
 

josef-wien

Ultimate Guru
Standardmäßig sind bei openSUSE mehrere Kernel installiert, warum entfernst Du den bisherigen, wenn der neue noch nicht wunschgemäß funktioniert? Im Tumbleweed-Repo gibt es übrigens noch den 4.1.

Lurchi schrieb:
wo sind ... die kernel-source?
Dort, wo sie ... hingehören, in /usr/src (sofern das Paket installiert ist).
 

Sauerland

Ultimate Guru
@ Sauerland: Der 4.1er steht nach dem heutigen Update NICHT mehr in dem o.g. Repo zur Verfügung. Die Idee hatte ich auch schon. :thumbs:
Musste wieder auf den 3.16.7-24.1 zurück!
Nicht mehr im Repo, aber noch installiert.
Code:
zypper se -si kernel-desktop
Daten des Repositories laden ...
Installierte Pakete lesen ...

S | Name                 | Typ   | Version            | Arch   | Repository    
--+----------------------+-------+--------------------+--------+---------------
i | kernel-desktop       | Paket | 4.1.6-3.1.gd867e86 | x86_64 | (Systempakete)
i | kernel-desktop       | Paket | 4.1.6-2.1.gce0123d | x86_64 | (Systempakete)
i | kernel-desktop       | Paket | 4.2.0-2.1.gc4d41ea | x86_64 | Kernel-stable 
i | kernel-desktop-devel | Paket | 4.1.6-3.1.gd867e86 | x86_64 | (Systempakete)
i | kernel-desktop-devel | Paket | 4.2.0-2.1.gc4d41ea | x86_64 | Kernel-stable
Und jetzt werde ich den Kernel sperren.
 

Sauerland

Ultimate Guru
Extra noch einmal versucht:

Code:
grep 'EXPORT_SYMBOL(flush_workqueue);' /lib/modules/4.2.0-2.gc4d41ea-desktop/source/kernel/* 2>/dev/null
/lib/modules/4.2.0-2.gc4d41ea-desktop/source/kernel/workqueue.c:EXPORT_SYMBOL(flush_workqueue);
Ich hab es geändert, kann aber immer noch nicht bauen.......
Code:
.
.
.
.
FATAL: modpost: GPL-incompatible module nvidia.ko uses GPL-only symbol 'flush_workqueue'
/usr/src/linux-4.2.0-2.gc4d41ea/scripts/Makefile.modpost:93: recipe for target '__modpost' failed
make[3]: *** [__modpost] Error 1
make[3]: Target '_modpost' not remade because of errors.
/usr/src/linux-4.2.0-2.gc4d41ea/Makefile:1410: recipe for target 'modules' failed
make[2]: *** [modules] Error 2
make[2]: Leaving directory '/usr/src/linux-4.2.0-2.gc4d41ea-obj/x86_64/desktop'
Makefile:146: recipe for target 'sub-make' failed
make[1]: *** [sub-make] Error 2
make[1]: Target 'modules' not remade because of errors.
make[1]: Leaving directory '/usr/src/linux-4.2.0-2.gc4d41ea'
Makefile:81: recipe for target 'modules' failed
make: *** [modules] Error 2
ERROR: The nvidia kernel module was not created.
ERROR: Installation has failed.  Please see the file '/var/log/nvidia-installer.log' for details.  You may find suggestions on fixing installation problems in the README available on the Linux driver download page at www.nvidia.com.

Baut nicht.
 

Sauerland

Ultimate Guru
josef-wien schrieb:
josef-wien schrieb:
Nach der Änderung mußt Du den Kernel neu übersetzen, erst danach kannst Du das nvidia-Modul erzeugen
Trotzdem?
Natürlich nicht.

Aber nachdem:
Code:
uname -a
Linux linux64 4.2.0-2.gc4d41ea-desktop #1 SMP PREEMPT Mon Sep 7 20:35:44 CEST 2015 x86_64 x86_64 x86_64 GNU/Linux
Code:
nvidia-settings -v

nvidia-settings:  version 355.11  (buildmeister@swio-display-x86-rhel47-07)  Wed
Aug 26 17:14:39 PDT 2015
  The NVIDIA X Server Settings tool.

  This program is used to configure the NVIDIA Linux graphics driver.
  For more detail, please see the nvidia-settings(1) man page.
 
OP
Lurchi

Lurchi

Hacker
Hallo Sauerland.

Meine Quellen sehen aber so aus:

Code:
zypper se -si kernel-desktop


S | Name                 | Typ   | Version            | Arch   | Repository          
--+----------------------+-------+--------------------+--------+---------------------
i | kernel-desktop       | Paket | 4.2.0-1.1.gefc468a | x86_64 | (Systempakete)      
i | kernel-desktop       | Paket | 4.2.0-2.1.gc4d41ea | x86_64 | Aktueller Kernel    
i | kernel-desktop       | Paket | 3.16.7-24.1        | x86_64 | openSUSE-13.2-Update
i | kernel-desktop-devel | Paket | 4.2.0-1.1.gefc468a | x86_64 | (Systempakete)      
i | kernel-desktop-devel | Paket | 4.2.0-2.1.gc4d41ea | x86_64 | Aktueller Kernel    
i | kernel-desktop-devel | Paket | 3.16.7-24.1        | x86_64 | openSUSE-13.2-Update
 

Sauerland

Ultimate Guru
Wie josef-wien schon sagte:
Sourcen ändern und Kernel neu bauen.

Dann geht es.
Ist aber keine Anfängerübung.
 
OP
Lurchi

Lurchi

Hacker
Hallo Diskussionsteilnehmer.

Das Problem hat sich nach dem wiederholten Kernel-update auf die Revisionsnummer "3.1" und dem aktuellen nv-Treiber "355.11" erledigt.
Die Installation lief ohne Probleme durch.

Danke nochmal.
 

Sauerland

Ultimate Guru
@ josef-wien

Danke,
den neuen Kernel installiert und den selbstgebackenen wieder deinstalliert und alles ist gut...........
 
Oben