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

Realtek 8168 Treiber als Modul kompilieren

Bacilo

Newbie
Servus,


ich habe mir vor kurzem SUSE 10.0 auf meine Laptop installiert. Dummerweise hat SUSE den Treiber für meinen Netzwerk-Chip nicht intergriert.Also schnell den Treiber runtergeladen und per Stick auf Laptop übertragen.
Folgendes steht in der README zum Treiber
...
<Requirements>

- kernel source tree (supported versions 2.4.x or 2.6.x)
- compiler/binutils for kernel compilation



<Quick install with proper kernel settings>

Unpack the tarball :
unzip r1000_linuxdrv_vxx.zip

Change to the directory:
cd r1000

If you are running the target kernel, then you should be
able to do :

make clean modules (as root or with sudo)
make install
depmod -a
...

Kernel Source liegt bei /usr/src/linux-2.6.13-15

Wenn ich nun in /usr/src/r1000 gehe und dort die Befehle - wie oben beschrieben eintippe, kommt folgendes:

Code:
# make clean modules
make -C src/ clean
make82[1]: Entering directory `/usr/src/r1000/src'
rm -f *.o *.ko *~ core* .dep* .*.d .*.cmd *.mod.c *.a *.s .*.flags
make[1]: Leaving directory `/usr/src/r1000/src'
make -C src/ modules
make[1]: Entering directory `/usr/src/r1000/src'
make -C /lib/modules/2.6.13-15-smp/build SUBDIRS=/usr/src/r1000/src modules
make[2]: Entering directory `/usr/src/linux-2.6.13-15-obj/i386/smp'
make -C ../../../linux-2.6.13-15 O=../linux-2.6.13-15-obj/i386/smp modules /usr/src/r1000/src/Makefile:28: /usr/src/linux-2.6.13-15/src/Makefile_linux26x: No such file or directory
make[5]: *** NO rule to make target `/usr/src/linux-2.6.13-15/src/Makefile_linux26x´. Stop.
make[4]: *** [_module_/usr/src/r1000//src] Error 2
make[3]: *** [modules] Error 2
make[2]: *** [modules] Error 2
make[2]: Leaving directory `/usr/src/linux-2.6.13-15-obj/i386/smp'
make[1]: *** [modules] Error 2
make[1]: Leaving directory `/usr/src/r1000/src'
make: *** [modules] Error 2

Warum tritt dieser Fehler auf? Ich versteh das die "Makefile_linux26x" sich nicht im /usr/src/linux-2.6.13-15/src befindet. Ist da ein Fehler in den TreiberDateien weil die auf etwas falsches verweisen? Oder habe ich irgendwas vergessen?


Leider bin ich a) noch blutiger Anfänger bei Linux und b) wahrscheinlich einwenig ausgebrannt da ich schon seit geraumer Zeit an diesem Problem sitze.

Also habe ich mal ebissl gegoogled und das dabei gefunden:

Code:
...
Kernel-Source oder Kernel-Header liegen üblicherweise in
/usr/src/...

Man hat dann z.B. folgendes Directory:
/usr/src/kernel-header-2.4.18-5

und außerdem die Quelldatei
/usr/src/rtl8150.c

 
Dann kompiliert man z.B. mit
gcc -DMODULE -D__KERNEL__ -c rtl8150.c -ikernel-header-2.4.18-5/include

Das erzeugt z.B. eine Datei
/usr/src/rtl8150.o

 
Man lädt den Treiber mit
modprobe /usr/src/rtl8150
...

Und sofort kommt beim Ausführen der Fehler
Code:
cc1:error: unrecognized command line option "-ilinux-2.6.13-15/include"
Ich habe diesen Befehl auch mit anderen Ordnern versucht aber immer dieselbe Meldung.

Hoffe das ganze ist nicht ganz verwirrend für euch. mir würde es vollends genügen wenn ein Weg schon zum Ziel führt - auch wenns ein ganz andere is.
 

Flieger

Newbie
Das gleiche Problem habe ich auch, allerdings mit einem PC in dem eine Netzwerkkarte mit gleichem Chip steckt!
Hoffentlich kann dir jemand helfen, und damit dann auch mir!

Gruß Flieger
 
OP
Bacilo

Bacilo

Newbie
Habe endlich heute eine Lösung gefunden :!:

Zur Zeit habe ich den Kernel 2.6.13-15 drauf.

Das Treiber Archiv ist so strukturiert
Code:
/r1000
   /r1000/Makefile
   /r1000/readme
   /r1000/release_note.txt
 /src
   /src/Makefile
   /src/Makefile_linux24x
   /src/Makefile_linux26x
   /src/r1000_n.c

1. gesamten Ordner "r1000" aus dem Archiv nach
/usr/src/linux-2.6.13-15 kopieren
2. gesamten Ordner "src" aus dem Archiv nach /usr/src/linux-2.6.13-15
kopieren
3. in den Ordner /usr/src/linux-2.6.13-15/r1000 wechseln
4. Readme Anweisung folgen:
"make clean modules"
"make install"
"depmod -a"
5. in den Ordner /usr/src/linux-2.6.13-15/r1000/src wechseln
6. dort "modprobe r1000"
7. nachschauen ob Treiber eingebunden wurden ist
"modprobe -l | grep r1000"
8. neustarten, danach nochmal schauen ob Treiber immernoch drin ist
9. Internet müsste funktionieren (bei mir sogar ohne Extra Konfiguration)

Hoffe es funktioniert auch bei dir.
 

Flieger

Newbie
OK! Instaliert ist er! Danke erst mal!
Funktionieren tut es bei mir trotzdem nicht!
Habe jetzt aber auch noch mal genauer mir die Netzwerkkarte angeschaut!
Auf der Karte ist gar kein Realteak chip verbaut, sondern ein IC+ IP1000A aber den Treiber dafür habe ich auch schon versucht. Geht trotzdem nicht!
Was mich so wundert ist, das unter Yast die Netzwerkkarte als
"Sundance Ethernet controller" angezeigt wird!?

Ich werd mal weiter schauen!

Gruß Flieger
 

Flieger

Newbie
Vieleicht noch zur Info,
in den Log Dateien findet sich folgendes:
"module not supported by Novell, setting U taint flag"
Könnte es also daran liegen das ich einen Original Kernel von SuSE/Novell benutze?
 

HinzKunz

Newbie
Hallo allerseits,

ich hab gestern (nach langer Pause) wieder Linux (Suse 10.1) installiert.
In meinem Laptop (Asus A7Jc) ist auch eine Realtek 8168 verbaut.
Wenn ich versuche, den Treiber nach o.g. Anleitung zu installieren, bekomme ich folgende Fehlermeldung:
Code:
Laptop:/usr/src/linux-2.6.16.13-4/r1000 # make clean modules
make -C src/ clean
make[1]: Entering directory `/usr/src/linux-2.6.16.13-4/r1000/src'
rm -f *.o *.ko *~ core* .dep* .*.d .*.cmd *.mod.c *.a *.s .*.flags
make[1]: Leaving directory `/usr/src/linux-2.6.16.13-4/r1000/src'
make -C src/ modules
make[1]: Entering directory `/usr/src/linux-2.6.16.13-4/r1000/src'
make -C /lib/modules/2.6.16.13-4-default/build SUBDIRS=/usr/src/linux-2.6.16.13-4/r1000/src modules
make[2]: Entering directory `/usr/src/linux-2.6.16.13-4-obj/i386/default'
make -C ../../../linux-2.6.16.13-4 O=../linux-2.6.16.13-4-obj/i386/default modules
  CC [M]  /usr/src/linux-2.6.16.13-4/r1000/src/r1000_n.o
/usr/src/linux-2.6.16.13-4/r1000/src/r1000_n.c:378: error: expected ‘)’ before string constant
make[5]: *** [/usr/src/linux-2.6.16.13-4/r1000/src/r1000_n.o] Fehler 1
make[4]: *** [_module_/usr/src/linux-2.6.16.13-4/r1000/src] Fehler 2
make[3]: *** [modules] Fehler 2
make[2]: *** [modules] Fehler 2
make[2]: Leaving directory `/usr/src/linux-2.6.16.13-4-obj/i386/default'
make[1]: *** [modules] Fehler 2
make[1]: Leaving directory `/usr/src/linux-2.6.16.13-4/r1000/src'
make: *** [modules] Fehler 2
Das ist die Zeile 378 der r1000_n.o:
Code:
MODULE_PARM (media, "1-" __MODULE_STRING(MAX_UNITS) "i");
Da ich keine Ahnung von Programmierung (und auch nicht wirklich viel von Linux) habe, weiß ich nicht, inwieweit ich diese Zeile editieren muss, oder liegt das Problem an ganz anderer Stelle?

Danke und viele Grüße
Martin
 

HinzKunz

Newbie
Hallo nochmal und Sorry für Doppelpost,

ich bin beim googeln auf einen Beitrag in einem anderen Forum gestoßen...

Man muss in Zeile 378 aus dem "MODULE_PARM" "MODULE_PARM_DESC" machen, dann gehts... :)

Viele Grüße
Martin
 
OP
Bacilo

Bacilo

Newbie
@HinzKunz
Hab gerade auch Suse 10.1 installiert und das nochmal versucht den Treiber zu "installieren".
Problem scheint ab SuSe 10.1 aufzutauchen.
Danke für deinen Tipp.

Am einfachsten kann man die besagte Datei mit den vi-Editor editieren.
 

lordi

Newbie
Hallo, ich habe auch diese Karte in meinem Notebook und ähnliche Fehler beim Installieren.
Ich habe mich an die Anleitung hier aus dem Thread gehalten und bin auch schon weiter als vorher, aber bei mir tritt ein weiteres Problem auf:

make clean modules läuft ohne fehler durch,
aber ich bekomme nach der eingabe von make install die ausgabe:

Code:
install: cannot stat 'r1000.ko' : No such file or directory

ich habe nach besagter datei gesucht, aber diese datei existiert nicht auf meiner festplatte. da auf die datei zugegriffen werden soll, muss die ja wohl vorher angelegt werden, aber ich kenne mich zu wenig aus um im makefile die passende stelle zu finden.

ich nutze suse 10.1 auf einem asus z92j

wäre sehr nett wenn mir jemand einen tipp geben könnte, google usw. habe ich schon bemüht, konnte aber dazu nichts finden.
 
Info: Die aktuelle Version des Realtek-Treibers ist 1.04 . Dort muss man die o.a. Änderung im Code r1000_n.c an drei Stellen machen:

Original Version 1.04 (Zeilen 51-53):

Code:
MODULE_PARM (speed, "1-" __MODULE_STRING(MAX_UNITS) "i");
MODULE_PARM (duplex, "1-" __MODULE_STRING(MAX_UNITS) "i");
MODULE_PARM (autoneg, "1-" __MODULE_STRING(MAX_UNITS) "i");
ändern in:

Code:
MODULE_PARM_DESC (speed, "1-" __MODULE_STRING(MAX_UNITS) "i");
MODULE_PARM_DESC (duplex, "1-" __MODULE_STRING(MAX_UNITS) "i");
MODULE_PARM_DESC (autoneg, "1-" __MODULE_STRING(MAX_UNITS) "i");
Merkwürdig, das das den Entwicklern nicht aufgefallen ist. Verwendet Suse andere Befehlssyntax?
 
hallo gemeinde!

dieses forum hat mich meiner bisherigen problematik schonmal weitergebracht aber leider noch nicht zum erfolg :)

zur situation:
asus a6ja laptop
netzwerkkarte 8168
Debian 3.1 (ich weiß falscher thread aber da gehts genau um die karte die probleme macht)
kernel: 2.6

DualCore
1GB Ram
2,7gb swap partition

ich will die treiber per module einbinden wie es auch schon vorher beschrieben wurde nur hängt dass dann bei make clean module...
da werkelt der dann bis make[6300] irgendwas und die Loadaverage geht auf 199 und beim compilieren schreibt er: make out of memory und kackt dann engültig ab.
wie kann es sein dass ich dafür zu wenig ram hab, im top is auch bei Mem 902mb von 906mb used... finde ich ein wenig viel oder was meint ihr ?

[edit]: irgendwann ist einfach die swap free bei 0k .... muss die swap partition größer sein ?

[Edit2]: mhh wenn man es weinfach weiterlaufen lässt klappt das dann und auch die swap wird dann wieder frei.
nur bringt er nun module fehler 2 ... man muss wohl doch die r1000_n.c datei anpassen dann sollte es gehen.. test läuft gerade :)


muss ich die oben angegeben änderungen in der datei auch machen oder is die nur relevant für suse systeme?


hoffe ihr könnt mir weiterhelfen und danke schonmal!

grüße

wichtel

ps: hab ein wenig erfahrung mit suse aber keinerlei im kernel backen ^^
 
Oben