Compilieren eines LAN-Treibers (Gelöst)

Du kommst mit der Installation nicht voran oder willst noch was nachfragen? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
Thom
Beiträge: 19
Registriert: 13.02.2008 08:22:15
Kontaktdaten:

Compilieren eines LAN-Treibers (Gelöst)

Beitrag von Thom » 03.04.2008 11:29:29

Hallo,
habe es geschafft, erst mal die Linux sourcen separat zu Kompilieren, und mit diesem neu geschaffenen Kernel zu booten.
Nun sollte ich noch einen Treiber dazu Kompilieren.
Dazu hab ich vom Embedded-PC Hersteller einen Treiber mit folgendem Skript bekommen:
compile.sh:

#!/bin/bash
# Little helper to compile the LiPPERT Hurricane-LX800 network driver for
# Linux 2.6 standalone without any changes to the main kernel tree needed.
export CONFIG_KS8842_TWO=y # create 2 independent network interfaces
#unset CONFIG_KS8842_TWO # work as 2 port hub: 1 interface in Linux
export NO_MII=y # enable this if you don't have CONFIG_MII in the kernel
#unset NO_MII # --JR10/2006

make -C /usr/src/linux "M=`pwd`" modules

Der Treiber mit diesem Skript ist in einer Datei Linux.zip verpackt. Nach auspacken dieser datei entsteht ein Verzeichnis ../Linux/KS884x_kernel_2.6.20/
Dort sind alle Dateien sowie ein leeres Unterverzeichnis .tmp_versions drin.

Ich hab diese Zip-Datei mal in das Verzeichnis
/home/
entpackt und dort unter
/home/Linux/KS884x_kernel_2.6.20/Linux/
das oben aufgeführte Skript ausgeführt, mit folgenden (Fehler)meldungen:

debian:/home/Linux/KS884x_kernel_2.6.20# sh compile.sh
make: Entering directory `/usr/src/linux-2.6.24'
CC [M] /home/Linux/KS884x_kernel_2.6.20/device.o
/home/Linux/KS884x_kernel_2.6.20/device.c: In function ‘netdev_open’:
/home/Linux/KS884x_kernel_2.6.20/device.c:1609: error: ‘SA_SHIRQ’ undeclared (first use in this function)
/home/Linux/KS884x_kernel_2.6.20/device.c:1609: error: (Each undeclared identifier is reported only once
/home/Linux/KS884x_kernel_2.6.20/device.c:1609: error: for each function it appears in.)
/home/Linux/KS884x_kernel_2.6.20/device.c: In function ‘netdev_init’:
/home/Linux/KS884x_kernel_2.6.20/device.c:2758: error: implicit declaration of function ‘SET_MODULE_OWNER’
/home/Linux/KS884x_kernel_2.6.20/device.c: In function ‘init_module’:
/home/Linux/KS884x_kernel_2.6.20/device.c:3212: error: implicit declaration of function ‘pci_module_init’
make[1]: *** [/home/Linux/KS884x_kernel_2.6.20/device.o] Fehler 1
make: *** [_module_/home/Linux/KS884x_kernel_2.6.20] Fehler 2
make: Leaving directory `/usr/src/linux-2.6.24'
debian:/home/Linux/KS884x_kernel_2.6.20#


Was mach ich falsch?
- Muss ich die sourcen unter diejenigen vom Linux-Kernel mischen?!
- Ist irgendein Pfad oder eine Pfadangabe falsch?
- oder fehlt mir irgend ein Linux-Modul?

Systemvoraussetzungen:
- Hurricane LX800
- OS: Debian GNU/LINUX 4.0r2-i386
-> Treiber für Micrel KSZ8842-PMQL Dual-Port LAN switch

Vielen Dank zum Voraus
Zuletzt geändert von Thom am 07.04.2008 08:16:36, insgesamt 1-mal geändert.
Hardware:
Dell Inspiron 9300
Pentium 1.73GHz,
1.5GB RAM
XP2002 SP2 / Debian 40r2

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Re: Compilieren eines LAN-Treibers

Beitrag von Spasswolf » 03.04.2008 17:54:38

Es sieht so aus, als wäre der Treiber nicht für Kernel 2.6.24 gemacht (das Verzeichnis heißt vermutlich nicht umsonst KS884x_kernel_2.6.20). Die Funktion pci_module_init gab es zuletzt in Kernel 2.6.21, SA_SHIRQ zuletzt in Kernel 2.6.23 und SET_MODULE_OWNER zuletzt in Kernel 2.6.23.
Entweder es gibt einen aktuelleren Treiber vom Hersteller, oder du löst das Problem selbst, indem du folgende Ersetzungen durchführst:

Code: Alles auswählen

pci_module_init                ---> pci_register_driver
SA_SHIRQ                       ---> IRQF_SHARED
SET_MODULE_OWNER  einfach weglassen  
Hast du einen Link zum Quelltext, eventuell muss noch mehr geändert werden?

Thom
Beiträge: 19
Registriert: 13.02.2008 08:22:15
Kontaktdaten:

Re: Compilieren eines LAN-Treibers

Beitrag von Thom » 04.04.2008 08:39:02

Hallo Spasswolf,
vielen Dank erstmal für Deine Hilfe, werde es mal mit Kernel 2.6.20.tar versuchen. Welchen würdest du denn nehmen? Auf http://www.de.kernel.org/pub/linux/kernel/v2.6/ gibt's ne menge 2.6.20-Versionen, aber keine Liste, was Stable ist oder nicht. Und für in den ChangeLogs zu suchen bin ich wohl zu unerfahren, da mir das meiste zu wenig aussagt.

Grundsätzlich würde das aber dann auch heissen, dass Linux gar nicht abwärtskompatibel ist ! ?
Folgedessen wäre es dann ja auch fraglich überhaupt ein Linux einzusetzen. Was ist z.B. wenn ich nachträglich ein Gerät einbau dessen Treiber erst für eine neuere Version geschrieben ist. Dann müsste ich da ja irgendwelche Module eines stabilen kernels auswechseln, die Abhängikeiten kontrollieren und hoffen dass dann alles richtig funktioniert :hail: ???
Thom
Hardware:
Dell Inspiron 9300
Pentium 1.73GHz,
1.5GB RAM
XP2002 SP2 / Debian 40r2

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Re: Compilieren eines LAN-Treibers

Beitrag von Spasswolf » 04.04.2008 13:37:21

Nimm einfach die neuste Version des Treibers, die funktionier mit 2.6.24 und 2.6.25:
http://www.lippert-at.com/index.php?id=437
Am einfachsten ist es natürlich wenn man nur Hardware einsetzt, bei der die Treiber im Kernel sind.

Thom
Beiträge: 19
Registriert: 13.02.2008 08:22:15
Kontaktdaten:

Re: Compilieren eines LAN-Treibers (Gelöst)

Beitrag von Thom » 07.04.2008 08:21:00

Hallo, habe gerade vor deinem Post auch die aktuellste Treiber von Lippert bekommen.
Dabei hab ich zwar schon mit 2.6.20 Versucht und das hat dann auch hingehauen. Ich nehm stark an, deshalb an dass dies auch mit 2.6.24 tun wird.
Vielen Dank für die Hilfe, Thom

PS: Hab nie gedacht, dass mit so kleinen Kernel-Änderungen einfach alte Module rausgeschmissen werden.
Hardware:
Dell Inspiron 9300
Pentium 1.73GHz,
1.5GB RAM
XP2002 SP2 / Debian 40r2

Antworten