Hallo,
ich habe mein openSuse (11.2 x86_64)so eingerichtet, dass ich zum Standardkernel auch noch den "Kernel of the Day" aus dem HEAD-Repository ausprobieren kann - Tester sind ja immer erwünscht :-)
Zum Standardkernel hab ich mir die passenden nVidia-Treiber aus dem nVidia- Repository installiert, mit welchem auch die ganzen KDE-3D-Gimmicks funktionieren, meine Blagen stehen drauf...
Wenn ich aber den KotD starte habe ich logischerweise keine GUI mehr, da der Treiber nicht zum Kernel passt.
Gibt es eine Möglichkeit das Eine zu tun (Standardkernel mit nVidia) und das Andere nicht zu lassen (KotD mit nVidia oder auch OS-Treiber, lieber mit nVidia)?
Hallo,
Am Don, 16 Sep 2010, Ulrich Walter schrieb:
Zum Standardkernel hab ich mir die passenden nVidia-Treiber aus dem nVidia- Repository installiert, mit welchem auch die ganzen KDE-3D-Gimmicks funktionieren, meine Blagen stehen drauf...
Wenn ich aber den KotD starte habe ich logischerweise keine GUI mehr, da der Treiber nicht zum Kernel passt.
Gibt es eine Möglichkeit das Eine zu tun (Standardkernel mit nVidia) und das Andere nicht zu lassen (KotD mit nVidia oder auch OS-Treiber, lieber mit nVidia)?
Funktionieren sollte, daß du eine Treiberversion für beide Kernel verwendest. Da es wohl kaum passende -kmp- Pakete für den KotD gibt (die RPMs hängen ja schon den normalen Update-Kernels gerne mal ne Woche oder mehr hinterher), bleibt IMO nur eine sinnvolle Variante:
- deinstalliere die Treiber-RPMs
- hol dir von nVidia direkt den Treiber (NVIDIA...run).
- installiere den Treiber (unter dem normalen Kernel) per:
./NVIDIA...run
dazu benötigst du u.a. konfigurierte Kernel-Sourcen, das bekomm ich aus dem Gedächnis grad nicht hin, ist aber dokumentiert und taucht auch in der Liste recht häufig auf. IIRC brauchst du:
kernel-$FLAVOR ### FLAVOR=default,desktop,xen,..., ### hast du schon, wg. FLAVOR siehe 'uname -r'. kernel-devel kernel-$FLAVOR-devel kernel-syms kernel-source
(ggfs. erstmal nur die ersten 3 installieren, und bei Gemecker den Rest, in der Reihenfolge ;)
und mußt dann IIRC jew. (auch dann beim gebooteten KotD) folgendes machen:
cd /lib/modules/$(uname -r)/build make cloneconfig make modules_prepare
Nun sollte sich der NVIDIA-Treiber installieren lassen (bzw. eben nur das Kernel-Modul beim KotD).
- boote den KotD und installiere das Kernelmodul des Treibers per
./NVIDIA...run -K
(gleiche Voraussetzungen wie beim normalen Kernel, d.h. auch für den Kernel brauchst du die konfigurierten Header)
Den letzten Schritt mußt du dann bei jedem KotD wiederholen.
Davon, daß du 'multiversion = kernel-...' in /etc/zypp/zypp.conf(?) schon gesetzt hast, geh ich jetzt mal aus, da mußt du die o.g. weiteren Pakte noch ergänzen. Die Reihenfolge in denen du -source einspielst bestimmt AFAIR übrigens quasi den default, da /usr/src/linux jew. umgebogen wird, via /lib/modules/$(uname -r)/build/ sollte aber jew. der richtige gefunden und verwendet werden, und der NVIDIA Treiber macht das auch richtig.
Falls ich was durcheinandergebracht hab, wird sich sicher jemand melden, oder du findest es selber im Wiki ;)
HTH, -dnh, für evtl. Fehler übernehme ich keine Verantwortung, bitte aber um Verzeihung
Hallo! Am Donnerstag 16 September 2010 01:55:46 schrieb David:
Hallo,
....
HTH, -dnh, für evtl. Fehler übernehme ich keine Verantwortung, bitte aber um Verzeihung
Das ist 'ne ganze Menge, dafür brauch dann wohl ein bissken Zeit. Wenn ich's dann mal in Angriff genommen habe, melde ich mich wieder.
On Thu, 16 Sep 2010 01:55:46 +0200, David Haller dnh@opensuse.org wrote:
Funktionieren sollte, daß du eine Treiberversion für beide Kernel verwendest.
Um es zu präzisieren: der Treiber für den X-Server tut immer, aber für die Kernel braucht es unterschiedliche Treiber. Zumal im Code des Kerneltreibers ein Fehler ist sodass er sich mit Kernel-Head (präziser mit Kernel >= 2.6.36) nicht kompilieren lässt. Ein Patch von mir dafür ist im Nvidia-KMP aber den Dreizeiler kann ich auch hier nochmal posten.
- deinstalliere die Treiber-RPMs
Nicht nötig.
- hol dir von nVidia direkt den Treiber (NVIDIA...run).
Das braucht mehr :) Paket mit --extract auspacken, Patch anwenden und dann nur den Kernel-Treiber bauen und installieren.
dazu benötigst du u.a. konfigurierte Kernel-Sourcen, das bekomm ich aus dem Gedächnis grad nicht hin, ist aber dokumentiert und taucht auch in der Liste recht häufig auf. IIRC brauchst du:
Braucht garnix, der Nvidia-Kram schaut an der richtigen Stelle nach und findet alles was er braucht.
Falls ich was durcheinandergebracht hab,
Du doch nicht ;-)
wird sich sicher jemand melden,
Wie man sieht.
Philipp
Hallo! Am Donnerstag 16 September 2010 09:58:24 schrieb Philipp:
On Thu, 16 Sep 2010 01:55:46 +0200, David Haller dnh@opensuse.org
wrote:
Funktionieren sollte, daß du eine Treiberversion für beide Kernel verwendest.
Um es zu präzisieren: der Treiber für den X-Server tut immer, aber für die Kernel braucht es unterschiedliche Treiber. Zumal im Code des Kerneltreibers ein Fehler ist sodass er sich mit Kernel-Head (präziser mit Kernel >= 2.6.36) nicht kompilieren lässt. Ein Patch von mir dafür ist im Nvidia-KMP aber den Dreizeiler kann ich auch hier nochmal posten.
Ähh, was und wo ist Nvidia-KMP? Und, äh, würdest Du ihn - den Patch - evtl. hier posten?
- deinstalliere die Treiber-RPMs
Nicht nötig.
Gut.
- hol dir von nVidia direkt den Treiber (NVIDIA...run).
Das braucht mehr :) Paket mit --extract auspacken, Patch anwenden und dann nur den Kernel-Treiber bauen und installieren.
Noch mal kurz die Kommandos, bitte - ich hab' in der Richtung schon lange nichts mehr gemacht...
dazu benötigst du u.a. konfigurierte Kernel-Sourcen, das bekomm ich aus dem Gedächnis grad nicht hin, ist aber dokumentiert und taucht
auch in der Liste recht häufig auf. IIRC brauchst du:
Braucht garnix, der Nvidia-Kram schaut an der richtigen Stelle nach und findet alles was er braucht.
Falls ich was durcheinandergebracht hab,
Du doch nicht ;-)
wird sich sicher jemand melden,
Wie man sieht.
Philipp
Hallo Ulrich,
* Ulrich Walter (suse.mail.uw@arcor.de) [20100916 14:22]:
Ähh, was und wo ist Nvidia-KMP?
Sorry, ich meinte das RPM mit dem Nvidia-Treiber.
Und, äh, würdest Du ihn - den Patch - evtl. hier posten?
--- kernel/nv.c.original 2010-09-07 13:55:25.770456446 +0200 +++ kernel/nv.c 2010-09-07 14:08:34.681351694 +0200 @@ -423,7 +423,9 @@ static struct pci_driver nv_pci_driver = static struct file_operations nv_fops = { .owner = THIS_MODULE, .poll = nv_kern_poll, +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36) .ioctl = nv_kern_ioctl, +#endif #if defined(HAVE_UNLOCKED_IOCTL) .unlocked_ioctl = nv_kern_unlocked_ioctl, #endif
Noch mal kurz die Kommandos, bitte - ich hab' in der Richtung schon lange nichts mehr gemacht...
OK, Nvidia Treiber runterladen, dahin wechseln wo Du ihn auspacken willst und dann
bash /pfad/zum/Treiber -x
Du erhälst dann ein Verzeichnis mit dem ausgepackten Quellen und binaries. Dahinein wechselst Du und patchst den Code
patch -p0 -i /pfad/zum/Patch
Danach dann ./nvidia-installer aufrufen um alles zu bauen und zu installieren.
Philipp
Hallo! Am Donnerstag 16 September 2010 15:45:02 schrieb Philipp:
Hallo Ulrich,
- Ulrich Walter (suse.mail.uw@arcor.de) [20100916 14:22]:
Ähh, was und wo ist Nvidia-KMP?
Sorry, ich meinte das RPM mit dem Nvidia-Treiber.
Und, äh, würdest Du ihn - den Patch - evtl. hier posten?
--- kernel/nv.c.original 2010-09-07 13:55:25.770456446 +0200 +++ kernel/nv.c 2010-09-07 14:08:34.681351694 +0200 @@ -423,7 +423,9 @@ static struct pci_driver nv_pci_driver = static struct file_operations nv_fops = { .owner = THIS_MODULE, .poll = nv_kern_poll, +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36) .ioctl = nv_kern_ioctl, +#endif #if defined(HAVE_UNLOCKED_IOCTL) .unlocked_ioctl = nv_kern_unlocked_ioctl, #endif
Noch mal kurz die Kommandos, bitte - ich hab' in der Richtung schon lange nichts mehr gemacht...
OK, Nvidia Treiber runterladen, dahin wechseln wo Du ihn auspacken willst und dann
bash /pfad/zum/Treiber -x
Du erhälst dann ein Verzeichnis mit dem ausgepackten Quellen und binaries. Dahinein wechselst Du und patchst den Code
patch -p0 -i /pfad/zum/Patch
Danach dann ./nvidia-installer aufrufen um alles zu bauen und zu installieren.
Alles klar, danke! Werde ich bei gelegenheit mal testen...
Über die Ergebnisse gebe ich dann hier Auskunft :-)
Philipp
Hallo,
Am Don, 16 Sep 2010, Philipp Thomas schrieb:
Danach dann ./nvidia-installer aufrufen um alles zu bauen und zu installieren.
Bzw. nur noch './nvidia-installer -K' um nur das Kernel-Modul für den anderen Kernel zu backen.
-dnh
On Thu, 16 Sep 2010 22:19:23 +0200, David Haller dnh@opensuse.org wrote:
Bzw. nur noch './nvidia-installer -K' um nur das Kernel-Modul für den anderen Kernel zu backen.
Liess Dir mal die Beschreibung zu -K durch. Laut der muss schon ein Kerneltreiber vorhanden sein.
Philipp
Hallo,
Am Fre, 17 Sep 2010, Philipp Thomas schrieb:
On Thu, 16 Sep 2010 22:19:23 +0200, David Haller dnh@opensuse.org wrote:
Bzw. nur noch './nvidia-installer -K' um nur das Kernel-Modul für den anderen Kernel zu backen.
Liess Dir mal die Beschreibung zu -K durch. Laut der muss schon ein Kerneltreiber vorhanden sein.
Ein X-Treiber.
-K, --kernel-module-only Install a kernel module only, and do not uninstall the existing driver. This is intended to be used to install kernel modules for additional kernels (in cases where you might boot between several different kernels). To use this option, you must already have a driver installed, and the version of the installed driver must match the version of this kernel module.
-dnh
On Fri, 17 Sep 2010 17:15:31 +0200, David Haller dnh@opensuse.org wrote:
Ein X-Treiber.
kernels). To use this option, you must already have a driver installed, and the version of the installed driver must match the version of this kernel module.
Missverständlicher kann man es ja kaum formulieren. Grumpfl, ein zusätzliches X11 waren wahrscheinlich Verschwendung ... Dann ist -K ja doch genau das Richtige.
Philipp
Hallo,
Am Sam, 18 Sep 2010, Philipp Thomas schrieb:
On Fri, 17 Sep 2010 17:15:31 +0200, David Haller dnh@opensuse.org wrote:
Ein X-Treiber.
kernels). To use this option, you must already have a driver installed, and the version of the installed driver must match the version of this kernel module.
Missverständlicher kann man es ja kaum formulieren. Grumpfl, ein zusätzliches X11 waren wahrscheinlich Verschwendung ... Dann ist -K ja doch genau das Richtige.
Also ich hab's auf Anhieb verstanden, aber ich bin ja eh ein ganz seltsamer Vogel, speziell wenn's ums Dokumentation lesen und verstehen geht. Fragt mich nicht, wie ich das mache :) Also:
"driver" = X-Treiber = /usr/$LIB/xorg/modules/updates/drivers/nvidia_drv.so "(kernel) module" = Kernelmodul = /lib/modules/$(uname -r)/updates/nvidia.ko
Und das wird bei nVidia AFAIR auch durchgehend so verwendet.
1 * X.org 7.a.b / XServer 1.c 1 * nVidia-X-Treiber v195.x.y.z samt libGL* / libglx.so usw. 1 * nvidia.ko (v195.x.y.z) für Kernel 2.6.34.foo 1 * nvidia.ko (v195.x.y.z) für Kernel 2.6.33.bar 1 * nvidia.ko (v195.x.y.z) für Kernel 2.6.35.baz
Und "nvidia.ko erstellen" ist das was mit '-K' für jeden der Kernels gemacht wird / werden muß (und auch nicht mehr).
Man muß dazu noch nichtmal rebooten, man kann die Kernelversionen samt ggfs. Sourcen-/Headerverzeichnissen auch angeben (siehe ./nvidia-installer -A), wie zuverlässig das funktioniert kann ich nicht beurteilen. Ich erstelle das Kernelmodul immer (erst) beim ersten Start mit dem neuen Kernel (egal woher), meist erst wenn mich X anmeckert, daß "nvida.ko" nicht geladen werden konnte ;)
Aber AFAIR braucht man eben zu jeder Kernelversion die konfigurierten Header (die in meiner ersten Mail genannten) -devel Pakete (siehe dort, hab nimmer nachgeschaut, was genau man jetzt braucht, der installer meckert ggfs., dann eben Pakete nachinstallieren ;), damit man das jew. Kernelmodul dann "backen" kann.
Philipps Einspruch bezog sich da wohl auf die Fehlinterpretation. Was ich genannt habe ist IIRC das was man "maximal" braucht / machen muß.
Stimmt das "make cloneconfig && make modules_prepare" noch?
HTH, -dnh
Hallo! Am Samstag 18 September 2010 03:54:57 schrieb David: (und vorher andere...)
Hallo,
.....
der erste Schritt ist getan, der Kernel-Head (2.6.36-91-desktop x86_64) läuft mit aktuellem Treiber (260.19.12 - gestern runtergeladen), Patch war damit nicht notwendig. Danke erst mal!
Hallo! Am Samstag 18 September 2010 03:54:57 schrieb David:
Hallo,
(und noch Vieles mehr...)
Hab's jetzt auch für den aktuellen Standardkernel gebaut, Ziel erreicht - danke an alle!
Hallo,
Am Sat, 13 Nov 2010, Ulrich Walter schrieb:
Am Samstag 18 September 2010 03:54:57 schrieb David: (und noch Vieles mehr...)
Hab's jetzt auch für den aktuellen Standardkernel gebaut, Ziel erreicht - danke an alle!
Freut mich. Achso, das "Prozedere" gilt generell für alle externen Module, also z.B. auch Krams von VMware oder sonstwas. Die Frage da ist dann jeweils: wie backe ich das Modul für den jew. Kernel? nVidia ist da mit den .run-Paketen IMO vorbildlich ;)
Die .rpm im Repo hingegen hinken gern mal 2 Wochen oder mehr hinter nem Kernel-(Bugfix-)Update von SUSE hinterher, zumindest ich persönlich verzichte da dann lieber auf die .rpm aus dem Repo und ruf halt nach jedem Kernelupdate mal eben ein ( cd /usr/src/NVIDIA..../ && ./nvidia-installer -K ) auf ;) (wobei das Verzeichnis das ausgepackte .run ist das jew. aktuell am besten (oder zumindest "bekannt zuverlässig" mit Kernel/X/GraKa funktioniert, z.Z. ist das hier immer noch der 195er Treiber ;))
HTH, -dnh