![]() |
Kompilieren eines NIC-Treibers
Hiho,
Nachdem ich leider zu meinem vor kurzem geschilderten Problem keine Lösung gefunden habe versuche ich jetzt eine andere Netzwerkkarte einzubauen, in der Hoffnung dass das viell. Abhilfe bringt. Ist eine Compushack SN-103 mit Via Rhine III Chipset. Treiberver. 4.10 wird gottseidank mitgeliefert. Also entpackt und ein "make install" abgesetzt ergibt: Makefile:34: *** Linux kernel source not configured - missing version.h. Stop. Ok - ich weiss schon was er will - aber nicht warum, und vor allem: ich will den Kernel nicht neu konfigurieren. Wieso will er diese version.h und wie kann ich die erzeugen? Ich verwende den Kernel 2.4.18 der mit Woody 3.0 mitgeliefert wird, die passenden Kernel Sourcen sind installiert - die Kernel Header auch. Wie um alles in der Welt erzeuge ich diese Datei??? Wenn ichs nicht bald schaffe den Netzzugang zum Funktionieren zu bewegen lauf ich Amok *g* Achja: jemand schon mal Probleme gehabt mit 2 Realtek Karten im System? - Hab eine mit RTL 8029 und eine mit RTL 8139 chip, verursacht viell. das den Timeout Fehler aus meinem letzten Posting? mfG, qu |
|
Hm, danke dir, aber soweit war ich schon - ich will ja den Kernel nicht neu konfigurieren und kompilieren.
Brauch ich ja gar nicht weil alles andere eh so läuft. Wie kann ich ihm denn ein make config geben und ihm sagen er soll mir diese Dateien aus der vorhandenen Kernelkonfig erstellen? Der ist ja schon vorkonfiguriert - es muss doch möglich sein diese Konfig aus dem aktuellen Kernel auszulesen und daraus die Dateien zu erstellen die er hier haben will - oder? --qu |
Kernel-Sourcen sind installiert?
|
Zitat:
|
Re: Kompilieren eines NIC-Treibers
Zitat:
Hmmm, leider ist http://packages.debian.org noch down, sonst würde ich dort nachschauen wo die version.h her ist (sitze gerade in Wien an einer AIX-Maschine auf Kurs und komme erst am SO wieder an meinen Rechner!) Ich denke nicht daß man diese Datei erzeugt...... Ciao, Steve |
du brauchst die kernelsourcen und einen link /usr/src/linux auf das kernelsourcen verzeichnis
(laut debian howto soll man die kernelsourcen in /usr/local/src/$KERNELSOURCE extrahieren und dann ein ln -s /usr/local/src/$KERNELSOURCE /usr/src/linux ($KERNELSOURCE == aktuell laufende kernelversion) absetzen) btw: was steht denn in zeile 34 im makefile? |
@m3:
Ja sind sie, in /usr/src/<Kernelversion>, symb. Link "linux" auf dieses Verzeichnis steht auch. @Steve: Ja leider ist der Server down, musste die Kernel Header auch von CD nachinstallieren. Auf die Idee bin ich gar nicht gekommen dort nachzusehen wo die version.h drin ist. Ich dachte nämlich die wird erzeugt, wenn sie allerdings Teil eines Paketes ist, sollte sie dann nicht Teil des Linux Kernels sein? *strange* Btw. gibts nicht irgendein apt Tool mit dem man die Paketdateien nach ihren Dateiinhalten durchsuchen kann? @valo: Sourcen sind da - Link auch. Allerdings sind die Sourcen in /usr/src/Kernelversion - und auch der Link ist in diesem Verzeichnis. Der Pfad muss aber passen da sonst der Kompiliervorgang des Treibers einen anderen Fehler ausgeben würde (Missing Kernelsource - hatte ich bevor ich die Sourcen nachinstalliert hab - also sind die schon im richtigen Pfad) Das Makefile hab ich schon angesehen, er überprüft die Existenz 2er Dateien, nämlich version.h und einer 2ten die mir jetzt entfallen ist. Hab grad keinen Zugang zum Rechner weil er dauernd disconnected. Ich poste die if Abfrage im Makefile rein sobald ich zuhause bin. Da bin ich nämlich eh nicht so wirklich schlau draus geworden.. qu |
also ich hab die version.h in meinem kerneltree unter
arch/i386/math-emu/version.h include/linux/version.h include/pcmcia/version.h die include/linux/version.h ist im orignial tar file nicht enthalten, wird vermutlich erst erzeugt... :confused: |
So - hab das jetzt gecheckt.
Also in /include/linux hab ich mal keine version.h. Der relevante Teil des Makefiles sieht so aus: KSP := /lib/modules/$(shell uname -r)/build \ /usr/src/linux-$(shell uname -r) \ /usr/src/linux-$(shell uname -r | sed 's/-.*//') \ /usr/src/kernel-headers-$(shell uname -r) \ /usr/src/kernel-source-$(shell uname -r) \ /usr/src/linux-$(shell uname -r | sed 's/\([0-9]*\.[0-9]*\)\..*/\1/') \ /usr/src/linux ifeq ($(VMNS),1) OBJS+=rhine_vmns.o SRC+=rhine_vmns.c endif test_dir = $(shell [ -e $(dir)/include/linux ] && echo $(dir)) KSP := $(foreach dir, $(KSP), $(test_dir)) KSRC := $(firstword $(KSP)) #KSRC :=/usr/src/ksrc/RedHat/7.2/linux-2.4.7-10alt-ent ifeq (,$(KSRC)) $(error Linux kernel source not found) endif VERSION_FILE := $(KSRC)/include/linux/version.h CONFIG_FILE := $(KSRC)/include/linux/config.h ifeq (,$(wildcard $(VERSION_FILE))) $(error Linux kernel source not configured - missing version.h) endif ifeq (,$(wildcard $(CONFIG_FILE))) $(error Linux kernel source not configured - missing config.h) endif Tja - sieht also wirklich so aus als würde diese Datei erst erzeugt werden müssen. Gibts nicht einen Befehl mit dem man die Kernelkonfig aus einem bereits kompilierten Kernel auslesen kann? Oder gibts irgendwo zum runterladen das config file von Debian mit dem der Originalkernel erstellt wurde?. Weil dann könnt ich ja einfach mit dieser config nochmal make dep ausführen und wahrscheinlich würde dass diese version.h erzeugen denk ich mal.. --qu |
die orginal 2.4.18-bf2.4 sourcen wirst du ja nicht heruntergeladen haben? falls die kernel headers wie zb beim nvidia treiber nicht reichen, bau halt "schnell" nen neuen. da du die kernel sourcen ja schon hast, kannst du dir den download schon mal einsparen.
apt-get install kernel-package libc6-dev gcc debianutils make libncurses5-dev danach einfach "make menuconfig" in /usr/src/linux eingeben und die config des bf2.4 kernels laden (der passende punkt ist ganz unten), diese liegt unter "/boot/config-2.4.18-bf2.4". nun kannst du noch eigene änderungen machen, ansonsten einfach speichern. der befehl "make-kpkg kernel_image --revision 2.4.18" wird das kernel image gebaut und liegt danach unter /usr/src als *.deb paket welches mit "dpkg -i paketname.deb" installiert werden kann. danach sicherheitshalber nochmals "/sbin/lilo" starten und rebooten. |
Was meinst du mit "original" Kernel Sourcen?
Ich hab die Sourcen von der Debian CD installiert... |
Zitat:
Ja, gibt es sicher, den Namen kann ich dir leider erst nennen wenn ich wieder vor meinem PC sitze :( Heisst aber sicher irgendwie apt-* oder du machst es (bei installierten Paketen) mit dpkg -s FILENAME. Ciao, Steve |
Servus Stevo!
Ja vielleicht kanns apt-cache? kanns jetzt auch nicht ausprobieren. Ist aber eh hinfällig weil die version.h nicht Teil eines Pakets ist sondern durch den "make dep" Vorgang erzeugt wird.(habs ausprobiert) Ich hab die 2.4.18 Sourcen installiert und dann die config-2.4.18-bf geladen, Kernelconfig gesichert und "make dep". Hat mir eine version.h erzeugt. Das Modul liess sich dann kompilieren aber nicht laden -> "Kernel Version does not match". eh klar. murphys laws *g* Ich hab versucht Sourcen des 2.4.18-bf Kernels zu bekommen, aber nirgends zum runterladen und auch auf der cd sind die sourcen nicht drauf. Was ist das für ein Kernel - weiss das wer? und wo krieg ich ihn her?. Wenn ich den hätte könnte ich die version.h neu erzeugen mit den richtigen sourcen und dann würde hoffentlich auch das korrekte Modul erstellt. Das gibts doch wohl nicht dass ich zum Kompilieren dieses blöden Treibers den Kernel neu bauen muss... --qu |
bau wie ich vorher beschrieben nen neuen kernel, danach die neuen module bauen.
|
Zitat:
|
Zitat:
btw: bin grad dabei den kernel neu zu bauen aus den 2.4.18 sourcen. Trotzdem würd ich gern wissen: wo krieg ich den 2.4.18-bf2.4 Kernel her und inwiefern ist der anders als der "normale" 2.4.18? Kennt jemand den Unterschied? |
Zitat:
ad a.) Wenn es so wäre: Der Arme ;) ad b.) http://www.debian.org/releases/stabl...ethods.de.html Unter 4.2.2 . AFAIK ist der bf24 aufgebohrt von Eduard Bloch um möglichst viele Geräte zu unterstützen, ausserdem hat der fb-Support (IIRC) und einiges mehr. Sourcen gibt es laut apt-cache search nicht, nur kernel-headers-2.4.18-bf2.4 - Headers for Linux kernel version 2.4.18 (bf variant) on 386 und das Image. Ciao, Steve |
Heyho Steve *g*
ad a) naja so schlimm is dann auch wieder nicht *g* ad b) Danke dir für die Info, apt-cache hätt ich auch schon probiert gehabt, nachdem ich aber das header paket und das Image Paket für die bf Variante gefunden habe, hab ich mir gedacht es müssten auch Sourcen da sein und ich hätte sie übersehn. Aber gut zu wissen dass dem eh nicht so ist :) Achja - "fb"(?) Support? @alle: Danke für eure Hilfe Leute - Habs so gemacht wie spunz mir geraten hat. Kernel mit der vorhandenen Config Datei neu kompiliert, das Erstellen und Installieren des deb Pakets hat dann auch einwandfrei funktioniert. Kompilieren der via Treiber ebenso - Netzwerkkarte wird erkannt und funktioniert. Schuld war also die alte Realtek Karte - entweder hat sie sich mit der 2ten RTL Karte im System nicht vertragen oder sie ist kaputt - auf jeden Fall tret ich sie in die Tonne damit ich mir nächstes Mal Zeit und Nerven spar *g* thx nochmal :) --qu |
Hi,
vielleicht ist mit fb Framebuffer-Unterstützung gemeint? Jetzt wo es mit dem neuen Kernel funktioniert eine blöde Frage :D Hast Du eigentlich auch geschaut ob Du beim Standardkernel ein "rhine"- Modul hast? Bei meinen MDK-Kerneln ist immer ein "rhine"-Modul dabei. Keine Ahnung ob das auch die neueren IIIer Typen unterstützt aber einen Versuch wäre es wert gewesen. Gruß santi |
Ja klar hab ich nachgesehen - ganz dumm bin ich auch nicht *g*
Es gibt ein via-rhine.o Modul - aber das liess sich für diesen Chipsatz nicht laden. Also musste ich das mitgelieferte Treibermodul kompilieren :) --qu |
| Alle Zeitangaben in WEZ +2. Es ist jetzt 02:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag