Hallo, ich habs getan, ein erneuter Versuch mit Linux :-) Ich versuche den Treiber für mein SAGEM FAST 800 ADSL Modem zu installieren. Beim Versuch das Kernelmodul zu laden mit: modprobe adiusbadsl kommt eine Fehlermeldung (Sinngemäss): Ich kann das Modul nicht installieren, da das Modul für den Kernel "version" gemacht wurde, und der laufende Kernel "version"-Athlon ist. Was muss ich beim kompilieren anders machen? SuSE 8.2 eagle-1.0.4 mehr Info's benötigt? Gruss Karl
On Sun, 2003-10-26 at 01:25, Karl Sinn wrote:
Hallo,
ich habs getan, ein erneuter Versuch mit Linux :-)
Dir sei vergeben ;-)
Ich versuche den Treiber für mein SAGEM FAST 800 ADSL Modem zu installieren.
Beim Versuch das Kernelmodul zu laden mit: modprobe adiusbadsl
kommt eine Fehlermeldung (Sinngemäss): Ich kann das Modul nicht installieren, da das Modul für den Kernel "version" gemacht wurde, und der laufende Kernel "version"-Athlon ist.
Was muss ich beim kompilieren anders machen?
Hast Du es nun selbst kompiliert oder nicht? Dem Fehler nach hast Du eben ein fertiges Modul, das für "normalen" Kernel kompiliert ist. Bei Dir läuft aber die Version für Athlon. Die Lösung wäre dann das Modul bei Dir zu kompilieren.
SuSE 8.2 eagle-1.0.4 mehr Info's benötigt?
Jetzt könnet man sich herrlich über den Sinn und Unsinn von Apostroph's unterhalten ;-)
Gruss Karl
gruß auch,
--
Konstantin
Karl Sinn schrieb:
Ich versuche den Treiber für mein SAGEM FAST 800 ADSL Modem zu installieren.
Beim Versuch das Kernelmodul zu laden mit: modprobe adiusbadsl
kommt eine Fehlermeldung (Sinngemäss): Ich kann das Modul nicht installieren, da das Modul für den Kernel "version" gemacht wurde, und der laufende Kernel "version"-Athlon ist.
Was muss ich beim kompilieren anders machen?
Du redest einmal von "installieren", ein andermal von "compilieren": Hast Du ein fertiges RPM oder moechtest Du den Treiber wirklich auf Deinem System uebersetzen, hast also den Quellcode dazu? Ist letzte- res der Fall so liegt Dein Fehler darin begruendet, dass bei Dir die Kernelquellen nicht fuer den laufenden Kernel konfiguriert sind. Du solltest unter /usr/src/linux die zu Deinem Kernel passenden Kernelquellen finden (falls nicht, installiere sie per YaST2 nach). Mache dann folgendes: $> cd /usr/src/linux $> make cloneconfig && make dep Damit hast Du die Konfiguration des laufenden Kernels (vermutlich nach Deiner Beschreibung bei Dir ein Athlon-Kernel) geklont und die relevanten Kernel-Header, die beim Compilieren des Modem-Moduls ein- gebunden werden, erstellt. Schau Dir im Anschluss die Datei /usr/src/linux/include/linux/version.h an, dort muesste nun in der Variablen UTS_RELEASE genau das stehen, was auch ein $> uname -r an der Kommandozeile ergibt. Korrekt? Hat das funktioniert, musst Du den Modem-Treiber erneut compilieren und installieren, dann sollte er zum laufenden Kernel passen und sich auch laden lassen. CU, Th.
Hi, Danke für die Hilfe, um noch mal alle Fragen zu beantworten: - Mir liegen die Sourcen vor die ich compilieren musste - Compilieren ging - Die Fehlermeldung kam beim modprobe, mit selbstcompilierten Treiber Beim durchforsten der NVIDIA Treiber Installationsanleitung von SuSE bin ich auf folgendes gestossen:
via YaST2 Online Update (YOU) and configure it then with the following commands:
cd /usr/src/linux make cloneconfig && make dep
Hab mir gedacht, dass das mein Problem sein könnte, und habs ausprobiert. Und siehe da, jetzt kann ich das Modul laden. Was passiert da genau bei dem make cloneconfig && make dep??? Ich komme leider immer noch nicht ins Netz, aber das ist wahrscheinlich ein Treiber Konfigurationsproblem, und ich werde das erst einmal in den Treiber-Listen posten. Vielen Dank noch einmal Gruss Karl Sinn
Karl Sinn schrieb:
[...] Was passiert da genau bei dem make cloneconfig && make dep???
Siehe meine andere Mail. Durch "make cloneconfig" in /usr/src/linux wird die Konfiguration des laufenden Kernels aus /proc/config.gz ausgelesen und (evtl. manipuliert, erweitert oder gesaeubert[1]) unter .config abgespeichert. Die Datei .config beinhaltet die Kon- figuration, mit der ein Kernel letztendlich uebersetzt wird, will man denn tatsaechlich einen eigenen Kernel compilieren. Durch "make cloneconfig" wird ferner die Datei autoconf.h im Verzeichnis /usr/src/linux/include/linux erzeugt. Die Datei autoconf.h spiegelt Deine aktuelle Konfiguration wider. Dort werden letztendlich nur Makros definiert. Sie beginnt z.B. wie folgt: /* * Automatically generated C config: don't edit */ #define AUTOCONF_INCLUDED #define CONFIG_X86 1 #undef CONFIG_SBUS #define CONFIG_UID16 1 /* * Code maturity level options */ #define CONFIG_EXPERIMENTAL 1 /* * Loadable module support */ #define CONFIG_MODULES 1 #define CONFIG_MODVERSIONS 1 #define CONFIG_KMOD 1 /* * Processor type and features */ #undef CONFIG_M386 #undef CONFIG_M486 [...] Man koennte im Prinzip auch alle Makros per -D Anweisung beim Compiler- bzw. Preprocessor-Aufruf angeben, aber das gibt dann unendlich lange Kommandozeilen, und das will man nicht wirklich. Mit dieser Datei umgeht man das Problem. Ein anschliessendes "make dep" erstellt Dateien mit Abhaengigkeiten zum Compilieren - wenn Du Makefiles kennst, wird Dir das bekannt vorkommen. Ferner werde die Dateien version.h und evtl. modversions.h, falls die entsprechende Kernel-Option "set version information on all module symbols" aktiviert ist, in /usr/src/linux/include/linux erstellt. Die Datei version.h beinhaltet Infos zum Kernel-Release. Du kannst sie Dir einfach anschauen, sie ist ziemlich kurz: #define UTS_RELEASE "2.4.20-4GB-athlon" #define LINUX_VERSION_CODE 132116 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) Es stehen da also nur drei Define-Makros drin. Die Ausgabe stammt von einer SuSE 8.2. Die modversions.h Datei dient dazu, Module auf eine bestimmte Art und Weise zu uebersetzen, so dass sie theoretisch auch mit anderen Kerneln als dem, fuer den sie explizit compiliert wurden, lauffaehig sind. Diese Dateien sind Kernel-Header, die insbesondere von externen Modulen wie z.B. Deinem Modem-Treiber eingebunden werden. Daher muessen diese Dateien exakt zum laufenden Kernel passen, soll das Modul spaeter zu diesem laufenden Kernel dazugeladen werden. Deswegen musst Du _vor_ dem Compilieren externer Module dafuer sorgen, dass die Kernel-Header korrekt sind. Das erledigt eben das "make cloneconfig && make dep" im Verzeichnis /usr/src/linux. HTH, Thomson [1] Wenn die Kernelquellen zum laufenden Kernel passen, dann wird quasi einfach die Konfiguration uebernommen. Wenn man neuere Kernelquellen hat als die Version des laufenden Kernels, so ha- ben sich vermutlich Features geaendert oder es sind welche hin- zugekommen. Diese werden dann mit beruecksichtig und es wird vorkommen, dass man als User ein paar Fragen beantworten muss, ob dieses oder jenes Feature fest in den Kernel compiliert, als Modul realisiert oder ganz weggelassen werden soll.
participants (4)
-
Karl Sinn
-
Konstantin Malakhanov
-
Peter Wiersig
-
Thomas Hertweck