Falsche 'kernel-header' Version nach Update
Hallo, folgende Situation: Neu installiertes 64bit OS11.0 mit allen aktuellen Updates. Jetzt möchte ich gerne den aktuellen NVIDIA-Treiber installieren. Zum kompilieren benötigt der die kernel-header, sagt er mir zumindest und bricht ab. rpm -qa|grep kernel linux-kernel-headers-2.6.25-8.1 kernel-default-2.6.25.18-0.2 kernel-source-2.6.25.18-0.2 Wie zu sehen stimmt die Version der kernel-header nicht mit dem installierten Kernel überein. Ist das so richtig? Was kann ich machen, damit ich mir den neuesten NVIDIA-Treiber kompilieren kann? MfG Marco -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Marco Roeben wrote:
rpm -qa|grep kernel linux-kernel-headers-2.6.25-8.1 kernel-default-2.6.25.18-0.2 kernel-source-2.6.25.18-0.2
Wie zu sehen stimmt die Version der kernel-header nicht mit dem installierten Kernel überein. Ist das so richtig?
Ist so richtig, linux-kernel-headers werden unter openSUSE glaube ich gar nicht für kernel-modules benutzt, sondern geben beim Kompilieren anderer Programme/Libraries die aktuelle kernel-abi an.
Was kann ich machen, damit ich mir den neuesten NVIDIA-Treiber kompilieren kann? Erstmal hast du auch das Paket: kernel-default-extra (teste dies: zypper se --details kernel ) Dann dies hier:
#!/bin/bash # Booten in runlevel 3 mit dem neuen Kernel # Einloggen als root cd /usr/src ln -s -f /usr/src/linux-2.6.25.18-0.2 linux cd linux make mrproper zcat /proc/config.gz > .config make oldconfig make prepare cd /lib/modules/fglrx/build_mod /lib/modules/fglrx/build_mod/make.sh cd .. /lib/modules/fglrx/make-install.sh aticonfig --initial echo so das wars #Ralph -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Thu, 11 Dec 2008 16:04:08 +0100 schriebst Du:
#!/bin/bash # Booten in runlevel 3 mit dem neuen Kernel # Einloggen als root cd /usr/src ln -s -f /usr/src/linux-2.6.25.18-0.2 linux cd linux make mrproper
Falsch! Der Symlink wird beim Installieren des kernel-source Paketes erzeugt, muss also nicht von Hand erzeugt werden.
zcat /proc/config.gz > .config make oldconfig
Ebenfalls nicht mehr korrekt. Die .config und alles nötige liegen in /usr/src/linux-<kernel_version>-obj/i386/[kernel_Variante]/ bzw. /usr/src/linux-obj/i386/[kernel_Variante]/, weil der Symlink linux-obj ebenfalls auf das jeweils aktuelle Verzeichnis verweist.
make prepare
Richtig.
cd /lib/modules/fglrx/build_mod /lib/modules/fglrx/build_mod/make.sh cd .. /lib/modules/fglrx/make-install.sh aticonfig --initial echo so das wars
Und ist für Nvidia ebenfalls falsch, da dies für den proprietären ATI-Treiber gilt. Philipp -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Philipp Thomas wrote:
ln -s -f /usr/src/linux-2.6.25.18-0.2 linux Falsch! Der Symlink wird beim Installieren des kernel-source Paketes erzeugt, muss also nicht von Hand erzeugt werden.
"ln -s -f /usr/src/linux-AKTUELLEVERSION linux" ist auf jedenfall richtig (sieh Parameter -f)
zcat /proc/config.gz > .config make oldconfig
Ebenfalls nicht mehr korrekt. Die .config und alles nötige liegen in /usr/src/linux-<kernel_version>-obj/i386/[kernel_Variante]/ bzw. /usr/src/linux-obj/i386/[kernel_Variante]/, weil der Symlink linux-obj ebenfalls auf das jeweils aktuelle Verzeichnis verweist.
Aber nicht wenn du selbst einen Kernel kompiliert hast. Da der openSUSE Kernel, wie jeder vernünftige Mensch heutzutage, ein /proc/config.gz hat, ist es auf jedenfall richtig, wenn du aus dem laufenden Kernel für den laufenden Kernel ein externes Modul compilieren willst.
make prepare Richtig.
FALSCH. Hatte ich gerade heute, muss heissen: make modules_prepare
cd /lib/modules/fglrx/build_mod /lib/modules/fglrx/build_mod/make.sh Und ist für Nvidia ebenfalls falsch, da dies für den proprietären ATI-Treiber gilt. RICHTIG - dies gilt für ATI. Also wie du sagst für NVIDIA falsch.
Also, so wie ich es sehe, habe ich nur einen Fehler (make modules_prepare) in meinem Script gehabt. Ralph -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Ralph wrote:
[...] "ln -s -f /usr/src/linux-AKTUELLEVERSION linux" ist auf jedenfall richtig (sieh Parameter -f)
Dieser Link sollte im Prinzip gar nicht existieren. Er ist eigentlich ein Ueberbleibsel aus frueheren Tagen und wird heutzutage im Prinzip nur noch aus reiner Gewohnheit oder Faulheit angelegt und verwendet. Keine Software sollte von diesem Link abhaengen.
[...] Aber nicht wenn du selbst einen Kernel kompiliert hast. Da der openSUSE Kernel, wie jeder vernünftige Mensch heutzutage, ein /proc/config.gz hat, ist es auf jedenfall richtig, wenn du aus dem laufenden Kernel für den laufenden Kernel ein externes Modul compilieren willst.
Nein, nicht unbedingt. Ein Makefile sollte eigentlich dem Link /lib/modules/`uname -r`/build folgen und nicht /usr/src/linux. Wenn Du Deine .config in /usr/src/linux ablegst, kann es sein, dass sie gar nicht beachtet wird. Cheers, Th. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Thomas Hertweck schrieb:
Ralph wrote:
[...]
[ . . . . ]
Nein, nicht unbedingt. Ein Makefile sollte eigentlich dem Link /lib/modules/`uname -r`/build folgen und nicht /usr/src/linux. Wenn Du Deine .config in /usr/src/linux ablegst, kann es sein, dass sie gar nicht beachtet wird.
Cheers, Th.
Mich wundert Deine Antwort, weil z.B. "make xconfig" doch auch in /usr/src/linux/* ablegt? Woran erkenne ich, wenn .config nicht beachtet wird? Grüße Arno -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Arno Jung wrote:
Thomas Hertweck schrieb:
[...] Nein, nicht unbedingt. Ein Makefile sollte eigentlich dem Link /lib/modules/`uname -r`/build folgen und nicht /usr/src/linux. Wenn Du Deine .config in /usr/src/linux ablegst, kann es sein, dass sie gar nicht beachtet wird.
Mich wundert Deine Antwort, weil z.B. "make xconfig" doch auch in /usr/src/linux/* ablegt? Woran erkenne ich, wenn .config nicht beachtet wird?
1) Im urspruenglichen Thread wurde der Kernel-Source fuer einen bereits installierten Kernel neu konfiguriert ueber das Auslesen von /proc/config.gz, d.h. es war kein "make xconfig" im Spiel. In dem Falle bist Du selbst dafuer verantwortlich, die .config im richtigen Verzeichnis abzulegen. Wie Philipp bereits erwaehnte benutzt SuSE ein Build Directory, daher ist /usr/src/linux der falsche Platz, zumindest wenn man den SuSE Standards folgen will. 2) Wenn Du "make xconfig" verwendest, benutzt Du ja kein Build Directory, daher wird die .config im aktuellen Verzeichnis (das /usr/src/linux ist) abgelegt. Wenn Du wirklich ein Build Directory verwendest (O=/path/to/build/directory), wird die .config auch dort abgelegt und NICHT in /usr/src/linux! Das sagt Dir z.B. auch ein "make help": make O=dir [targets] Locate all output files in "dir", including .config Nach dem Konfigurieren wechselst Du ins Build Directory und gibst dort dann Deine weiteren make Befehle ein. Der Source Tree bleibt komplett sauber, keine Datei wird dort angelegt werden. Sollte ein .config im Source Tree entdeckt werden wenn ein Build Directory benutzt wird, bricht der Vorgang ab und warnt Dich. Cheers, Th. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Ralph Ulrich wrote:
#!/bin/bash # Booten in runlevel 3 mit dem neuen Kernel # Einloggen als root cd /usr/src ln -s -f /usr/src/linux-2.6.25.18-0.2 linux cd linux make mrproper zcat /proc/config.gz > .config make oldconfig make modules_prepare cd /lib/modules/fglrx/build_mod /lib/modules/fglrx/build_mod/make.sh cd .. /lib/modules/fglrx/make-install.sh aticonfig --initial echo so das wars
Es muss heissen oben: make modules_prepare (statt make prepare) Und für NVIDIA Grafikkarten sieht es danach folgend natürlich anders aus! Ralph -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi, Am Donnerstag 11 Dezember 2008 14:48:24 schrieb Marco Roeben: ...
rpm -qa|grep kernel linux-kernel-headers-2.6.25-8.1 kernel-default-2.6.25.18-0.2 kernel-source-2.6.25.18-0.2 ...
Zum bauen der NVIDIA-Treiber reicht ein matchendes kernel-source.rpm In der beta/RC-Phase gabs mal testhalber ein Kernelupdate im Updaterepo. Leider fehlte da das passende kernel-source.rpm. Da bei Dir die Versionen matchen scheint das aber irgendwie nicht (mehr?) das Problem zu sein. Christopher -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (7)
-
Arno Jung
-
Christopher Hofmann
-
Marco Roeben
-
Philipp Thomas
-
Ralph
-
Ralph Ulrich
-
Thomas Hertweck